В конце концов я хочу сделать скрипичный график из двух столбцов в кадрах данных, но для нескольких записей словаря. В словаре в качестве ключа используется кортеж, и я хочу собрать все записи с одинаковым первым номером.
Код: Выделить всё
dict =
{(5,1): Data_1 Data_2 Data_3 Data_4
0 0.235954 0.069884 0.170902 0.888658
1 0.739301 0.236283 0.496346 0.591893
2 0.443639 0.458250 0.399278 0.381895,
(5,2): Data_1 Data_2 Data_3 Data_4
0 0.806812 0.070355 0.526866 0.283107
1 0.224321 0.943047 0.251339 0.409486
2 0.504660 0.579285 0.600688 0.307315,
(7,3): Data_1 Data_2 Data_3 Data_4
0 0.415159 0.125926 0.398494 0.202393
1 0.834547 0.401789 0.587857 0.395692
2 0.170972 0.759203 0.130558 0.035602,
(7,4): Data_1 Data_2 Data_3 Data_4
0 0.923432 0.759154 0.075643 0.983739
1 0.622174 0.126699 0.287721 0.738550
2 0.185039 0.783596 0.939428 0.108639}
Код: Выделить всё
new_dict = {}
for col in ['Data_1','Data_4']:
df = pd.DataFrame()
for i in [5,7]:
temp = []
for key, value in dict.items():
if key[0]==i:
temp.extend(value[col])
df[i] = temp
new_dict[col] = df
Код: Выделить всё
new_dict =
{'Data_1': 5 7
0 0.235954 0.415159
1 0.739301 0.834547
2 0.443639 0.170972
3 0.806812 0.923432
4 0.224321 0.622174
5 0.504660 0.185039,
'Data_4': 5 7
0 0.888658 0.202393
1 0.591893 0.395692
2 0.381895 0.035602
3 0.283107 0.983739
4 0.409486 0.738550
5 0.307315 0.108639}
Код: Выделить всё
for key, value in new_dict.items():
fig, ax = plt.subplots()
ax.violinplot(value, showmeans= True)
ax.set(title = key, xlabel = 'Section', ylabel = 'Value')
ax.set_xticks(np.arange(1,3), labels=['5','7'])
Подробнее здесь: https://stackoverflow.com/questions/793 ... iolin-plot
Мобильная версия