python画熊猫代码_python – 使用子图和循环绘制Pandas groupby组

我正在尝试基于Pandas groupby对象生成子图的网格.我希望每个绘图都基于groupby对象的一组的两列数据.假数据集:

C1,C2,C3,C4

1,12,125,25

2,13,25,25

3,15,98,25

4,12,77,25

5,15,889,25

6,13,56,25

7,12,256,25

8,12,158,25

9,13,158,25

10,15,1366,25

我试过以下代码:

import pandas as pd

import csv

import matplotlib as mpl

import matplotlib.pyplot as plt

import math

#Path to CSV File

path = "..\\fake_data.csv"

#Read CSV into pandas DataFrame

df = pd.read_csv(path)

#GroupBy C2

grouped = df.groupby('C2')

#Figure out number of rows needed for 2 column grid plot

#Also accounts for odd number of plots

nrows = int(math.ceil(len(grouped)/2.))

#Setup Subplots

fig, axs = plt.subplots(nrows,2)

for ax in axs.flatten():

for i,j in grouped:

j.plot(x='C1',y='C3', ax=ax)

plt.savefig("plot.png")

但它会生成4个相同的子图,每个子图上都绘制了所有数据(参见下面的示例输出):

我想做以下的事情来解决这个问题:

for i,j in grouped:

j.plot(x='C1',y='C3',ax=axs)

next(axs)

但是我得到了这个错误

AttributeError: ‘numpy.ndarray’ object has no attribute ‘get_figure’

我将在我要绘制的groupby对象中拥有动态数量的组,以及比我提供的假数据更多的元素.这就是为什么我需要一个优雅的动态解决方案,并且每个组数据集都绘制在一个单独的子图上.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值