Python Pandas-从DataFrame按类别绘制多个条形图

2024-08-22Python开发问题
49

本文介绍了Python Pandas-从DataFrame按类别绘制多个条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我的数据帧看起来像

df = pd.DataFrame(data={'ID':[1,1,1,2,2,2], 'Value':[13, 12, 15, 4, 2, 3]})

Index ID Value
0   1   13
1   1   12
2   1   15
3   2   4
4   2   2
5   2   3

我想按ID(类别)来绘制它,这样每个类别就会有不同的条形图,
所以在这种情况下我会有两位数
一个图形,条形图ID=1,
和ID=2的第二个单独的图形条形图。

我是否可以使用类似df.plot(y='Value', kind='bar')的命令(最好不要循环)?

推荐答案

可以选择两种,一种是使用matplotlib,另一种是您现在绝对应该使用的海运,因为它与 pandas 配合得很好。

带有matplotlib的 pandas

您必须创建一个带有您设置的列数和行数的子图。如果nrowsncols设置为1,则它在1-D中给出一个数组axes,否则在2-D中给出一个数组。然后,将此对象交给Pandas Plot方法。

如果类别数未知或很高,则需要使用循环。

import pandas as pd
import matplotlib.pyplot as plt

fig, axes = plt.subplots( nrows=1, ncols=2, sharey=True )

df.loc[ df["ID"] == 1, 'Value' ].plot.bar( ax=axes[0] )
df.loc[ df["ID"] == 2, 'Value' ].plot.bar( ax=axes[1] )

plt.show()

带海运的 pandas

Seaborn是我所知道的最令人惊叹的图形工具。函数catplot允许您在设置参数col时根据列的值绘制一系列图形。您可以使用kind选择绘图类型。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('white')

df['index'] = [1,2,3] * 2
sns.catplot(kind='bar', data=df, x='index', y='Value', col='ID')
plt.show()

我添加了一列index,以便与df.plot.bar进行比较。如果您不想删除,请删除x='index',它将显示带有错误的唯一条。

这篇关于Python Pandas-从DataFrame按类别绘制多个条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

pandas 有从特定日期开始的按月分组的方式吗?
Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)...
2024-08-22 Python开发问题
10

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10