分组列和计算

克里斯90

我的代码如下:

df.loc[df['Shape'].isin(Shapes), 'Shape'].value_counts().div(len(df)).to_frame().reset_index()

这给了我出现的次数,然后给了%,这个值可以说是整个数据帧的三角形。但是,如果要添加另一列以将其作为组进行分层,该如何调整呢?

当前代码给了我整个df中每种形状的百分比

Triangle .20
Square   .40
Circle   .40

我也想用颜色,所以输出如下:

Triangle  Blue  .20
Triangle  Red   .40
Triangle  Black .40
Square    Blue  .40
Square    Red   .30
Square    Purple.30
...

谢谢

耶斯列尔

我认为您可以使用GroupBy.size多个列:

np.random.seed(2020)
s = ['Triangle','Square','Circle', 'Rectangle']
c = ['Blue','Red','Black', 'Purple']    

df = pd.DataFrame({'Shape':np.random.choice(s, size=20),
                   'Colors':np.random.choice(c, size=20)})
#print (df)

Shapes = ['Triangle','Square','Circle'] 

df1 = (df.loc[df['Shape'].isin(Shapes)]
           .groupby(['Shape', 'Colors'])
           .size()
           .div(len(df))
           .reset_index(name='per'))
print (df1)
      Shape  Colors   per
0    Circle   Black  0.10
1    Circle     Red  0.05
2    Square    Blue  0.05
3    Square     Red  0.10
4  Triangle   Black  0.05
5  Triangle    Blue  0.05
6  Triangle  Purple  0.10
7  Triangle     Red  0.10

与的选择SeriesGroupBy.value_counts不同,是按组对值进行排序:

df1 = (df.loc[df['Shape'].isin(Shapes)]
           .groupby(['Shape'])['Colors']
           .value_counts()
           .div(len(df))
           .reset_index(name='per'))
print (df1)
      Shape  Colors   per
0    Circle   Black  0.10
1    Circle     Red  0.05
2    Square     Red  0.10
3    Square    Blue  0.05
4  Triangle  Purple  0.10
5  Triangle     Red  0.10
6  Triangle   Black  0.05
7  Triangle    Blue  0.05

如果要每个组的百分比(每个组的总百分比为1100%),则使用:

Shapes = ['Triangle','Square','Circle'] 

df2 = (df.loc[df['Shape'].isin(Shapes)]
           .groupby(['Shape'])['Colors']
           .value_counts(normalize=True)
           .reset_index(name='per'))
print (df2)
      Shape  Colors       per
0    Circle   Black  0.666667
1    Circle     Red  0.333333
2    Square     Red  0.666667
3    Square    Blue  0.333333
4  Triangle  Purple  0.333333
5  Triangle     Red  0.333333
6  Triangle   Black  0.166667
7  Triangle    Blue  0.166667

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算和分组

来自分类Dev

dplyr基于过滤,分组和汇总计算新列

来自分类Dev

SQL分组依据和计算

来自分类Dev

分组和计算频率,熊猫

来自分类Dev

计算分组中的额外列

来自分类Dev

计算按列分组的值

来自分类Dev

计算分组中的额外列

来自分类Dev

按列分组,然后计算R中每隔一列的均值和sd

来自分类Dev

如何将两列和单词分组,以计算熊猫(或python)中的最后一列

来自分类Dev

计算列中的不同值,同时按不同的列值进行总计和分组

来自分类Dev

按年份分组和其他列,并根据特定条件的熊猫计算平均值

来自分类Dev

根据多列,计算频率和百分比进行分组

来自分类Dev

Python中基于pct_change的一列分组和反向计算

来自分类Dev

根据列进行分组和取消分组

来自分类Dev

熊猫数据框分组和回归计算

来自分类Dev

分组并计算LEN和别名的结果

来自分类Dev

大熊猫的分组比和计算比率

来自分类Dev

如何在熊猫中分组和计算

来自分类Dev

熊猫分组依据和基于条件的计算

来自分类Dev

如何计算枚举和按日期分组

来自分类Dev

分组不是计算数量和价格?

来自分类Dev

计算和分组R中的出现次数

来自分类Dev

DataFrame中的时间计算和动作分组

来自分类Dev

熊猫:计算列的分组中位数

来自分类Dev

分组并计算均值,但保留所有列

来自分类Dev

使用分组集时如何计算列

来自分类Dev

对SQL列进行分组并计算结果

来自分类Dev

ActiveRecord计算列总和并将其分组

来自分类Dev

按分组选择并计算两列