python-3.x - 使用 groupby 后在 Python 中填充缺失的元素
问题描述
我正在研究一个机器学习检测交易欺诈的案例。我在每笔交易中对人员及其欺诈率进行分组。我正在使用他们的电子邮件,因为它定义了人。工作表中有 160k 行。当我像这样对它们进行分组时:
data['ratebymail']=pd.DataFrame(data.groupby('EMAIL')['ISFRAUD'].mean())
有两个问题。data['ratebymail'] 为每封电子邮件返回 NaN。第二个问题是数据是 90k 行。每封电子邮件都有 1 个值,但在原始集合中,它应该是 160k,并且有重复。对于数据集中的第二次出现,我应该在另一笔交易中为该人分配相同的欺诈率。顺序也很重要,因此我不能附加它。
i = 0
ratebymail = []
for mail in data['EMAIL']:
for other_mail in other_mails:
if mail == other_mail:
ratebymail[i] = ratios[j]
i += 1
我试过这样的东西,但我很困惑,我无法完成代码。我迫切需要帮助。谢谢!
编辑:打字错误。
解决方案
我不确定是否很好地理解了您的问题,但我认为您希望获得每封电子邮件的欺诈率平均值。在这种情况下,答案是:
import numpy as np
import pandas as pd
np.random.seed(111)
# create data
data = pd.DataFrame([np.random.randint(0,100,size=1000), np.random.rand(1000)], index=['EMAIL', 'ISFRAUD']).T
# aggregate
rateByEmail = data.groupby('EMAIL').mean()
rateByEmail.head()
出去:
电子邮件欺诈 0.0 0.466479 1.0 0.615915 10.0 0.665675 11.0 0.462092 12.0 0.315427
如果不是您问题的答案,请举例说明您的输入和所需的输出。
推荐阅读
- vb.net - 在运行时定义/声明一个对象 VB.Net
- google-apps-script - Google Web App 多个 Google 帐户错误
- java - JPA 存储库方法相同或不同
- drools - 在 Drool 7.5 中加载多个规则文件
- ckeditor4.x - 使用第三方 API 修改 HTML
- string - 如何在 Cordova 中读取 String.xml
- async-await - 当我从邮递员发送帖子请求时,出现此错误
- c# - 2sxc 自定义 API 返回实体列表
- azure-active-directory - 如何仅授予部署到特定插槽的权限?
- r - 在 R 中使用 Group by 或 Aggregate 进行数据框分组