Pandas 如何获得两个分类变量之间的关系(百分比)?
我有这个数据框:Pandas 如何获得两个分类变量之间的关系(百分比)?,pandas,crosstab,Pandas,Crosstab,我有这个数据框: id product_type color A11 A blue B11 B blue C11 A red D11 C red E11 C black F11 C r
id product_type color
A11 A blue
B11 B blue
C11 A red
D11 C red
E11 C black
F11 C red
G11 A black
H11 A red
我试图得到每种产品类型中每种颜色的百分比
我希望这样:
product_type black blue red
A 0.25 0.25 0.50
B 0.00 1.00 0.00
C 0.33 0.00 0.67
我试过两件事,第一件:
gr = df.groupby(["product_type", "color"]).size()
(gr / gr.groupby(level=0).sum())
它实际上是有效的,但我认为输出不是很可读。所以我决定试试这个:
pd.crosstab(df.product_type, df.color)
但后来我又犯了另一个错误:
TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
所以我有点被困在这里了…对于我来说,使用规范化参数很好:
df = pd.crosstab(df.product_type, df.color, normalize=0)
print (df)
color black blue red
product_type
A 0.250000 0.25 0.500000
B 0.000000 1.00 0.000000
C 0.333333 0.00 0.666667
你的熊猫版本是什么?太奇怪了,我还是会出错。您使用的熊猫版本是什么?@dsbr\uu 0-pandas1.2.3