有没有一种方法可以可视化时间序列数据,从而在x轴上以python的年月格式显示刻度?

时间:2019-07-01 06:02:26

标签: python pandas matplotlib time-series data-visualization

我试图绘制每天的股票收盘价数据,但在x轴上,我没有在xtick上得到标签,而不是年月格式

我尝试在单独的数据框中使用“日期”和“收盘价”列,然后尝试绘制它们。

我有与此相似的数据框

Date        Close Price
2017-05-15  912.20
2017-05-16  894.70
2017-05-17  887.05
2017-05-18  871.35
2017-05-19  852.40
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label

plt.show()

the output should have xtick in year-month format

3 个答案:

答案 0 :(得分:1)

只需使用熊猫to_datetime()函数进行隐蔽

df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])
df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
plt.title('Trend in last two years')
plt.ylabel('Close Price') # add y-label
plt.xlabel('Date') # add x-label

plt.show()

enter image description here

答案 1 :(得分:1)

如果您希望每个月仅显示一次报价,请尝试以下操作:

    import matplotlib.dates as mdates

    df_sorted['Date'] = pd.to_datetime(df_sorted['Date'])

    ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
    plt.title('Trend in last two years')
    plt.ylabel('Close Price') # add y-label
    plt.xlabel('Date') # add x-label

    months = mdates.MonthLocator()
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))

    plt.show()

enter image description here

答案 2 :(得分:0)

您需要使用DateFormatter来获取所需的输出格式。尝试此操作

        from matplotlib import dates

        df_sorted.Date = pd.to_datetime(df.Date)

        ax = df_sorted.plot(x="Date", y="Close Price", figsize=(8, 5))
        plt.title('Trend in last two years')
        plt.ylabel('Close Price') # add y-label
        plt.xlabel('Date') # add x-label

        ax.set(xticks=df.Date.values)
        ax.xaxis.set_major_formatter(dates.DateFormatter("%Y-%m-%d"))
        plt.show()