当我们处理数据的时候,经常会遇到缺失值的情况,这时需要使用pandas提供的一些函数来处理NaN缺失值。下面,我将为大家详细介绍pandas中NaN缺失值的处理方法:
查看缺失值
使用pandas中的isnull()函数可以查看缺失值,该函数会返回一个布尔值的DataFrame,缺失值处为True,否则为False。
import pandas as pd
df = pd.read_csv('data.csv')
print(df.isnull())
删除缺失值
pandas中提供了dropna()函数来删除缺失值。
import pandas as pd
df = pd.read_csv('data.csv')
df = df.dropna() # 删除掉任何包含NaN值的行或列
另外,还可以通过设置axis参数来控制删除行或删除列,默认是删除行。
df = df.dropna(axis=1) # 删除任何包含NaN值的列
填充缺失值
pandas中提供了fillna()函数来填充缺失值。该函数包含多个参数:
- value: 使用该值来填充缺失值。
- method: 插值方法,可以选择ffill向前填充或bfill向后填充。
- axis: 填充方向,0表示按列填充,1表示按行填充。
import pandas as pd
import numpy as np
df = pd.read_csv('data.csv')
# 使用0来填充缺失值
df = df.fillna(value=0)
# 使用平均值来填充缺失值
df = df.fillna(df.mean())
# 向前填充缺失值
df = df.fillna(method='ffill')
以上就是pandas中NaN缺失值的处理方法。接下来,我将给出两个具体的实例:
示例1
假设我们有一个DataFrame,其中包含了某个城市7天的气温数据。有几天的气温数据缺失,我们希望通过平均值来填充缺失值。
import pandas as pd
import numpy as np
df = pd.DataFrame({
'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05', '2020-01-06', '2020-01-07'],
'temperature': [20, 23, np.nan, 21, np.nan, 25, 22]
})
# 使用平均值来填充缺失值
df = df.fillna(df.mean())
print(df)
输出结果如下:
date temperature
0 2020-01-01 20.000000
1 2020-01-02 23.000000
2 2020-01-03 22.166667
3 2020-01-04 21.000000
4 2020-01-05 22.166667
5 2020-01-06 25.000000
6 2020-01-07 22.000000
我们可以看到,缺失的气温数据已经被平均值所填充。
示例2
假设我们有一个DataFrame,其中包含销售数据。如果出现了某一天的销售额缺失,我们希望删除该行。
import pandas as pd
df = pd.DataFrame({
'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
'sales': [1000, 2000, 3000, pd.np.nan, 5000]
})
# 删除缺失值
df = df.dropna()
print(df)
输出结果如下:
date sales
0 2020-01-01 1000
1 2020-01-02 2000
2 2020-01-03 3000
4 2020-01-05 5000
我们可以看到,缺失的销售额数据所在的行已经被删除。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas中NaN缺失值的处理方法 - Python技术站