首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大熊猫群体对象的创建、求和与分割

大熊猫群体对象的创建、求和与分割
EN

Stack Overflow用户
提问于 2017-05-11 23:29:17
回答 2查看 1.2K关注 0票数 2

我有一个城市列表和一个虚拟变量。A 1表示有欺诈命令,0表示订单良好。我在试着确定一个命令有多大的欺诈性。

因此,我试图:

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

我的数据:

代码语言:javascript
复制
df_city = pd.DataFrame({'City':['LA', 'NYC', 'NYC', 'LA', 'Chicago', 'NYC'],
       'isFraud':[1, 0, 0, 1, 0, 1]})

我可以按城市分组:

代码语言:javascript
复制
group = df['isFraud'].groupby(df['City']).count()

City     LA          2
         NYC         3
         Chicago     1

但上述情况并没有说明他们是否达到了临界值。

我为每个虚拟人创建了列:

代码语言:javascript
复制
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

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

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-11 23:40:56

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

代码语言:javascript
复制
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

另一种无需使用dict重命名的方法:

代码语言:javascript
复制
df.groupby(df['City'])['isFraud'].agg(['sum', lambda x: len(x)-sum(x),'mean']).rename(columns={'sum':'Fraud','<lambda>': 'Non-Fraud','mean': 'Fraud_Pct'})
票数 3
EN

Stack Overflow用户

发布于 2017-05-11 23:38:55

在0/1,真/假列中得到百分比的最简单的方法是取平均值。

代码语言:javascript
复制
df_out = df_city.groupby('City')['isFraud'].agg([lambda x: (~x.astype(bool)).sum(),'sum','mean'])
df_out.columns = ['Non-Fraud','Fraud','Pct. Fraud']
print(df_out)

输出:

代码语言:javascript
复制
         Non-Fraud  Fraud  Pct. Fraud
City                                 
Chicago          1      0    0.000000
LA               0      2    1.000000
NYC              2      1    0.333333
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43927134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档