gpt4 book ai didi

python - 如何使用 Pandas 进行数据分析(如计数、ucounts、频率)?

转载 作者:行者123 更新时间:2023-12-04 12:00:02 24 4
gpt4 key购买 nike

我有如下 DataFrame:

df = pd.DataFrame([
("i", 1, 'GlIrbixGsmCL'),
("i", 1, 'GlIrbixGsmCL'),
("i", 1, '3IMR1UteQA'),
("c", 1, 'GlIrbixGsmCL'),
("i", 2, 'GlIrbixGsmCL'),
], columns=['type', 'cid', 'userid'])
预期输出如:
expect output
更多详情:
i_counts, c_counts      => df.groupby(["cid","type"]).size()
i_ucounts, c_ucounts => df.groupby(["cid","type"])["userid"].nunique()
i_frequency,u_frequency => df.groupby(["cid","type"])["userid"].value_counts()
看起来对我来说有点复杂,如何使用pandas来获得预期的结果?
相关截图:
screenshots

最佳答案

这就是我将如何处理这个:

aggfuncs= {
'counts': ('userid', 'count'),
'ucounts': ('userid', 'nunique'),
'frequency': ('userid', lambda S: S.value_counts().to_dict()),
}

output = df.groupby(['cid', 'type']).agg(**aggfuncs).unstack()
output.columns = output.columns.map(lambda tup: '_'.join(tup[::-1]))
输出:
     c_counts  i_counts  c_ucounts  i_ucounts          c_frequency                           i_frequency
cid
1 1.0 3.0 1.0 2.0 {'GlIrbixGsmCL': 1} {'GlIrbixGsmCL': 2, '3IMR1UteQA': 1}
2 NaN 1.0 NaN 1.0 NaN {'GlIrbixGsmCL': 1}
我认为这是你想要的核心。您将需要进行一些外观修改才能获得与您的示例完全相同的输出(例如 fillna 等)。

关于python - 如何使用 Pandas 进行数据分析(如计数、ucounts、频率)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67757620/

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