Skip to main content
 首页 » 编程设计

python pandas 时间线图

2025年05月04日26luoye11

我有以下数据框

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['日期'] = plt.date2num(ad_data.date)

然后我要绘制时间线 plot_date(data_df.dates, data_df.shown)

这不起作用,因为我没有正确转换日期。

请您参考如下方法:

您可以使用:

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 
... 
... 

如有必要,将列 date 转换为 to_datetime然后 set_index来自 date 列:

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 
... 
... 

绘制系列 data_df['value'] by 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()