【问题标题】:plot data from two DataFrames with different dates绘制来自具有不同日期的两个 DataFrame 的数据
【发布时间】:2020-09-25 23:36:19
【问题描述】:

我正在尝试在同一个图中绘制来自两个数据框的数据。问题是我在 x 轴上使用日历日期,而 pandas 显然不喜欢这样。下面的代码显示了我正在尝试做的最小示例。有两个数据集具有与日历日期相关的一些数值。第二个数据帧上的数据在第一个数据帧上的数据之后。我想用适当的日期和不同的线条颜色将它们绘制在同一个图中。问题是pandas.DataFrame.plot 方法在图表中加入了两个数据框的开始日期,从而使可视化变得无用。

import pandas as pd
import matplotlib.pyplot as plt

df1 = pd.DataFrame({'date': ['2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13', '2020-03-14', '2020-03-15'],
                    'number': [1, 2, 3, 4, 5, 6]})

df2 = pd.DataFrame({'date': ['2020-03-16', '2020-03-17', '2020-03-18', '2020-03-19'],
                    'number': [7, 6, 5, 4]})


ax = df1.plot(x='date', y='number', label='beginning')
df2.plot(x='date', y='number', label='ending', ax=ax)

plt.show()

创建的图形如下所示:

有什么办法可以解决这个问题吗?我还可以让日期显示在倾斜的 x 轴上,这样它们也更清晰吗?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您需要使用pd.to_datetime 将“日期”转换为日期时间数据类型:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    df1 = pd.DataFrame({'date': ['2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13', '2020-03-14', '2020-03-15'],
                        'number': [1, 2, 3, 4, 5, 6]})
    
    df2 = pd.DataFrame({'date': ['2020-03-16', '2020-03-17', '2020-03-18', '2020-03-19'],
                        'number': [7, 6, 5, 4]})
    
    df1['date'] = pd.to_datetime(df1['date'])
    df2['date'] = pd.to_datetime(df2['date'])
    ax = df1.plot(x='date', y='number', label='beginning')
    df2.plot(x='date', y='number', label='ending', ax=ax)
    
    plt.show()
    

    输出:

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 2021-11-10
      • 2019-06-06
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多