对大Pandas在群比中的行为感到困惑

2024-09-28 19:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的数据集,其中有一个二进制变量:

Transactions['has_acc_id_and_cus_id'].value_counts()
1    1295130
0     823869
Name: has_acc_id_and_cus_id, dtype: int64

当我通过这个数据集——事务——将这个特定的二进制变量用作一个分组变量时,我得到一个分组的数据集——df100——它只有上述二进制变量的一个级别

df100 = Transactions.groupby(['acc_reg_year', 'acc_reg_month', 'year', 'month',\
                              'has_acc_id_and_cus_id'])[['net_revenue']].agg(['sum', 'mean', 'count'])

df100['has_acc_id_and_cus_id'].value_counts()
1    1421
Name: has_acc_id_and_cus_id, dtype: int64

Tags: and数据nameidvalue二进制regacc
1条回答
网友
1楼 · 发布于 2024-09-28 19:26:47

如果您真的只想groupbyhas_acc_id_and_cus_id上,那么您想要的命令将是

df100 = Transactions[['has_acc_id_and_cus_id', 'net_revenue']].groupby(['has_acc_id_and_cus_id']).agg(['sum', 'mean', 'count'])

这个子集只包含了您想要汇总的变量(has_acc_id_and_cus_id)和您想要汇总的变量(net_revenue

Transactions[['has_acc_id_and_cus_id', 'net_revenue']]

…然后按has_acc_id_and_cus_id对它们进行分组

Transactions[['has_acc_id_and_cus_id', 'net_revenue']].groupby('has_acc_id_and_cus_id')

…然后应用agg()函数获取所需的统计信息

你所犯的错误,基于你所说的仅仅用has_acc_id_and_cus_id来总结的目的,是用另外四个变量来分组(acc_reg_yearacc_reg_monthyearmonth

如果您确实希望在中使用has_acc_id_and_cus_id的摘要,那么您的原始代码是正确的,但是acc_reg_yearacc_reg_monthyearmonth中的一个或多个在has_acc_id_and_cus_id == 0时缺少值,因此请检查您的数据

Transactions[Transactions[`has_acc_id_and_cus_id`] == 0][[`acc_reg_year`, `acc_reg_month`, `year`, `month`]].head(100)

相关问题 更多 >