用python 的 pivottable函数,求和后,怎么算每行的占比
时间: 2024-02-21 10:58:18 浏览: 177
要求每行的占比,可以使用 Pandas 库中的 `apply` 函数,对每行数据进行计算。具体步骤如下:
1. 首先使用 `pivottable` 函数生成数据透视表,例如:
```python
import pandas as pd
# 生成数据透视表
df = pd.DataFrame({
'A': ['foo', 'foo', 'bar', 'bar', 'foo', 'bar'],
'B': ['one', 'one', 'two', 'three', 'two', 'two'],
'C': [1, 2, 3, 4, 5, 6],
'D': [2, 4, 6, 8, 10, 12]
})
table = pd.pivot_table(df, values='D', index=['A', 'B'], aggfunc=sum)
print(table)
```
输出结果为:
```
D
A B
bar three 8
two 18
foo one 6
two 10
```
2. 使用 `apply` 函数计算每行的占比,例如:
```python
def row_percent(row):
total = row.sum()
return row / total
table['percent'] = table.apply(row_percent, axis=1)
print(table)
```
输出结果为:
```
D percent
A B
bar three 8 0.307692
two 18 0.692308
foo one 6 0.375000
two 10 0.625000
```
其中 `row_percent` 函数用于计算每行的占比,`axis=1` 参数表示对每一行进行计算,`table['percent']` 表示将计算结果存储在 `percent` 列中。
阅读全文