Mam dane, które odczytuję z arkusza kalkulacyjnego Excel. Dane mają szereg obserwacji dla każdego z sześciu scenariuszy, od S1 do S6. Kiedy czytam w danych do mojego dataframe df, wygląda następująco:Panda danych procesowych na skrzypce
Scenario LMP
0 S1 -21.454544
1 S1 -20.778094
2 S1 -20.027689
3 S1 -19.747170
4 S1 -20.814405
5 S1 -21.955406
6 S1 -23.018960
...
12258 S6 -34.089906
12259 S6 -34.222814
12260 S6 -26.712010
12261 S6 -24.555973
12262 S6 -23.062616
12263 S6 -20.488411
Chcę stworzyć violinplot że ma inny skrzypcach dla każdej z sześciu scenariuszy. Jestem nowy w Pandach i modelach danych, i pomimo wielu badań/testów przeprowadzonych w ciągu ostatniego dnia, nie jestem w stanie wymyślić eleganckiego sposobu przekazania referencji do mojej ramki danych (aby podzielić ją na różne serie dla każdego scenariusza), które będą działać w instrukcji axes.violinplot(). Na przykład wypróbowałem następujące, które nie działa. Dostaję "ValueError: nie mogę skopiować sekwencji o rozmiarze 1752 do osi tablicy z wymiarem 2" w mojej instrukcji axes.violinplot.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# load data into a dataframe
df = pd.read_excel('Modeling analysis charts.xlsx',
sheetname='lmps',
parse_cols=[7,12],
skiprows=0,
header=1)
fontsize = 10
fig, axes = plt.subplots()
axes.violinplot(dataset = [[df.loc[df.Scenario == 'S1']],
[df.loc[df.Scenario == 'S2']],
[df.loc[df.Scenario == 'S3']],
[df.loc[df.Scenario == 'S4']],
[df.loc[df.Scenario == 'S5']],
[df.loc[df.Scenario == 'S6']]
]
)
axes.set_title('Day Ahead Market')
axes.yaxis.grid(True)
axes.set_xlabel('Scenario')
axes.set_ylabel('LMP ($/MWh)')
plt.show()
@ImportanceOfBeingErnest Ach, używałem minus kiedy próbuje to (jako proof of concept) z cała kolumna danych nieparametrycznych (df.iloc [:, 1]). W końcu muszę sprawić, by wartości danych były całkowicie przeciwne do tego, czym są, ale mogę to później rozwiązać. Na razie. Nadal dostaję nowy błąd, ale zaktualizuję wpis, aby to odzwierciedlić. Usuwam także pozycję, ponieważ domyślnie powinno to być w porządku. –