簡體   English   中英

將x軸作為matplotlib中的日期繪制

[英]plot x-axis as date in matplotlib

我正在嘗試對數據進行一些分析。 我有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

我正在嘗試繪制日期數據,因為同一日期有多個值。 為此我試圖將x-asis刻度作為日期。 由於日期欄中的最短日期為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')

但是我收到了這個錯誤。

 AttributeError: 'DataFrame' object has no attribute 'date'

我試圖將日期繪制為x軸,它應該看起來像這樣。 在此輸入圖像描述

有人可以幫我畫出x軸作為日期列。 我會很感激。

將索引設置為datetime系列

如果將索引設置為datetime系列,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)

這將產生如下圖:

在此輸入圖像描述

設置索引會使事情變得更容易

重要的一點是,將DataFrame索引設置為datetime系列允許matplotlib在時間序列數據上處理x軸而沒有太多幫助。

有關間距軸刻度(特別是日期)的詳細說明,請點擊此鏈接

你錯過了'第12行。它導致了SyntaxError。

這應該糾正錯誤。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM