gpt4 book ai didi

python - 在 pandas groupby 对象中创建求和和除法

转载 作者:行者123 更新时间:2023-11-28 22:27:47 26 4
gpt4 key购买 nike

我有一个城市列表和一个虚拟变量。 1 表示存在欺诈订单,0 表示订单良好。我试图确定订单有多少时间是欺诈性的。

因此,我正在尝试:

  1. 按城市分组
  2. 创建他们所下订单数量的总和,
  3. 然后确定有多少百分比的订单是欺诈。

我的数据框:

df_city = pd.DataFrame({'City':['LA', 'NYC', 'NYC', 'LA', 'Chicago', 'NYC'],
'isFraud':[1, 0, 0, 1, 0, 1]})

我可以按城市分组:

group = df['isFraud'].groupby(df['City']).count()

City LA 2
NYC 3
Chicago 1

但是上面并没有爆出他们是否达到了阈值。

我为每个虚拟对象创建了列:

df_fraud = pd.get_dummies(df_city['isFraud'])
df_city = df_city.join(df_fraud)

df_city.rename(columns={0 : 'Non-Fraud', 1 : 'Fraud'}, inplace=True)
df_city['Fraud'].where(df_city['Fraud'] == 0, np.nan)
df_city['Non-Fraud'].where(df_city['Non-Fraud'] == 0, 1)

#Group by City
group_fraud_rate = df_city[['Fraud', 'Non-Fraud']].groupby(df_city['ship_city']).count()`

Fraud Non-Fraud
LA 2 0
NYC 1 2
Chicago 0 1

但是,我不确定是否/如何获得总和列然后计算百分比。

感谢任何帮助!

最佳答案

您可以使用 agg 函数,然后分别计算欺诈、非欺诈和欺诈百分比。

df.groupby(df['City'])['isFraud'].agg({'Fraud':sum, 'Non-Fraud': lambda x: len(x)-sum(x), 'Fraud_Pct': lambda x: float(sum(x))/len(x)})
Out[1084]:
Non-Fraud Fraud Fraud_Pct
City
Chicago 1 0 0.000000
LA 0 2 1.000000
NYC 2 1 0.333333

不使用字典重命名的另一种方法:

df.groupby(df['City'])['isFraud'].agg(['sum', lambda x: len(x)-sum(x),'mean']).rename(columns={'sum':'Fraud','<lambda>': 'Non-Fraud','mean': 'Fraud_Pct'})

关于python - 在 pandas groupby 对象中创建求和和除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43927134/

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