我有一个熊猫数据框,其中缺少一些值。我想用不影响我将对数据进行统计的东西填充缺失的值。
例如,如果您尝试在Excel中对包含5个单元格和一个空单元格进行平均,那么平均值将为5。我希望在Python中具有相同的值。
我试图用NaN
进行填充,但是例如,如果我对某一列求和,则结果为NaN
。
我也尝试用None填充,但由于汇总不同的数据类型而出现错误。
有人可以帮忙吗?先感谢您。
答案 0 :(得分:2)
您的两个问题有很多答案。
这是您第一个解决方案:
如果您希望在数据框的NaN条目中插入一个不会改变您的统计信息的值,那么我建议您使用该数据的平均值。
示例:
df # your dataframe with NaN values
df.fillna(df.mean(), inplace=True)
第二个问题:
如果您需要从数据框中检查描述性统计信息,并且描述性统计信息不受NaN值的影响,则可以采用以下两种解决方案: 1)
df # your dataframe with NaN values
df.fillna(df.mean(), inplace=True)
df.mean()
df.std()
# or even:
df.describe()
2)选项2:
我建议您使用numpy nan函数,例如(numpy.nansum,numpy.nanmean,numpy.nanstd)...
df.apply(numpy.nansum)
df.apply(numpy.nanstd)#...
答案 1 :(得分:0)
您的问题的答案是,缺失值在Pandas中的作用与在Excel中的作用不同。您可以了解有关该here的技术原因。基本上,没有神奇的数字可以填充df,而这会导致Pandas忽略它。根据我们的需求,有时我们会选择填充缺失值,有时会丢弃它们(永久地或在计算期间),或者有时会使用可以使用它们的方法(例如numpy.nansum
提到Philipe Riskalla Leal)。
答案 2 :(得分:0)
您可以使用df.fillna()。这是一个如何执行此操作的示例。
import pandas as pd
import numpy as np
df = pd.DataFrame([[np.nan,2,1,np.nan],
[2,np.nan,3,4],
[4,np.nan,np.nan,3],
[np.nan,2,1,np.nan]],columns=list('ABCD'))
df.fillna(0.0)
通常用0之类的值填充值会影响您对数据所做的统计。 因此,请选择数据的均值,以确保它不会影响您的统计信息。 因此,请改用df.fillna(df.mean())
答案 3 :(得分:0)
如果您想更改任何特定列的数据类型,而对于任何统计操作,这些值的缺失值都用'nan'填充,则只需在代码行下方使用,它将将该列的所有值转换为数值类型,并将所有缺少的值将自动替换为“ nan”,并且不会影响您的统计操作。
df['column_name'] = pd.to_numeric(df['column_name'], errors='coerce')
如果要对数据框中的所有列执行相同的操作,则可以使用:
for i in df.columns:
df[i] = pd.to_numeric(df[i], errors='coerce')