Мне нужно упростить временной ряд даты в pandas с представлением данных, полученных в течение дня, за секунду - PullRequest
0 голосов
/ 25 марта 2020

Это изображение помогает точно описать, что я имею в виду

Так что в основном у меня есть ряд данных, как на картинке. Значения являются записями в течение месяца с августа по сентябрь. Записи принимаются каждую секунду. Мне нужно упростить его так, чтобы я получал каждую строку, представляющую всего один день, а данные столбца каждой строки показывают начальное, максимальное, минимальное и конечное значение (точно так же, как запись на фондовом рынке). Каждая секунда захватывает данные, но мне нужно просто иметь представление в день, а не в секунду. Спасибо

1 Ответ

0 голосов
/ 25 марта 2020

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

import pandas as pd
df = pd.read_csv(file_path)
df['Dates'] = pd.to_datetime(df['time']).dt.date
df['Time'] = pd.to_datetime(df['time']).dt.time
df['value'] = value

Теперь мы можем использовать следующий фрагмент кода для извлечения начальных, максимальных, минимальных и конечных значений.

starting = []
max = []
min = []
ending = []
for i in df['Dates']:
   max.append(df[df['Dates'] == i]['value'].max())
   min.append(df[df['Dates'] == i]['value'].min())
   starting.append(df[df['Dates'] == i]['value'].iloc[0])
   ending.append(df[df['Dates'] == i]['value'].iloc[-1])

Создать новый фрейм данных:

d = {'date':df['Dates'], 'starting':starting, 'max':max, 'min':min, 'ending':ending}
df1 = pd.DataFrame(d)
print(df1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...