수색…


비고

문서화되지 않은 ffillbfill 합니까?

누락 된 값 채우기

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