目录
- df.dropna函数
- df.fillna 函数
- df.isnull函数
- 综合案例
df.dropna函数
df.dropna是Pandas中的一个方法,用于从DataFrame中删除缺失值(NaN或None)。
该方法的基本语法如下:
df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
- axis:指定方法沿着哪个轴删除缺失值。0表示删除行,1表示删除列。
- how:确定是否基于任何或所有缺失值来删除行或列。'any’表示如果存在任何空值,则删除,'all’表示仅当所有值为空时才删除。
- thresh:指定保留轴所需的最小非空值数。例如,如果thresh=2,则仅在非空值少于2个时才删除行或列。
- subset:定义沿指定轴考虑缺失值的标签。例如,subset=[‘A’, ‘B’]将仅考虑’A’和’B’列的缺失值。
- inplace:如果为True,则该操作将就地修改DataFrame。如果为False,则将返回一个删除了缺失值的新DataFrame。
以下是使用dropna从DataFrame中删除缺失值的示例:
import pandas as pd
# 创建一个包含缺失值的DataFrame
data = {'A': [1, 2, None, 4], 'B': [None, 5, 6, 7]}
df = pd.DataFrame(data)
# 删除任何包含缺失值的行
cleaned_df = df.dropna()
print(cleaned_df)
A B
1 2.0 5.0
3 4.0 7.0
df.fillna 函数
df.fillna 是 Pandas 中的一个方法,用于填充 DataFrame 中的缺失值(NaN 或 None)。
该方法的基本语法如下:
df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
- value:指定用于填充缺失值的标量值、字典、Series 或 DataFrame。
- method:指定用于填充缺失值的插值方法,例如’ffill’(向前填充)或’bfill’(向后填充)。
- axis:指定沿着哪个轴填充缺失值。0 表示沿着行的方向填充,1 表示沿着列的方向填充。
- inplace:如果为True,则该操作将就地修改 DataFrame。如果为 False,则将返回一个填充了缺失值的新 DataFrame。
- limit:对于插值方法,指定连续缺失值的最大填充次数。 downcast:指定尝试将填充值转换为更小的数据类型。
以下是使用fillna填充 DataFrame 中缺失值的示例:
import pandas as pd
# 创建一个包含缺失值的 DataFrame
data = {'A': [1, 2, None, 4], 'B': [None, 5, 6, 7]}
df = pd.DataFrame(data)
# 用指定的值填充缺失值
filled_df = df.fillna(value=0)
print(filled_df)
A B
0 1.0 0.0
1 2.0 5.0
2 0.0 6.0
3 4.0 7.0
df.isnull函数
df.isnull 是 Pandas 中的一个方法,用于检测 DataFrame 中的缺失值(NaN 或 None)。
该方法的基本语法如下:
df.isnull()
该方法返回一个布尔值的 DataFrame,其中元素为 True 表示对应的元素是缺失值,元素为 False 表示对应的元素不是缺失值。
以下是使用 isnull 检测 DataFrame 中的缺失值的示例:
import pandas as pd
# 创建一个包含缺失值的 DataFrame
data = {'A': [1, 2, None, 4], 'B': [None, 5, 6, 7]}
df = pd.DataFrame(data)
# 检测 DataFrame 中的缺失值
missing_values = df.isnull()
print(missing_values)
A B
0 False True
1 False False
2 True False
3 False False
综合案例
import pandas as pd
import numpy as np
date =pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=date,columns=['A','B','C','D'])
df.iloc[0,1] =np.nan
df.iloc[1,2] =np.nan
print(df.dropna(axis=0,how='any')) #axis='0’行,axis='1’列,how=‘all’/‘any’
print(df.fillna(value=0))
print(df.isnull())
print(np.any(df.isnull()) == True)
A B C D
2016-01-03 8 9.0 10.0 11
2016-01-04 12 13.0 14.0 15
2016-01-05 16 17.0 18.0 19
2016-01-06 20 21.0 22.0 23
A B C D
2016-01-01 0 0.0 2.0 3
2016-01-02 4 5.0 0.0 7
2016-01-03 8 9.0 10.0 11
2016-01-04 12 13.0 14.0 15
2016-01-05 16 17.0 18.0 19
2016-01-06 20 21.0 22.0 23
A B C D
2016-01-01 False True False False
2016-01-02 False False True False
2016-01-03 False False False False
2016-01-04 False False False False
2016-01-05 False False False False
2016-01-06 False False False False
True