Каков наилучший способ построения диктата `{" label ": [... date ...], [... values ​​...]}`? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть dict, который содержит два столбца для каждого ключа: список дат и список значений

data = {"Key_1" : [ [ 10-1-20, 11-1-20, ...], [ 1.0, 2.1, ... ], ],
        "Key_2" : [ [ 11-1-20, 12-1-20, ...], [ 3.2, 4.1, ... ], ],
        "Key_3" : [ [ 11-1-20, 13-1-20, ...], [ 5.342, 2.124, ... ], ],
        "Key_4" : [ [ 10-1-20, 12-1-20, ...], [ 2.123, 4.321, ... ], ]}

отсортированные даты (проверено). Тем не менее, когда я делаю это

for l in matrix:
    ax.plot(matrix[l][0], matrix[l][1], label=l)

I get complete mess

Каков наилучший способ изобразить мой диктат и почему в моем случае строки go снова включаются даты

1 Ответ

1 голос
/ 08 апреля 2020

Используйте dict из pandas.DataFrames

Данные

data = {"Key_1" : [[ '10-1-20', '11-1-20'], [ 1.0, 2.1]],
        "Key_2" : [[ '11-1-20', '12-1-20'], [ 3.2, 4.1]],
        "Key_3" : [[ '11-1-20', '13-1-20'], [ 5.342, 2.124]],
        "Key_4" : [[ '10-1-20', '12-1-20'], [ 2.123, 4.321]]}

Dict of DataFrames

import pandas as pd

df_dict = {key: pd.DataFrame({'dates': pd.to_datetime(data[key][0], dayfirst=True),
                              'data': data[key][1]}) for key in data.keys()}

for k, v in df_dict.items():
    print(f'DataFrame {k}:\n{v}\n')

DataFrame Key_1:
       dates  data
0 2020-10-01   1.0
1 2020-11-01   2.1

DataFrame Key_2:
       dates  data
0 2020-11-01   3.2
1 2020-12-01   4.1

DataFrame Key_3:
       dates   data
0 2020-11-01  5.342
1 2020-01-13  2.124

DataFrame Key_4:
       dates   data
0 2020-10-01  2.123
1 2020-12-01  4.321

График df_dict

import matplotlib.pylot as plt

for k, v in df_dict.items():
    plt.plot(v['dates'], v['data'], label=k)

plt.xticks(rotation=45)
plt.grid(True)
plt.legend()
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...