如何获取熊猫群的统计信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取熊猫群的统计信息相关的知识,希望对你有一定的参考价值。
为了简化,我有一个像这样的数据集:
lst = [
["2015", "A"],
["2015", "B"],
["2015", "C"],
["2016", "A"],
["2016", "A"],
["2016", "B"],
["2016", "D"]
]
df = pd.DataFrame(lst, columns =["Year", "Item"])
我想生成如下所示的一些统计信息。如何使用熊猫来做到这一点?我的实际数据集包含数以万计的观察值和许多不同的项目。
谢谢!
答案
考虑在所有可能值的数据帧上使用transform
和merge
进行内联聚合。最后,使用fillna
程序进行清理:
from itertools import product
...
years_items_df = pd.DataFrame(product(["2015", "2016"], list("ABCD")),
columns = ["Year", "Item"])
df = (df.assign(Count = lambda x: x.groupby(["Year", "Item"])["Year"].transform("count"),
AnnualCount = lambda x: x.groupby(["Year"])["Year"].transform("count"))
.drop_duplicates()
.merge(years_items_df, on=["Year", "Item"], how="right")
.sort_values(["Year", "Item"])
.assign(Count = lambda x: x['Count'].fillna(0),
AnnualCount = lambda x: x['AnnualCount'].ffill(),
Percent = lambda x: x["Count"].div(x["AnnualCount"]))
.reset_index(drop=True)
)
df
# Year Item Count AnnualCount Percent
# 0 2015 A 1.0 3.0 0.333333
# 1 2015 B 1.0 3.0 0.333333
# 2 2015 C 1.0 3.0 0.333333
# 3 2015 D 0.0 3.0 0.000000
# 4 2016 A 2.0 4.0 0.500000
# 5 2016 B 1.0 4.0 0.250000
# 6 2016 C 0.0 4.0 0.000000
# 7 2016 D 1.0 4.0 0.250000
以上是关于如何获取熊猫群的统计信息的主要内容,如果未能解决你的问题,请参考以下文章