我正在从Excel电子表格中读取数据。每个场景(S1到S6)都有多个观测值。当我将数据读入我的数据框df时,它看起来如下:
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
我想创建一个小提琴图,其中每个场景都有一个不同的小提琴。我对Pandas和数据框架很陌生,尽管在过去的一天里进行了大量的研究和测试,但我仍然无法找到一种优雅的方法来传递一些引用到我的数据框架(将其拆分为每个场景的不同系列),以便在axes.violinplot()语句中使用。例如,我尝试了以下内容,但它不起作用。在我的axes.violinplot语句上,我得到一个“ValueError:无法将大小为1752的序列复制到具有维度2的数组轴”的错误。
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()