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

Участок pandas дат в matplotlib

У меня есть файл данных фиксированной ширины, содержащий даты, но когда я пытаюсь нанести на график данные, даты не отображаются должным образом на оси X.

Мои файлы выглядят как

2014-07-10 11:49:14.377102    45
2014-07-10 11:50:14.449150    45
2014-07-10 11:51:14.521168    21
2014-07-10 11:52:14.574241     8
2014-07-10 11:53:14.646137    11
2014-07-10 11:54:14.717688    14

так далее

и я использую панды, чтобы прочитать в файле

#! /usr/bin/env python
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_fwf('myfile.log',header=None,names=['time','amount'],widths=[27,5])
data.time = pd.to_datetime(data['time'], format='%Y-%m-%d %H:%M:%S.%f')
plt.plot(data.time,data.amount)
plt.show()

Итак, я полагаю, что проблема здесь в преобразовании панд в matplotlib datetime. Как можно выполнить преобразование?

Я также попробовал с пандами напрямую:

data.time = pd.to_datetime(data['time'], format='%Y-%m-%d %H:%M:%S.%f')
data.set_index('time') # Fails!!
data.time.plot()

но это не с

Ошибка типа: пустая "серия": нет числовых данных для построения

4b9b3361

Ответ 1

Если вы используете список, содержащий имя столбца вместо строки, data.set_index будет работать

Ниже следует указать даты по оси x:

#! /usr/bin/env python
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_fwf('myfile.log',header=None,names=['time','amount'],widths=[27,5])
data.time = pd.to_datetime(data['time'], format='%Y-%m-%d %H:%M:%S.%f')
data.set_index(['time'],inplace=True)
data.plot()

#OR 
plt.plot(data.index, data.amount)