Заполнение недостающих элементов в Python после использования groupby - PullRequest
0 голосов
/ 16 января 2020

Я работаю над делом по машинному обучению, обнаружившему мошенничество в транзакциях. Я группирую людей и их коэффициент мошенничества в каждой транзакции. Я использую их электронные письма, потому что это определяет людей. На листе 160 тысяч строк. Когда я группирую их так:

data['ratebymail']=pd.DataFrame(data.groupby('EMAIL')['ISFRAUD'].mean())

Есть две проблемы. Данные ['ratebymail'] возвращают NaN для каждого электронного письма. Вторая проблема - данные в 90 тыс. Строк. Каждое письмо имеет 1 значение, но в оригинальном наборе оно должно быть 160 КБ с дубликатами. Для второго вхождения в наборе данных я должен назначить тот же коэффициент мошенничества этому лицу в другой транзакции. Порядок также важен, поэтому я не могу его добавить.

i = 0
ratebymail = []
for mail in data['EMAIL']:
    for other_mail in other_mails:
        if mail == other_mail:
        ratebymail[i] = ratios[j]
    i += 1

Я пробовал что-то подобное, но я так растерялся, что не смог закончить sh код. Я отчаянно нуждаюсь в помощи. Спасибо!

Редактировать: Ошибка ввода.

1 Ответ

0 голосов
/ 16 января 2020

Я не уверен, что хорошо понял вашу проблему, но я думаю, что вы хотите получить средний коэффициент мошенничества для каждого электронного письма. В этом случае ответом будет:

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()

Out:

EMAIL   ISFRAUD
0.0     0.466479
1.0     0.615915
10.0    0.665675
11.0    0.462092
12.0    0.315427

Пожалуйста, приведите пример вашего ввода и желаемого результата, если он не является ответом на ваш вопрос.

...