【问题标题】:What is the best way to plot a dict `{ "label" : [ ...dates... ], [ ...values... ] }`?绘制 dict `{ "label" : [ ...dates... ], [ ...values... ] }` 的最佳方法是什么?
【发布时间】:2020-04-08 19:14:43
【问题描述】:

我有一个字典,每个键包含两列:日期列表和值列表

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)

绘制我的 dict 的最佳方法是什么?为什么在我的情况下,行会回到日期?

【问题讨论】:

  • 我猜你没有正确格式化日期。示例数据中的“日期”格式无效。否则,您没有提供可重现的示例,显示所有步骤。
  • @TrentonMcKinney,真的。谢谢您的帮助。但即使我按照你在下面的建议做了之后,我的日期还是会感到困惑,而且我的图表看起来更糟。出于某种原因,月份编号与某些行中的日期编号混淆,这正是我事先得到的......所以我猜这是一些日期转换问题?
  • 尝试更改pd.to_datetimedayfirst 参数(例如pd.to_datetime(data[key][0], dayfirst=True) 或者您可以指定to_datetimeformat 参数。

标签: python list dataframe dictionary plot


【解决方案1】:

使用dictpandas.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]]}

数据帧字典

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多