Подтвердить что ты не робот

Временной график из данных CSV (отметка времени и событий): постоянная x-метки

(Этот вопрос может быть прочитан один, но является продолжением: Timeseries из CSV-данных (отметка времени и событий))

Я хотел бы визуализировать CSV-данные (из 2-х файлов), как показано ниже, с помощью представления timeseries, используя модуль python pandas (см. ссылки ниже).

Пример данных 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, и я пытаюсь показать сумму событий за каждый день в наборе данных. Второй набор данных, 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?)

script:

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) введите описание изображения здесь

Ссылки, которые я попытался выполнить:

Любая помощь очень ценится.

4b9b3361

Ответ 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()

приводит к

введите описание изображения здесь

который является искомым.