Измените форму словаря, чтобы создать сюжет для скрипкиPython

Программы на Python
Ответить
Anonymous
 Измените форму словаря, чтобы создать сюжет для скрипки

Сообщение Anonymous »

У меня есть некоторые данные, которые сохранены в словаре фреймов данных. Реальные данные намного больше с индексом до 3000 и более столбцов.
В конце концов я хочу сделать скрипичный график из двух столбцов в кадрах данных, но для нескольких записей словаря. В словаре в качестве ключа используется кортеж, и я хочу собрать все записи с одинаковым первым номером.

Код: Выделить всё

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}
Моя идея заключалась в том, что я мог бы перестроить его в другой словарь, а затем построить скрипичный сюжет. Скажем, что «Data_1» и «Data_4» представляют интерес. Затем я перебираю ключи в dict, как показано ниже.

Код: Выделить всё

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}
Что я затем повторяю, чтобы построить графики скрипки для Data_1 и Data_4.

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»