2016-08-30 4 views
2

У меня есть файл csv с некоторыми данными временных рядов. Я создаю фрейм данных как таковой:Как построить даты на оси x с помощью Seaborn (или matplotlib)

df = pd.read_csv('C:\\Desktop\\Scripts\\TimeSeries.log') 

Когда я называю df.head(6), появляются данные следующим образом:

Company  Date     Value 
ABC   08/21/16 00:00:00 500 
ABC   08/22/16 00:00:00 600 
ABC   08/23/16 00:00:00 650 
ABC   08/24/16 00:00:00 625 
ABC   08/25/16 00:00:00 675 
ABC   08/26/16 00:00:00 680 

Тогда я следующее, чтобы заставить столбец «Дата» в формат даты и времени:

df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce') 

Интересно, что я вижу "pandas.core.series.Series", когда я звоню следующее:

type(df['Date']) 

Наконец, я называю следующее, чтобы создать сюжет:

%matplotlib qt 
sns.tsplot(df['Value']) 

На оси абсцисс слева направо, я вижу целые числа в диапазоне от 0 до количества строк в кадре данных. Как добавить столбец «Дата» в качестве значений оси X в этот график?

Спасибо!

+0

Попробуйте установить столбец 'Дата', как индекс с 'df.set_index (...)' – pbreach

+0

Или поместить 'df' в качестве первого аргумента, то задайте соответственно значения 'time' и' value' kwargs. – pbreach

ответ

4

Не уверен, что tsplot - лучший инструмент для этого. Вы можете просто использовать:

df[['Date','Value']].set_index('Date').plot() 
2

использовать параметр time для tsplot

из документации:

time : string or series-like 
    Either the name of the field corresponding to time in the data DataFrame or x values for a plot when data is an array. If a Series, the name will be used to label the x axis. 
#Plot the Value column against Date column 
sns.tsplot(data = df['Value'], time = df['Date']) 

Однако tsplot используется для построения таймсерий в то же время окна и Differnet условий. Для построения одного таймера вы также можете использовать plt.plot(time = df['Date'], data = df['Value'])

0

Я думаю, что уже слишком поздно.

Во-первых, вы должны заметить, что столбец «Дата» представляет собой серию типа «Дата и время», так что вы должны сделать, чтобы получить «даты» часть:

df['Date'] = df['Date'].map(lambda x:x.date()) 

Теперь группа ваш кадр данных по ' Date ', а затем сбросить индекс, чтобы сделать «Date» столбец (а не индекс).

Затем вы можете использовать plt.plot_date

df_groupedby_date = df.groupby('Date').count() 
df_groupedby_date.reset_index(inplace=True) 
plt.plot_date(x=df_groupedby_date['Date'], y=df_groupedby_date['Value'])