python - 如何计算 pandas Dataframe 中分类数据的子组?

标签 python pandas dataframe

我有以下 Pandas 数据框:

import pandas as pd
import numpy as np
df = pd.DataFrame({"shops": ["shop1", "shop2", "shop3", "shop4", "shop5", "shop6"], "franchise" : ["franchise_A", "franchise_A", "franchise_A", "franchise_A", "franchise_B", "franchise_B"],"items" : ["dog", "cat", "dog", "dog", "bird", "fish"]})
df = df[["shops", "franchise", "items"]]
print(df)

   shops    franchise items
0  shop1  franchise_A   dog
1  shop2  franchise_A   cat
2  shop3  franchise_A   dog
3  shop4  franchise_A   dog
4  shop5  franchise_B  bird
5  shop6  franchise_B  fish

因此,每一行都是一个独特的样本 shop1shop2 等,每个样本都属于一个子组 franchise_A franchise_B, franchise_C 等 在 items 列中,只有四个可能的分类值:dogcatfish。我的动机是为每个“特许经营权”创建 dogcatfishbird 数量的条形图”。

我希望输出是

franchise        dogs    cats    birds    fish
franchise_A      3       1       0        0
franchise_B      0       0       1        1

我相信我首先必须使用groupby(),例如

df.groupby("franchise").count()
             shops  items
franchise                
franchise_A      4      4
franchise_B      2      2

但我不确定如何计算每个特许经营权的商品数量。

最佳答案

您可以将 value_countsunstack 一起使用, 谢谢 Nickil Maveli :

from collections import Counter

print (df.groupby("franchise")['items'].value_counts().unstack(fill_value=0))
items        bird  cat  dog  fish
franchise                        
franchise_A     0    1    3     0
franchise_B     1    0    0     1

另一个解决方案 crosstabpivot_table :

print (pd.crosstab(df["franchise"], df['items']))
items        bird  cat  dog  fish
franchise                        
franchise_A     0    1    3     0
franchise_B     1    0    0     1

print (df.pivot_table(index="franchise", columns='items', aggfunc='size', fill_value=0))
items        bird  cat  dog  fish
franchise                        
franchise_A     0    1    3     0
franchise_B     1    0    0     1

关于python - 如何计算 pandas Dataframe 中分类数据的子组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42563209/

相关文章:

python - 如何将两个只有一个公共(public)维度(批量大小)的 3D 张量传递给 dynamic_lstm?

python - 尝试运行 bokeh-server 时出错

python - 仅绘制某些日子的 Pandas 数据框

python - 如何使用字典和 isin()?

Python 和 Pandas 对象赋值

php - 如何扩展 Direct Connect 客户端的功能(如 linuxdcpp、dc++)?

python - 在Python中将Dataframe写入和读取文件的正确方法

python - 如果值有两个以上空格,Pandas 会替换 df 中的行值

python - 给定未排序的其他约束,标准化数据框中的值

r - 在 r 中按组标记非连续值