Подсчет значений для каждого уникального объекта в объекте кадра данных pandas - PullRequest
0 голосов
/ 02 июня 2018

У меня есть CSV-файл с 3 столбцами.пользователи, текст и метки.У каждого пользователя есть несколько текстов и ярлыков.я хочу знать метку с наибольшей частотой вхождения, чтобы определить категорию каждого пользователя.

Я пытался:

for i in df['user'].unique():
    print (df['class'].value_counts())

, которая возвращает те же значения, показанные ниже длявсе пользователи

4    3062
1    1250
0     393
3     281
2      13
Name: class, dtype: int64

Я также пытался

for h in df['user'].unique():
    g = Counter(df['class'])
    print (g)

и получил

Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})

вот пример данных пример данных Пожалуйста, помогите

1 Ответ

0 голосов
/ 02 июня 2018

Для подсчета значений по группам вы можете использовать groupby с pd.value_counts:

df = pd.DataFrame([[1, 1], [1, 2], [1, 3], [1, 1], [1, 1], [1, 2],
                   [2, 1], [2, 3], [2, 2], [2, 2], [2, 3], [2, 3]],
                  columns=['user', 'class'])

res = df.groupby('user')['class'].apply(pd.value_counts).reset_index()
res.columns = ['user', 'class', 'count']

print(res)

   user  class   count
0     1      1       3
1     1      2       2
2     1      3       1
3     2      3       3
4     2      2       2
5     2      1       1
...