在 matplotlib 中将 x 轴绘制为日期

Rio*_*Rio 4 python numpy matplotlib pandas

我正在尝试对数据进行一些分析。我得到了 csv 文件,并将其转换为 Pandas 数据帧。数据看起来像这样。它有几列,但我试图将 x 轴绘制为日期列。.

熊猫数据框看起来像这样

print (df.head(10)

    cus-id        date       value_limit
0   10173         2011-06-12        455
1   95062         2011-09-11        455
2   171081        2011-07-05        212
3   122867        2011-08-18        123
4   107186        2011-11-23        334
5   171085        2011-09-02        376
6   169767        2011-07-03        34
7   80170         2011-03-23        34
8   154178        2011-10-02        34
9   3494          2011-01-01        34
Run Code Online (Sandbox Code Playgroud)

我正在尝试绘制日期数据,因为同一日期有多个值。为此,我试图将 x 坐标刻度绘制为日期。因为日期列中的最小日期是 2011-01-01,最大日期是 2012-04-20。

我试过这样的事情

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates

df = pd.read_csv('rio_data.csv', delimiter=',')
print (df.head(10))
d = []
for dat in df.date:
    # print (dat)
    d.append(datetime.strptime(df['date'], '%Y-%m-%d'))
days = dates.DayLocator()
datemin = datetime(2011, 1, 1)
datemax = datetime(2012, 4, 20) 
fig = plt.figure()
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(days)
ax.set_xlim(datemin, datemax)
ax.set_ylabel('Count values')
Run Code Online (Sandbox Code Playgroud)

但我收到此错误。

 AttributeError: 'DataFrame' object has no attribute 'date'
Run Code Online (Sandbox Code Playgroud)

我试图将日期绘制为 x 轴,它应该是这样的。 在此处输入图片说明

有人可以帮我将 x 轴绘制为日期列。我将感激不尽。

Dod*_*dge 7

将索引设置为日期时间序列

如果您将索引设置为日期时间序列,matplotlib 将为您处理 x 轴。这是您如何处理此可视化的最小示例。

简单的例子:

import pandas as pd
import matplotlib.pyplot as plt

date_time = ["2011-09-01", "2011-08-01", "2011-07-01", "2011-06-01", "2011-05-01"]
date_time = pd.to_datetime(date_time)
temp = [2, 4, 6, 4, 6]

DF = pd.DataFrame()
DF['temp'] = temp
DF = DF.set_index(date_time)

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3)
plt.xticks(rotation=90)
plt.plot(DF)
Run Code Online (Sandbox Code Playgroud)

这将产生一个如下所示的图:

在此处输入图片说明

设置索引使事情变得更容易

重要的一点是,将 DataFrame 索引设置为日期时间序列允许 matplotlib 在没有太多帮助的情况下处理时间序列数据上的 x 轴。

按照此链接详细说明间距轴刻度(特别是日期)