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

qhhrdooz  于 2024-01-04  发布在  其他
关注(0)|答案(5)|浏览(105)

我有一个Pandas数据框架,它有一些缺失值。我想用一些不影响我对数据进行统计的东西来填充缺失值。
举个例子,如果在Excel中,你试图平均一个包含5的单元格和一个空单元格,平均值将是5。
我试着用NaN填充,但是如果我对某个列求和,例如,结果是NaN。我也试着用None填充,但是我得到了一个错误,因为我对不同的数据集求和。
有人能帮忙吗?先谢了。

x0fgdtte

x0fgdtte1#

你的两个问题有很多答案。
以下是您的第一个解决方案:
如果你想在Dataframe中的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)#.

kmbjn2e3

kmbjn2e32#

你的问题的答案是,Pandas中缺少的值与Excel中的工作方式不同。你可以在这里阅读有关技术原因的信息。基本上,我们可以填充一个df,这会导致Pandas忽略它。根据我们的需要,我们有时会选择填充缺少的值,有时会删除它们。(永久地或在计算期间),或者有时使用可以与它们一起工作的方法(例如numpy.nansum,正如Philipe Riskalla Leal提到的那样)。

izj3ouym

izj3ouym3#

你可以使用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())代替

bjp0bcyl

bjp0bcyl4#

如果您想更改任何特定列的数据类型,其中缺失值填充为'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')

efzxgjgh

efzxgjgh5#

如何处理Pandas DataFrame中的缺失值?我提供了输入和输出数据的代码:
输入:

Original DataFrame:
A    B   C
0  1.0  5.0  10
1  2.0  NaN  11
2  NaN  NaN  12
3  4.0  8.0  13

字符串

验证码:

import pandas as pd
import numpy as np
 
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [10, 11, 12, 13]
}
df = pd.DataFrame(data)

print("Original DataFrame:")
print(df)

"""
    Im filling here None value with Zero(0)
"""
df_filled = df.fillna(0)
print("DataFrame after filling missing values:")
print(df_filled)

输出:

DataFrame after filling missing values:
A    B   C
0  1.0  5.0  10
1  2.0  0.0  11
2  0.0  0.0  12
3  4.0  8.0  13

  • 如果此代码适合您。请投赞成票。*

相关问题