gpt4 book ai didi

Pandas -枢轴||为比率/百分比创建自定义列

转载 作者:行者123 更新时间:2023-12-05 03:25:34 25 4
gpt4 key购买 nike

import numpy as np
import pandas as pd

data = {'experiment_name': ['exp1', 'exp1', 'exp1', 'exp1', 'exp1', 'exp1'],
'variant': ['A', 'B', 'A','B','A','B'],'sessions_with_orders':[1,2,6,0,23,12],
'total_sessions':[10,23,56,22,89,12]}

# Create DataFrame
df = pd.DataFrame(data)
df.pivot_table(index='variant',columns='experiment_name',values=['total_sessions','sessions_with_orders'],aggfunc=np.sum)

我有一些数据框,我在其中使用聚合函数对其进行透视。

我得到的输出是期望的。但是,我想创建比率 sessions_with_orders/total_sessions。我该怎么做呢?这在 excel 上是可行的,但我无法考虑 pandas 数据框。

我不了解 lambda、cross_tab 或如何实现它们。
我在 python 3.9.8 上。 np 版本 1.22.3 和 pd 版本 1.3.4

最佳答案

IIUC,你可以使用assign:

(df
.pivot_table(index='variant',columns='experiment_name',values=['total_sessions','sessions_with_orders'],aggfunc=np.sum)
.assign(ratio=lambda d: d['sessions_with_orders']/d['total_sessions'])
)

输出:

                sessions_with_orders total_sessions     ratio
experiment_name exp1 exp1
variant
A 30 155 0.193548
B 14 57 0.245614

但是,如果您有多个实验,最好使用 join(为了演示,我在这里将最后一个实验更改为“exp2”):

df2 = df.pivot_table(index='variant',columns='experiment_name',
values=['total_sessions','sessions_with_orders'],
aggfunc=np.sum)

df2.join(pd.concat({'ratio': df2['sessions_with_orders'].div(df2['total_sessions'])},
axis=1))

输出:

                sessions_with_orders       total_sessions           ratio     
experiment_name exp1 exp2 exp1 exp2 exp1 exp2
variant
A 30.0 NaN 155.0 NaN 0.193548 NaN
B 2.0 12.0 45.0 12.0 0.044444 1.0

关于 Pandas -枢轴||为比率/百分比创建自定义列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71969146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com