如何处理Pandas DataFrame中的缺失值?

时间:2019-02-10 16:01:21

标签: python python-3.x pandas dataframe missing-data

我有一个熊猫数据框,其中缺少一些值。我想用不影响我将对数据进行统计的东西填充缺失的值。

例如,如果您尝试在Excel中对包含5个单元格和一个空单元格进行平均,那么平均值将为5。我希望在Python中具有相同的值。

我试图用NaN进行填充,但是例如,如果我对某一列求和,则结果为NaN。 我也尝试用None填充,但由于汇总不同的数据类型而出现错误。

有人可以帮忙吗?先感谢您。

4 个答案:

答案 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')