2016-10-24 3 views
1

У меня есть следующий кадр данныхпитона панда время линейного график

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

Я хотел бы создать на временную шкалу график, с датой в качестве оси х

Я импортировать модули визуализации

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)

Это не работает, так как я не преобразование даты правильно.

ответ

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

При необходимости преобразовать столбец 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 
... 
... 

Участок 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']

Смежные вопросы