Pandas란?
: 구조화된 데이터를 효과적으로 처리하고 저장할 수 있는 파이썬의 라이브러리다.
Pandas는 대용량 데이터를 쉽게 처리할 수 있는 NumPy를 기반으로 설계되어있다.
(엑셀과 비슷한 데이터 베이스 형태이다.)
Pandas의 자료형중에 Series 데이터와 데이터 프레임을 살펴보고 이들을 어떤식으로 다뤄야하는지 알아보겠다.
Series의 데이터 형태를 살펴보면 Series는 특수한 딕셔너리라고 생각하기 쉽다.
Data와 Index를 가지고 있다.
(각각의 Index안에 Data가 들어간다.)
NumPy의 array가 보강된 형태로 Data가 Index를 가지고 있다고 생각하면 된다.
<Series의 특징>
1. values(값)를 ndarray의 형태로 가지고 있다.
(왼쪽 코드의 주석에서 0 1 2 3 은 인덱스이고 1 2 3 4는 value이다.)
그니까 위에서 data 자체는 클래스가 series이지만 그 안에 들어가는 value는 ndarray 즉, 배열 형태이다.
또 dtype 인자로 데이터 타입을 지정할 수 있다.
2. 인덱스를 지정할 수 있고 인덱스로 접근이 가능하다.
앞에서 말했던 것과 같이 이 Series는 Dictionary와 매우 비슷하다.
때문에 Dictionary를 활용하여 Series를 생성할 수도 있다.
다음으로 데이터 프레임에 대해 알아보겠다.
Data Frame : 여러 개의 Series가 모여서 행과 열을 이룬 데이터
(시리즈 데이터는 하나의 컬럼 값으로 이루어진 반면 데이터 프레임은 여러 개의 컬럼 값을 가질 수 있다.) -> 시리즈 데이터는 세로로 만들기 때문에 하나의 ‘컬럼’인 것
ex1) 여러 Series를 모아서 Data Frame을 만드는 방법
ex2) Dictionary를 활용하여 Data Frame을 만드는 방법
set_index는 해당 인자의 column을 인덱스화 하는 것이다.
정리)
그리고 다음과 같이 DataFrame의 속성을 확인할 수 있다.
이 속성들은 데이터 + 프레임에서 프레임을 제외한 데이터 부분에 대한 속성을 나타내는 값들이다. 이 데이터는 4 x 2 꼴이기 때문에 위와 같이 표현된다.
아래와 같이 DataFrame의 index와 column에 이름을 지정할 수 있다.
이제 이렇게 만들어낸 DataFrame을 저장하고 불러올 수 있다.
저장할 때는 to_csv() 또는 to_excel()을 이용해서 각각 csv파일, excel파일로 저장할 수 있고 불러올 때는 read_csv(), read_excel()을 이용해 불러올 수 있다.
이제 DataFrame 안에 있는 데이터를 선택하고 변경하는 법을 알아보겠다.
먼저 인덱싱과 슬라이싱을 통해 데이터를 선택해 보겠다.
1. .loc : 명시적인 인덱스를 참조하는 인덱싱/슬라이싱
(인덱스 안에 어떤 인덱스가 들어있는지 알 때 사용)
2. .iloc : 암묵적인 인덱스를 참조하는 인덱싱/슬라이싱 (정수 인덱스 인덱싱/슬라이싱)
(구체적인 인덱스나 컬럼의 이름을 모를 때 사용)
컬럼명을 활용해 DataFrame에서 데이터를 선택할 수도 있다.
[] 한 번은 컬럼이지만 [[]] 두 번은 DataFrame 그 자체이다. 그래서 대괄호 두 번은 프레임이 같이 나오는 것이다.
데이터 프레임과 시리즈의 관계는 마치 수열에서 Sn과 일반항an의 관계와 같다.
만약 DataFrame 안에 들어있는 컬럼 뿐만 아니라 value값들이 뭔지 정확히 알고 있다면 즉, 컬럼들의 이름을 알고 안에 들어있는 value값들의 데이터 형태를 알고 있을 때, 그에 대한 조건을 붙여서 데이터를 추출할 수도 있다.
즉 Masking 연산이나 query 함수를 이용하는 것이다.
Series도 NumPy 배열처럼 연산자를 활용할 수 있다.
두 개의 Series를 연산한 결과는 새로운 Series를 만든다.
이 Series를 DataFrame으로 넣기 위해서는 두 번째 줄 코드와 같이 작성해서 넣을 수 있다.
<DataFrame의 데이터 추가/수정>
데이터를 추가 또는 수정하는 데는
1. 리스트로 추가
2. 딕셔너리로 추가
이렇게 두 가지의 방법이 있다.
그리고 DataFrame에 새로운 컬럼을 추가하고 싶을 수 있다.
(NaN = Not a Number)
처음에 np.nan을 넣어 자리를 비워두고 초기화한다.
이번엔 컬럼을 삭제하는 방법이다.
axis의 값에 따라 열 방향으로 삭제할 것인지 행 방향으로 삭제할 것인지가 결정된다.
inplace는 실무적으로 데이터를 처리할 때 굉장히 중요한 부분이다.
원본 데이터를 꼭 따로 저장해놓고 편집해야한다. 그래서 inplace를 사용할 때는 주의해서 사용해야한다.
여기서는 고민없이 inplace를 True로 해서 컬럼을 삭제한 결과 위와 같이 전화번호가 삭제된 결과가 나왔다.
다시 볼 만한 실습예제)
1.
2.
'인공지능 공부' 카테고리의 다른 글
[2021 NIPA AI 교육 - 기본] 05 Matplotlib 데이터 시각화 (0) | 2021.08.11 |
---|---|
[2021 NIPA AI 교육 - 기본] 04 데이터 조작 및 분석을 위한 Pandas 심화 (0) | 2021.08.09 |
[2021 NIPA AI 교육 - 기본] 02 데이터 핸들링을 위한 라이브러리 NumPy (0) | 2021.08.05 |
[2021 NIPA AI 교육 - 기본] 01 파이썬의 여러가지 모듈과 패키지 (0) | 2021.08.04 |
2021 과학기술정보통신부 x 정보통신산업진흥원(nipa) 주관 AI 교육 (0) | 2021.08.04 |