Ich versuche, ein Raster von Subplots basierend auf einem Pandas groupby Objekt zu generieren. Ich möchte, dass jedes Diagramm auf zwei Datenspalten für eine Gruppe der Gruppe basiert. Fälschungs-Datensatz:Plotten Pandas groupby Gruppen mit Subplots und Schleife
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
Ich habe den folgenden Code versucht:
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")
sondern erzeugt 4 identische Nebenhandlungen mit allen Daten auf jedem (siehe Beispiel Ausgangs unten) aufgetragen:
ich möchte etwas tun, wie folgt aus diesen zu beheben:
for i,j in grouped:
j.plot(x='C1',y='C3',ax=axs)
next(axs)
aber ich bekomme diese Fehlermeldung
AttributeError: 'numpy.ndarray' object has no attribute 'get_figure'
ich eine dynamische Anzahl von Gruppen im groupby bezwecken will ich darstellen mag, und viele mehr Elemente als die gefälschten Daten, die ich zur Verfügung gestellt habe. Deshalb brauche ich eine elegante, dynamische Lösung, und jeder Gruppendatensatz wird auf einem separaten Unterplot dargestellt.
Das hat fantastisch funktioniert danke! – fireitup