数据框小计和百分比
dataframe subtotal and percent
我有一个如下所示的数据框:
我的最终目标是计算每个目的和每个来源的百分比
所以最后的 table 应该是这样的:
如有任何帮助或指导,我们将不胜感激:)
提前致谢:)
舍伊
使用 transform
获得您所需要的。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.transform.html .
即使 aggregation
returns 是输入数据的 简化版本 ,transform
最好的一点是返回的输出是与输入相同的形状:
df['%_values'] = 100 * (df['values'] / (df.groupby('Origin')['values'].transform('sum')))
上面的 1-liner 将 每个值 除以值的分组总和(按原点分组),然后 returns 将结果放在新列中。
这将打印你:
Origin Destination Purpose values %_values
0 a a business 1490 37.664307
1 a b business 1301 32.886754
2 a c pleasure 1165 29.448938
3 b a pleasure 1777 57.064868
4 b b business 580 18.625562
5 b c pleasure 757 24.309570
6 c a business 1852 41.599281
7 c b pleasure 1949 43.778077
8 c c undeclared 651 14.622642
当然要让你的输出有 0 个(或任何)小数位,你可以使用 round
:
df['%_values'] = round(100 * (df['values'] / (df.groupby('Origin')['values'].transform('sum'))))
Origin Destination Purpose values %_values
0 a a business 1490 38.0
1 a b business 1301 33.0
2 a c pleasure 1165 29.0
3 b a pleasure 1777 57.0
4 b b business 580 19.0
5 b c pleasure 757 24.0
6 c a business 1852 42.0
7 c b pleasure 1949 44.0
8 c c undeclared 651 15.0
我有一个如下所示的数据框:
我的最终目标是计算每个目的和每个来源的百分比
所以最后的 table 应该是这样的:
如有任何帮助或指导,我们将不胜感激:)
提前致谢:)
舍伊
使用 transform
获得您所需要的。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.transform.html .
即使 aggregation
returns 是输入数据的 简化版本 ,transform
最好的一点是返回的输出是与输入相同的形状:
df['%_values'] = 100 * (df['values'] / (df.groupby('Origin')['values'].transform('sum')))
上面的 1-liner 将 每个值 除以值的分组总和(按原点分组),然后 returns 将结果放在新列中。
这将打印你:
Origin Destination Purpose values %_values
0 a a business 1490 37.664307
1 a b business 1301 32.886754
2 a c pleasure 1165 29.448938
3 b a pleasure 1777 57.064868
4 b b business 580 18.625562
5 b c pleasure 757 24.309570
6 c a business 1852 41.599281
7 c b pleasure 1949 43.778077
8 c c undeclared 651 14.622642
当然要让你的输出有 0 个(或任何)小数位,你可以使用 round
:
df['%_values'] = round(100 * (df['values'] / (df.groupby('Origin')['values'].transform('sum'))))
Origin Destination Purpose values %_values
0 a a business 1490 38.0
1 a b business 1301 33.0
2 a c pleasure 1165 29.0
3 b a pleasure 1777 57.0
4 b b business 580 19.0
5 b c pleasure 757 24.0
6 c a business 1852 42.0
7 c b pleasure 1949 44.0
8 c c undeclared 651 15.0