pandas 数据框对象中每个唯一实体的计数值
Counting values for each unique entity in a pandas dataframe object
我有一个包含 3 列的 csv 文件。用户、文本和标签。每个用户都有多个文本和标签。
我想知道出现频率最高的标签,以便确定每个用户的类别。
我试过:
for i in df['user'].unique():
print (df['class'].value_counts())
这为 returns 所有用户提供了如下所示的相同值
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})
这里是示例数据
sample data
请帮忙
要按组计算值,您可以使用 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
我有一个包含 3 列的 csv 文件。用户、文本和标签。每个用户都有多个文本和标签。 我想知道出现频率最高的标签,以便确定每个用户的类别。
我试过:
for i in df['user'].unique():
print (df['class'].value_counts())
这为 returns 所有用户提供了如下所示的相同值
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})
这里是示例数据 sample data 请帮忙
要按组计算值,您可以使用 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