获取 Panda 时间序列中所有组中出现频率最高的元素
Get most frequent elements across all groups in a Panda time series
对于给定的多组时间序列,如何绘制所有组 中 n
最频繁元素 的 count
?请注意,这不同于 each 组的 n
最常见元素,后者可以通过 count
和 nlargest
.
来完成
给定一个数据框:
import pandas as pd
data = {'year': [2020, 2020, 2021, 2021, 2022],
'month': [1, 1, 2, 2, 3],
'Name': ['name_1', 'name_2', 'name_1', 'name_2', 'name_1'],
'count': [10, 12, 8, 10, 2]}
df = pd.DataFrame(data)
print(df)
输出
year month Name Count
0 2020 1 name_1 10
1 2020 1 name_2 12
2 2021 2 name_1 8
3 2021 2 name_2 10
4 2022 3 name_1 2
- 数据应按
year
和 month
分组
- 我想要
n = 1
,换句话说最经常
我只想绘制 name_1
的 count
,因为尽管它在任何组(甚至整体)中都不是最多的,但它“出现”的次数更多。
IIUC,您想过滤最常见的名称并绘制计数吗?
# get top Name
top = df['Name'].value_counts().index[0]
# filter
df2 = df[df['Name'].eq(top)]
# plot
(df2.assign(date=df2[['year', 'month']].astype(str).apply('_'.join, axis=1))
.plot.bar(x='date', y='count')
)
几个TOP值
# get top Name
top = df['Name'].value_counts().index[:2]
# filter and reshape
df2 = (df[df['Name'].isin(top)]
.pivot(index=['year', 'month'],
columns='Name',
values='count')
)
# plot
df2.plot.bar()
对于给定的多组时间序列,如何绘制所有组 中 n
最频繁元素 的 count
?请注意,这不同于 each 组的 n
最常见元素,后者可以通过 count
和 nlargest
.
给定一个数据框:
import pandas as pd
data = {'year': [2020, 2020, 2021, 2021, 2022],
'month': [1, 1, 2, 2, 3],
'Name': ['name_1', 'name_2', 'name_1', 'name_2', 'name_1'],
'count': [10, 12, 8, 10, 2]}
df = pd.DataFrame(data)
print(df)
输出
year month Name Count
0 2020 1 name_1 10
1 2020 1 name_2 12
2 2021 2 name_1 8
3 2021 2 name_2 10
4 2022 3 name_1 2
- 数据应按
year
和month
分组
- 我想要
n = 1
,换句话说最经常
我只想绘制 name_1
的 count
,因为尽管它在任何组(甚至整体)中都不是最多的,但它“出现”的次数更多。
IIUC,您想过滤最常见的名称并绘制计数吗?
# get top Name
top = df['Name'].value_counts().index[0]
# filter
df2 = df[df['Name'].eq(top)]
# plot
(df2.assign(date=df2[['year', 'month']].astype(str).apply('_'.join, axis=1))
.plot.bar(x='date', y='count')
)
几个TOP值
# get top Name
top = df['Name'].value_counts().index[:2]
# filter and reshape
df2 = (df[df['Name'].isin(top)]
.pivot(index=['year', 'month'],
columns='Name',
values='count')
)
# plot
df2.plot.bar()