python表求列平均值_python – 在计算Pandas创建的数据框中列的平均值时指定“skip NA”...

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

R脚本

planes

delay

count = n(),

dist = mean(Distance, na.rm = TRUE))

delay 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值,因此将意味着().我们获得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,r,pandas,na

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值