gpt4 book ai didi

python - 在计算 Pandas 创建的数据框中列的平均值时指定 "skip NA"

转载 作者:太空狗 更新时间:2023-10-29 21:34:24 29 4
gpt4 key购买 nike

我正在通过复制一些 R 小插图的郊游来学习 Pandas 包。现在我使用 R 中的 dplyr 包作为示例:

http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

R脚本

planes <- group_by(hflights_df, TailNum)
delay <- summarise(planes,
count = n(),
dist = mean(Distance, na.rm = TRUE))
delay <- filter(delay, count > 20, dist < 2000)

Python脚本

planes = hflights.groupby('TailNum')
planes['Distance'].agg({'count' : 'count',
'dist' : 'mean'})

我如何在 python 中明确声明需要跳过 NA

最佳答案

这是一个棘手的问题,因为你不会那样做。 Pandas 会自动从聚合函数中排除 NaN 数字。考虑我的 df:

    b   c   d  e
a
2 2 6 1 3
2 4 8 NaN 7
2 4 4 6 3
3 5 NaN 2 6
4 NaN NaN 4 1
5 6 2 1 8
7 3 2 4 7
9 6 1 NaN 1
9 NaN NaN 9 3
9 3 4 6 1

内部 count() 函数将忽略 NaN 值,mean() 也是如此。我们得到 NaN 的唯一一点是当唯一的值为 NaN 时。然后,我们取一个空集的平均值,结果是 NaN:

In[335]: df.groupby('a').mean()
Out[333]:
b c d e
a
2 3.333333 6.0 3.5 4.333333
3 5.000000 NaN 2.0 6.000000
4 NaN NaN 4.0 1.000000
5 6.000000 2.0 1.0 8.000000
7 3.000000 2.0 4.0 7.000000
9 4.500000 2.5 7.5 1.666667

聚合函数的工作方式相同:

In[340]: df.groupby('a')['b'].agg({'foo': np.mean})
Out[338]:
foo
a
2 3.333333
3 5.000000
4 NaN
5 6.000000
7 3.000000
9 4.500000

附录:请注意标准dataframe.mean API将允许您控制包含 NaN 值,其中默认为排除

关于python - 在计算 Pandas 创建的数据框中列的平均值时指定 "skip NA",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039328/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com