Sto provando a generare una griglia di sottotrame basata su un oggetto groupby di Pandas. Vorrei che ogni grafico fosse basato su due colonne di dati per un gruppo dell'oggetto groupby. Falso set di dati:Stampa di gruppi di panda tramite le sottotrame e il loop
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
Ho provato il codice seguente:
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")
ma genera 4 sottotrame identici con tutti i dati tracciati su ciascun (vedi esempio uscita inferiore):
mi piacerebbe fare qualcosa di simile alla seguente per risolvere questo problema:
for i,j in grouped:
j.plot(x='C1',y='C3',ax=axs)
next(axs)
ma ottengo questo errore
AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'
avrò una serie dinamica di gruppi nell'oggetto GroupBy voglio tracciare, e molti più elementi di dati falsi che ho fornito. Questo è il motivo per cui ho bisogno di una soluzione elegante e dinamica e ogni gruppo di dati del gruppo è tracciato su una sottotrama separata.
Questo ha funzionato in modo fantastico grazie! – fireitup