【问题标题】:what will be the mean of a column if there are missing values in the column?如果列中存在缺失值,该列的平均值是多少?
【发布时间】:2021-11-19 21:06:37
【问题描述】:
示例数据
| ID |
Name |
Phone |
| 1 |
x |
+212 |
| 2 |
y |
NaN |
| 3 |
xy |
NaN |
df 是数据集的名称
下面的代码给出了没有缺失值的列的名称。
no_nulls = set(df.columns[df.isnull().mean()==0])
isnull() 会将数据集转换成这样的东西
| ID |
Name |
Phone |
| False |
False |
False |
| False |
False |
True |
| False |
False |
True |
有人可以解释均值如何作用于非整数吗?
我用过这个,它有效,但我对平均值很好奇
no_nulls = set(df.columns[df.notnull().all()])
【问题讨论】:
标签:
python
pandas
dataframe
statistics
data-science
【解决方案1】:
您的情况,.mean() 正在处理一个布尔值的数据帧,其中只有 True 和 False 值。在这种情况下,.mean() 将 False 视为 0 并将 True 视为 1。因此,如果您查看df.isnull().mean() 的结果,您将看到:
df.isnull().mean()
ID 0.000000
Name 0.000000
Phone 0.666667
dtype: float64
在这里,由于列 ID 和 Name 具有所有 False 值,.mean() 会将所有值视为零并获得零平均值。对于列Phone,您有一个False 和2 个True,因此,平均值相当于取0、1、1 的平均值,即0.666667。
因此,当您检查 df.isnull().mean()==0 时,只有前 2 列将是 True,因此,{'ID', 'Name'} 的结果是 no_nulls。
参考official document of DataFrame.mean,您将从参数numeric_only= 中得到一些提示,并注意其默认设置下的默认行为:
参数
numeric_only 布尔型,默认无
仅包括 float、int、boolean 列。
如果没有,将尝试使用所有内容,然后仅使用
数字数据。