수색…
비고
문서화되지 않은 ffill
및 bfill
합니까?
누락 된 값 채우기
In [11]: df = pd.DataFrame([[1, 2, None, 3], [4, None, 5, 6],
[7, 8, 9, 10], [None, None, None, None]])
Out[11]:
0 1 2 3
0 1.0 2.0 NaN 3.0
1 4.0 NaN 5.0 6.0
2 7.0 8.0 9.0 10.0
3 NaN NaN NaN NaN
누락 된 값을 단일 값으로 채우기 :
In [12]: df.fillna(0)
Out[12]:
0 1 2 3
0 1.0 2.0 0.0 3.0
1 4.0 0.0 5.0 6.0
2 7.0 8.0 9.0 10.0
3 0.0 0.0 0.0 0.0
그러면 새 DataFrame이 반환됩니다. 원본 DataFrame을 변경하려면 inplace
매개 변수 ( df.fillna(0, inplace=True)
)를 사용하거나 원본 DataFrame ( df = df.fillna(0)
)에 다시 할당하십시오.
누락 된 값을 이전 값으로 채우기 :
In [13]: df.fillna(method='pad') # this is equivalent to both method='ffill' and .ffill()
Out[13]:
0 1 2 3
0 1.0 2.0 NaN 3.0
1 4.0 2.0 5.0 6.0
2 7.0 8.0 9.0 10.0
3 7.0 8.0 9.0 10.0
다음 것들로 채우기 :
In [14]: df.fillna(method='bfill') # this is equivalent to .bfill()
Out[14]:
0 1 2 3
0 1.0 2.0 5.0 3.0
1 4.0 8.0 5.0 6.0
2 7.0 8.0 9.0 10.0
3 NaN NaN NaN NaN
다른 DataFrame을 사용하여 채우기 :
In [15]: df2 = pd.DataFrame(np.arange(100, 116).reshape(4, 4))
df2
Out[15]:
0 1 2 3
0 100 101 102 103
1 104 105 106 107
2 108 109 110 111
3 112 113 114 115
In [16]: df.fillna(df2) # takes the corresponding cells in df2 to fill df
Out[16]:
0 1 2 3
0 1.0 2.0 102.0 3.0
1 4.0 105.0 5.0 6.0
2 7.0 8.0 9.0 10.0
3 112.0 113.0 114.0 115.0
누락 된 값 삭제
DataFrame을 만들 때 None
(파이썬의 누락 된 값)이 NaN
(팬더의 누락 된 값)으로 변환됩니다.
In [11]: df = pd.DataFrame([[1, 2, None, 3], [4, None, 5, 6],
[7, 8, 9, 10], [None, None, None, None]])
Out[11]:
0 1 2 3
0 1.0 2.0 NaN 3.0
1 4.0 NaN 5.0 6.0
2 7.0 8.0 9.0 10.0
3 NaN NaN NaN NaN
하나 이상의 열에 누락 된 값이있는 경우 행을 삭제합니다.
In [12]: df.dropna()
Out[12]:
0 1 2 3
2 7.0 8.0 9.0 10.0
그러면 새 DataFrame이 반환됩니다. 원본 DataFrame을 변경하려면 inplace
매개 변수 ( df.dropna(inplace=True)
)를 사용하거나 원본 DataFrame ( df = df.dropna()
)에 다시 할당하십시오.
해당 행의 모든 값이 누락 된 경우 행을 삭제하십시오.
In [13]: df.dropna(how='all')
Out[13]:
0 1 2 3
0 1.0 2.0 NaN 3.0
1 4.0 NaN 5.0 6.0
2 7.0 8.0 9.0 10.0
최소 3 개의 누락 값이없는 열 삭제
In [14]: df.dropna(axis=1, thresh=3)
Out[14]:
0 3
0 1.0 3.0
1 4.0 6.0
2 7.0 10.0
3 NaN NaN
보간법
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[1,2,np.nan,3,np.nan],
'B':[1.2,7,3,0,8]})
df['C'] = df.A.interpolate()
df['D'] = df.A.interpolate(method='spline', order=1)
print (df)
A B C D
0 1.0 1.2 1.0 1.000000
1 2.0 7.0 2.0 2.000000
2 NaN 3.0 2.5 2.428571
3 3.0 0.0 3.0 3.000000
4 NaN 8.0 3.0 3.714286
누락 된 값 확인
값이 NaN인지 확인하려면 isnull()
또는 notnull()
함수를 사용할 수 있습니다.
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: ser = pd.Series([1, 2, np.nan, 4])
In [4]: pd.isnull(ser)
Out[4]:
0 False
1 False
2 True
3 False
dtype: bool
np.nan == np.nan
은 False를 반환하므로 np.nan과 비교해서는 안됩니다.
In [5]: ser == np.nan
Out[5]:
0 False
1 False
2 False
3 False
dtype: bool
두 함수는 Series 및 DataFrames의 메서드로 정의됩니다.
In [6]: ser.isnull()
Out[6]:
0 False
1 False
2 True
3 False
dtype: bool
DataFrames 테스트 :
In [7]: df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [np.nan, 5, 6]})
In [8]: print(df)
Out[8]:
A B
0 1.0 NaN
1 NaN 5.0
2 3.0 6.0
In [9]: df.isnull() # If the value is NaN, returns True.
Out[9]:
A B
0 False True
1 True False
2 False False
In [10]: df.notnull() # Opposite of .isnull(). If the value is not NaN, returns True.
Out[10]:
A B
0 True False
1 False True
2 True True
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow