Pandas 누락된 데이터 (Missing data)


Pandas 누락된 데이터 (Missing data)

Pandas는 누락된 데이터를 표시할 때 기본적으로 np.nan을 사용하고, 연산에는 포함되지 않습니다.

이번에는 DataFrame에서 누락된 데이터를 다루는 방법에 대해 소개합니다.

(Missing Data section 참고)




1) DataFrame 만들기

예제

import pandas as pd
import numpy as np

np.random.seed(0)

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

print(df)
                   A         B         C         D
2013-01-01  1.764052  0.400157  0.978738  2.240893
2013-01-02  1.867558 -0.977278  0.950088 -0.151357
2013-01-03 -0.103219  0.410599  0.144044  1.454274
2013-01-04  0.761038  0.121675  0.443863  0.333674
2013-01-05  1.494079 -0.205158  0.313068 -0.854096
2013-01-06 -2.552990  0.653619  0.864436 -0.742165

간단한 DataFrame을 하나 만들었습니다.


Pandas 누락된 데이터 (Missing data)



2) 인덱스 변경/추가/삭제하기

예제

df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
df1.loc[dates[0]:dates[1], 'E'] = 1

print(df1)
                   A         B         C         D    E
2013-01-01  1.764052  0.400157  0.978738  2.240893  1.0
2013-01-02  1.867558 -0.977278  0.950088 -0.151357  1.0
2013-01-03 -0.103219  0.410599  0.144044  1.454274  NaN
2013-01-04  0.761038  0.121675  0.443863  0.333674  NaN

지정한 축에 대해 인덱스를 변경/추가/삭제할 수 있습니다.

reindex()를 사용해서 인덱스를 변경하면, 데이터의 사본을 반환합니다.

이어서 loc를 사용해서 ‘E’열의 첫번째, 두번째 데이터를 1로 설정했습니다.

Pandas 누락된 데이터 (Missing data)



3) 누락된 데이터가 있는 행 삭제하기

예제

print(df1.dropna(how='any'))
                   A         B         C         D    E
2013-01-01  1.764052  0.400157  0.978738  2.240893  1.0
2013-01-02  1.867558 -0.977278  0.950088 -0.151357  1.0

dropna()는 누락된 데이터가 있는 행을 삭제합니다.

Pandas 누락된 데이터 (Missing data)



4) 누락된 데이터를 특정 값으로 채우기

예제

print(df1.fillna(value=5))
                   A         B         C         D    E
2013-01-01  1.764052  0.400157  0.978738  2.240893  1.0
2013-01-02  1.867558 -0.977278  0.950088 -0.151357  1.0
2013-01-03 -0.103219  0.410599  0.144044  1.454274  5.0
2013-01-04  0.761038  0.121675  0.443863  0.333674  5.0

fillna()는 누락된 데이터를 특정 값으로 채웁니다.

Pandas 누락된 데이터 (Missing data)



5) 누락된 데이터 참/거짓 여부 확인하기

예제

print(pd.isna(df1))
                A      B      C      D      E
2013-01-01  False  False  False  False  False
2013-01-02  False  False  False  False  False
2013-01-03  False  False  False  False   True
2013-01-04  False  False  False  False   True

isna()는 값이 nan인 조건으로 boolean mask를 얻습니다.

값이 nan일때 True, 그렇지 않으면 False가 됩니다.

Pandas 누락된 데이터 (Missing data)


이전글/다음글