2016-10-24 51 views
1

我有以下數據幀蟒大熊貓時間線圖

data_df = 
date   value 
2016-01-15 1555 
2016-01-16 1678 
2016-01-17 1789 
... 

我想創建一個時間軸圖表,與日期爲x軸

我導入可視化模塊

import matplotlib.pyplot as plt 
%matplotlib inline 
import vincent as vin 
import seaborn as sb 

我嘗試添加一列以格式化日期 data_df ['dates'] = plt.date2num(ad_data.date)

然後我想繪製時間線 plot_date(data_df.dates,data_df.shown)

這不起作用,因爲我沒有正確地轉換日期。

回答

2

您可以使用:

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.ticker as ticker 

#sample data  
start = pd.to_datetime('2016-01-15') 
rng = pd.date_range(start, periods=100) 

data_df = pd.DataFrame({'date': rng, 'value': range(100)}) 
data_df.value = data_df.value * 15/data_df.date.dt.day 
print (data_df) 
     date  value 
0 2016-01-15  0.000000 
1 2016-01-16  0.937500 
2 2016-01-17  1.764706 
3 2016-01-18  2.500000 
4 2016-01-19  3.157895 
5 2016-01-20  3.750000 
6 2016-01-21  4.285714 
7 2016-01-22  4.772727 
8 2016-01-23  5.217391 
9 2016-01-24  5.625000 
10 2016-01-25  6.000000 
... 
... 

如果有必要將列dateto_datetime然後set_indexdate柱:

data_df.date = pd.to_datetime(data_df.date) 
data_df.set_index('date', inplace=True) 
print (data_df) 
        value 
date     
2016-01-15  0.000000 
2016-01-16  0.937500 
2016-01-17  1.764706 
2016-01-18  2.500000 
2016-01-19  3.157895 
2016-01-20  3.750000 
2016-01-21  4.285714 
2016-01-22  4.772727 
2016-01-23  5.217391 
2016-01-24  5.625000 
2016-01-25  6.000000 
... 
... 

情節Seriesdata_df['value']通過plot然後設置軸的形式x

ax = data_df['value'].plot() 

ticklabels = data_df.index.strftime('%Y-%m-%d') 
ax.xaxis.set_major_formatter(ticker.FixedFormatter(ticklabels)) 
plt.show() 

graph

+0

完美的答案 - 謝謝 – jeangelj

0

如果您的日期是日期時間的事情(如果不是,請使用pd.to_datetime(),它應該識別格式),它應該通過只調用date_df.plot()工作。請確保它被設置爲指數(所以使用date_df.index = date_df['date']