我知道我可以计算唯一计数,平均值,中位数,峰度偏度单独并合并到一个数据框架中,但与R数据相比,这是很多步骤。表格,你可以一步算出所有这些。有没有一种方法可以让我做一个groupby
然后用Python一步算出所有这些?
df <- data[,.(ItemCount= uniqueN(Item),
Median_val = median(Value),
Avg_val = mean(Value),
Skew_val = skewness(Value),
Kurt_val = kurtosis(Value)),.(Year, Category)][order(Year,Category)]
有了RootTwo在评论部分提供的参考链接,我能够解决我自己的问题。注意峰度,我们不能用aggfunc="kurt"
。它将返回一个错误"'SeriesGroupBy' object has no attribute 'kurt'
下面是我的解决方案:
df = (data.groupby(['Year', 'Category'], as_index=False)
.agg(ItemCount = pd.NamedAgg(column="Item", aggfunc="nunique"),
mean = pd.NamedAgg(column="Value", aggfunc="mean"),
median = pd.NamedAgg(column="Value", aggfunc="median"),
skew = pd.NamedAgg(column="Value", aggfunc="skew"),
kurt = pd.NamedAgg(column="Value", aggfunc=pd.DataFrame.kurt))
)