Сюжет о разнице между точками данных, импортированными с помощью Pandas, и преобразованием значений времени - PullRequest
0 голосов
/ 29 июня 2018

Я относительно новичок в Python (в процессе самообучения), и, таким образом, это довольно крутая кривая обучения, но я очень рад, что справился с этим. У меня есть набор точек данных из эксперимента в Excel, один столбец - время (в формате 00: 00: 00: 000), а второй столбец - измеренный параметр.

Я использую pandas для чтения документа Excel, чтобы получить из него график со временем вдоль оси x и измеряемой переменной вдоль оси y. Однако, когда я строю данные, столбец времени становится номером точки данных (то есть 00: 00: 00: 000 - 00: 05: 40: 454 становится 0 - 2000), и я не уверен, почему. Кто-нибудь может посоветовать, пожалуйста, как это исправить?

Во-вторых, я хотел бы создать участок, который показывает разницу между значениями y как функцию времени, в основном градиент, чтобы показать изменение. Есть ли способ легко вычислить это и отобразить с помощью панд?

Вот мой код, пожалуйста, простите, насколько он прост!

import pandas as pd
import matplotlib.pyplot as plt
import pylab

df = pd.read_excel('rest.xlsx', 'Sheet1')

df.plot(legend=False, grid=False)

plt.show()
plt.savefig('myfig') 

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Попробуйте:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('rest.xlsx', 'Sheet1')


X = df['Time'].tolist()#If the time column  called 'Time'

Y = df['Parameter'].tolist()#If the Parameter column called 'Parameter'

plt.plot(X,Y)

plt.gcf().autofmt_xdate()
plt.show()
0 голосов
/ 29 июня 2018

С помощью matplotlib вы можете создать фигуру с двумя осями и назвать ее, например, ax_df и ax_diff:

import matplotlib.pyplot as plt

fig, [ax_df, ax_diff] = plt.subplots(nrows=2, ncols=1, sharex=True)

sharex=True указывает на использование одной и той же оси X для обоих участков.

При вызове plot в DataFrame вы можете перенаправить вывод на ось, указав оси с помощью ключевого аргумента ax:

df.plot(ax=ax_df)
df.diff(1).plot(ax=ax_diff)
plt.show()
0 голосов
/ 29 июня 2018

Если вы только что прочитали файл Excel, pandas создаст RangeIndex, начиная с 0. Чтобы использовать информацию о вашем времени из файла Excel в качестве индекса, вы должны указать имя (в виде строки) столбца времени с ключом аргумент ключевого слова index_col в вызове read_excel:

df = pd.read_excel('rest.xlsx', 'Sheet1', index_col='name_of_time_column') 

Просто замените name_of_time_column фактическим именем столбца, который содержит информацию о времени.
(Надеемся, что pandas автоматически проанализирует информацию о времени для индекса Timetime, но ваш формат должен быть в порядке.) На графике будет использоваться индекс Datetime на оси X. Чтобы получить разницу во времени между каждой точкой данных, используйте метод diff с аргументом 1 в вашем DataFrame:

difference = df.diff(1)
difference.plot(legend=False, grid=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...