2. 핵심 기능
1) 재색인, reindex()
obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=["d","b","a","c"])
obj2 = obj.reindex(["a", "b", "c", "d", "e"])
- ffill 같은 메서드를 이용해 누락된 값을 직전의 값으로 채워넣을 수 있따.
obj.reindex(np.arrange(6), method="ffill")
- 행, 열 또는 둘 다 변경 가능하다.
- reindex 인수
- labels: 색인으로 사용할 새로운 순서, Index 인스턴스나 다른 순차적인 파이썬 자료구조를 사용할 수 있다.
- index: 새로운 index 지정
- columns: 새로운 columns 지정
- axis: 색인으로 사용할 열 지정
- method: 채움 메서드 ffill,은 직전값, bfill은 다음 값을 채운다.
- fill_value: 재색인 과정 중에 새롭게 나타나는 비어 있는 데이터를 채우기 위한 값
- limit: 전/후 보간 시에 사용할 최대 갭 크기
- tolerance: 전/후 보간 시에 사용할 최대 갭 크기
- level: multiindex의 단계에 단순 색인ㅇ르 맞춘다
- copy: 기존 데이터 복사
2) 하나의 행이나 열 삭제하기
- drop(): 선택한 값들이 삭제된 새로운 객체 생성
new_boj = obj.drop("c")
3) 색인하기, 선택하기, 거르기
- numpy 배열의 색인과 유사하게 작동하지만 정수가 아니어도 된다는 점이 다르다.
- 검색(ex: obj[["b", "c"]])을 통해 찾는 것 보다 loc을 이용하는 방식이 더 선호된다. "[]"만으로 선택한 경우 정수의 처리 방식이 다르기 때문
obj.loc[["b", "a", "d"]]
- loc연산자는 레이블로만 색인을 취하므로 색인이 정수를 포함하고 있는지 여부와 관계없이 일관되게 작동하도록 정수로만 색인을 취하는 iloc연산자도 존재한다.
- DataFrame의 색인 옵션
- df[column]: 하나의 열이나 여러 열 선택, 편의를 위해 불리언 배열, 슬라이스, 불리언 DataFrame을 사용할 수 있다.
- df.loc[rows]: 레이블 값으로 하나의 행 또는 행의 부분집합 선택
- df.loc[:, cols]: 레이블 값으로 하나의 열 또는 열의 부분집함을 선택
- df.loc[rows, cols]: 레이블 값으로 행과 열을 모두 선택한다.
- df.iloc[rows]: DataFrame에서 정수 위치로 하나의 행 또는 행의 부분집합을 선택한다.
- df.iloc[:, cols]: 정수 위치로 하나의 열 또는 열의 부분집합을 선택한다.
- df.iloc[rows, cols]: 정수 위치로 행과 열을 모두 선택한다.
- df.at[row, col] 행과 열의 레이블로 단일 스칼라 값을 선택한다.
- 정수 색인의 함정: 정수 색인으로 판다스 객체를 다루다 보면 리스트나 튜플 같은 파이썬 내장 자료구조에서의 색인을 다루는 방법과의 차이점 때문에 실수하게 되는 경우가 많다. loc과 iloc을 통해 명시적으로 축의 타입을 선택하므로 모호합으로 부터 오는 실수를 제거할 수 있다.
- 연쇄 색인의 함정: 의도한대로 움직이지 않고 임싯값만 변경 돼 원래 변경하고자 하는 data가 변경되지 않을 수 있다. 단일 loc 연산을 사용해야 한다.
산술 연산과 데이터 정렬
- 객체 간의 산술 연산이 간편하다. 연산이 불가할 경우 결측치(Nan, Null)이 반환
- add 메서드 등을 통해 결측치에 대한 채워넣을 값을 fill_value 인수를 통해 대체할 수 있다.
- 산술 연산 메서드
- add, radd: 더하기
- sub, rsub: 빼기
- div, rdiv: 나누기
- floordiv, rfloordiv: 소수점 내림
- mul, rmul: 곱셈
- pow, rpow: 제곱
- DataFrame과 Series간 연산도 가능하다.
함수 적용과 매핑
- apply()를 통해 함수를 적용히킬 수 있다.
- 부동소수점을 문자열 포맷으로 변환하고 싶다면 applymap을 사용
정렬과 순위
- sort_index메서드를 통해행과 열의 색인을 정렬할 수 있다.
- sort_values를 통해 객체의 값에 따라 정렬 가능
- na_position 옵션을 사용해 누락된 값을 먼저 정렬 가능
- rank()를 통해 평균순위를 매길 수 있다.
- 순위의 동률을 처리하는 메서드
- average: 기본값, 같은 값을 갖는 항목들의 평균값을 순위로 삼는다.
- min: 같은 값을 갖는 그룹을 낮은 순위로 매긴다.
- max: 같은 값을 갖는 그룹을 높은 순위로 매긴다.
- first: 데이터 내의 위치에 따라 순위를 매긴다
- dense: min가 같지만 같은 순위를 매기는 것이 아닌 1씩 증가시키낟.
중복 색인
- is_unique()를 통해 유일 값인지 판별
3. 기술 통계 계산과 요약
판다스 객체는 일반적인 수학 메서드와 통계 메서드를 가지고 있다. 이 메서드 대부분은 하나의 Series나 DataFrame의 행과 열에서 단일 값을 구하는 축소 혹은 요약 통계 범주에 숙한다. 순수 넘파이 배열에서 제공하는 동일한 메서드와는 다르게 판다스의 메서드는 처음부터 누락된 데이터를 제외하도록 설계되었다.
- 요약 통계 관련 메서드는 너무 많으니 필요한 것을 찾아 사용하도록
상관관계와 공분산
- corr(): 상관관계
- cov(): 공분산
- corrwirth(): Series나 DataFrame 과의 상관관계를 계산
유일값, 값 세기, 멤버십
- 유일값: unique()
- value_counts(): Sereis가 담고 있는 값을 내림차순 정렬
- isin(): Series에 존재하는지 나타내는 불리언 벡터
- get_indexer: 각 값에 대해 유일한 갓ㅂ을 담고있는 배열에서의 정수 색인을 계산
'IT > Data Analysis with python' 카테고리의 다른 글
데이터 정제 및 준비 (1) | 2024.06.14 |
---|---|
데이터 로딩과 저장, 파일 형식 (1) | 2024.06.02 |
판다스 시작하기: Series, DataFrame (1) | 2024.06.02 |
넘파이 기본: 배열과 백터연산 02 (0) | 2024.05.17 |
넘파이 기본: 배열과 백터연산 01 (0) | 2024.05.17 |