首页 > 解决方案 > 当我们在 groupby 之后绘制数据框时,为什么 pandas 会为每个组生成一个图形句柄?

问题描述

我有一个看起来像这样的熊猫数据框:

date    region  Re
2020-02-25  AG  1.36    
2020-02-26  AG  1.53    
2020-02-27  AG  1.6 
2020-02-28  AG  1.88    
2020-02-29  AG  2.09    
2020-02-25  FR  2.33    
2020-02-26  FR  2.54    
2020-02-27  FR  2.61    
2020-02-28  FR  2.68    
2020-02-29  FR  2.69

现在,如果我运行:

import pandas as pd

# Load the data from clipboard
df = pd.read_clipboard()

# Set a new index
df.set_index('date', inplace=True)

# Plot the result grouped by region
h = df.groupby('region')['Re'].plot(rot=90)

我明白了我的情节。但是h是一个包含两个AxesSubPlot对象的熊猫系列:

region
AG    AxesSubplot(0.125,0.125;0.775x0.755)
FR    AxesSubplot(0.125,0.125;0.775x0.755)
Name: Re, dtype: object

因此,例如,如果我想更改ylim我不能简单地写h.set_ylim((0,3)). 为什么 pandas 为每个组生成一个图形句柄,它为什么有用?set_ylim在这种情况下我什至可以使用该方法吗?

为了解决这个问题,我可以直接在函数ylim中传递一个新参数,比如,但我仍然不明白为什么 pandas为每个组创建一个对象。在这种情况下,文档并没有真正的帮助。ylimplot()df.plot(ylim=(0,2))AxesSubPlot

标签: pythonpandasmatplotlib

解决方案


这是绘制熊猫 Groupby 时的正常行为。

我建议你使用 Seaborn,一个非常好的库来绘制分类数据,它会自动执行分类分组。

import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
sns.lineplot(data=df, x="date", y="Re", hue="region", ax=ax)

Seaborn 基于 Matplotlib,figax是简单的 Matplotlib Figure 和 Axes 对象,您可以随意编辑它们!


推荐阅读