График временных рядов из данных CSV( метка времени и события): константа X-метки
(этот вопрос можно прочитать в одиночестве, но является продолжением: Timeseries из данных CSV (отметка времени и события))
Я хотел бы визуализировать данные CSV (из 2 файлов), как показано ниже, представлением timeseries, используя модуль pandas python (см. ссылки ниже).
примеры данных df1:
TIMESTAMP eventid
0 2017-03-20 02:38:24 1
1 2017-03-21 05:59:41 1
2 2017-03-23 12:59:58 1
3 2017-03-24 01:00:07 1
4 2017-03-27 03:00:13 1
столбец "eventid" всегда содержит значение 1, и я пытаюсь показать сумму событий для каждого дня в наборе данных. 2-е dataset, df0, имеет аналогичную структуру, но содержит только нули:
примеры данных df0:
TIMESTAMP eventid
0 2017-03-21 01:38:24 0
1 2017-03-21 03:59:41 0
2 2017-03-22 11:59:58 0
3 2017-03-24 01:03:07 0
4 2017-03-26 03:50:13 0
метка оси x показывает только одну и ту же дату, и мой вопрос: как можно показать разные даты? (Что заставляет одну и ту же дату отображаться несколько раз на метках x?)
скрипт до сих пор:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
df1 = pd.read_csv('timestamp01.csv', parse_dates=True, index_col='TIMESTAMP')
df0 = pd.read_csv('timestamp00.csv', parse_dates=True, index_col='TIMESTAMP')
f, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(df0.resample('D').size())
ax1.set_xlim([pd.to_datetime('2017-01-27'), pd.to_datetime('2017-04-30')])
ax1.xaxis.set_major_formatter(ticker.FixedFormatter
(df0.index.strftime('%Y-%m-%d')))
plt.setp(ax1.xaxis.get_majorticklabels(), rotation=15)
ax2.plot(df1.resample('D').size())
ax2.set_xlim([pd.to_datetime('2017-03-22'), pd.to_datetime('2017-04-29')])
ax2.xaxis.set_major_formatter(ticker.FixedFormatter(df1.index.strftime
('%Y-%m-%d')))
plt.setp(ax2.xaxis.get_majorticklabels(), rotation=15)
plt.show()
вывод: (https://www.dropbox.com/s/z21koflkzglm6c3/figure_1.png?dl=0)
ссылки у меня пытался следить:
http://pandas.pydata.org/pandas-docs/stable/visualization.html
Pandas timeseries настройка графика x-axis основные и второстепенные тики и метки
любая помощь очень ценится.
1 ответов
делая пример воспроизводимым, мы можем создать следующий текстовый файл (data/timestamp01.csv
):
TIMESTAMP;eventid
2017-03-20 02:38:24;1
2017-03-21 05:59:41;1
2017-03-23 12:59:58;1
2017-03-24 01:00:07;1
2017-03-27 03:00:13;1
(для data/timestamp00.csv
). Затем мы можем прочитать их в
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
df1 = pd.read_csv('data/timestamp01.csv', parse_dates=True, index_col='TIMESTAMP', sep=";")
df0 = pd.read_csv('data/timestamp00.csv', parse_dates=True, index_col='TIMESTAMP', sep=";")
замышляет
f, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot(df0.resample('D').size())
ax2.plot(df1.resample('D').size())
plt.setp(ax1.xaxis.get_majorticklabels(), rotation=30, ha="right")
plt.setp(ax2.xaxis.get_majorticklabels(), rotation=30, ha="right")
plt.show()
результаты
который является желаемым сюжетом.