英文:
Pandas plot histogram of value counts per group
问题
我有一个数据集:
game_id year
100 2020
100 2020
100 2020
100 2020
227 2022
227 2022
228 2023
228 2023
228 2023
...
300 2023
300 2023
301 2023
301 2023
301 2023
我想要生成一个直方图,每个直方图代表独特的game_id
值的分布,根据pandas 2.0.3
的版本。
我可以手动实现这个操作,例如,使用years = df.groupby('year')
,然后使用years.get_group(2023).value_counts().hist()
来处理每一年的数据,但我觉得应该有一个简单的一行代码,将数据传递给hist()
,以正确的形式获得小多图。
英文:
I have a dataset:
game_id year
100 2020
100 2020
100 2020
100 2020
227 2022
227 2022
228 2023
228 2023
228 2023
...
300 2023
300 2023
301 2023
301 2023
301 2023
And I'd like to generate one histogram per year
of the distribution of unique game_id
values (so df['game_id'].value_counts()
) using pandas 2.0.3
I can manually do this using e.g. years = df'groupby('year')
and then working with each year using years.get_group(2023).value_counts().hist()
, but I feel like there should be a simple one-liner to pass the data to hist()
in the correct shape to get a small multiples plot.
答案1
得分: 2
以下是要翻译的内容:
假设您想要一个直方图来显示计数:
pd.crosstab(df['game_id'], df['year']).plot.hist(alpha=0.5)
输出:
要生成单独的图表,您可以使用seaborn.displot
:
import seaborn as sns
sns.displot(data=df.value_counts().reset_index(name='count'),
x='count', col='year', kind='hist')
输出:
英文:
Assuming you want a histogram of the counts:
pd.crosstab(df['game_id'], df['year']).plot.hist(alpha=0.5)
Output:
For separate graphs, you can use seaborn.displot
:
import seaborn as sns
sns.displot(data=df.value_counts().reset_index(name='count'),
x='count', col='year', kind='hist')
Output:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论