-
Pandas 데이터 연산하기 (NULL 처리 포함)데이터 분석/Pandas 2020. 6. 27. 22:26
유니버셜 함수는
- 단항연산의 경우 인덱스와 열 레이블을 보존하고
- 이항연산의 경우 자동으로 인덱스를 정렬한다. --> 불완전한 데이터로 작업할 때 매우 편리하다.
Series 에서 인덱스 정렬
+ 산술연산을 하면, 둘 중 하나라도 값이 없는 항목은 NaN (Not a Number) 으로 표시된다.
만약 NaN 값 사용을 원치 않을 경우, 연산자 대신 적절한 객체 메서드를 사용해 채우기 값을 수정할 수있다. fill_value
DataFrame 에서 인덱스 정렬
DataFrame 에서 연산을 수행할 때 열과 인덱스 모두에서 비슷한 유형의 정렬이 발생한다.
pandas.DataFrame.stack
multi-level index 를 가지도록 형태를 변환해서 반환한다.
산술연산에 대한 객체메서드
+ add(), - sub(), * mul(), / div(), % mod(), ** pow()
Among flexible wrappers (add, sub, mul, div, mod, pow) to arithmetic operators: +, -, *, /, //, %, **.
pandas.DataFrame.add
other: 연산대상 (scalar, sequence, Series, DataFrame)
fill_value: NaN 을 특정 값으로 채울 수 있다.
axis: 계산할 대상
axis = 0 (열을 기준으로) 모든 행에 대해 계산한다. / axis = 1 (행을 기준으로) 모든 열에 대해 계산한다.
level : multi-index 일 때 사용 (나중에~)
Panas 에서 NaN 과 None
NaN 과 None 은 각자가 맡은 역할이 있으며, Pandas 는 이 둘을 거의 호환성 있게 처리하고 적절한 경우에는 서로 변환할 수 있게 했다.
사용할 수 있는 센티널 값이 없는 타입의 경우, NA 값이 있으면 Pandas 가 자동으로 타입을 변환한다.
자동으로 None 을 NaN (Not a Number) 값으로 변환한다.
만약 데이터 구조체의 dtype 이 object 일 경우에는 None --> NaN 자동변환되지 않는다. (NA 센티널 값이 None 또는 np.nan 모두 허용하기 때문)
Null 값 연산하기
Pandas 데이터 구조의 널 값을 감지하고 삭제하고 대체하는 몇 가지 유용한 메서드가 있다.
isnull(), notnull() : null / notnull 을 가리키는 부울 마스크를 생성
dropna() : 데이터에 필터를 적용한 버전을 반환
fillna() : 누락 값을 채우거나 전가된 데이터 사본을 반환
Series 에 대한 Null 값 연산
DataFrame 에 대한 Null 값 연산
axis 행 기준 / 열 기준
how 나 thresh 매개변수를 통해 모두 NA 값으로 채워져 있거나, NA 값이 대부분을 차지하는 행과 열을 삭제할 수 있다.
how: 'all' 모두 NA 값인 것 drop / 'any' 하나라도 NA 값인 것 drop
thresh: 멀쩡한 값이 2/3개 이상이면 살린다. 아니면 drop 한다.
때로 NA 값을 삭제하지 않고, 유효한 값으로 대체해야할 때도 있다. 0 처럼 단일 숫자일 수도 있고, 유효한 값으로부터 전가 혹은 보간된 값일 수도 있다. (보간, interpolation: 『수학』 변수 의 함수의 형태는 알 수 없으나 몇 가지 에 대한 함숫값 가 알려져 있을 때 그 사이의 임의의 에 대한 함숫값을 추정하는 것.)
'데이터 분석 > Pandas' 카테고리의 다른 글
Pandas 데이터 세트 결합하기: 병합과 조인 (0) 2020.08.13 Pandas 누락값 처리 - Handling Missing Values IN Python (0) 2020.08.08 데이터 인덱싱과 선택 - DataFrame (0) 2020.06.15 데이터 인덱싱과 선택 - Series (0) 2020.06.13 Pandas 객체 소개 - Index (0) 2020.06.07