Как я могу рассчитать максимальное минимальное значение, среднее значение и стандартное отклонение переменной каждый раз - PullRequest
0 голосов
/ 15 октября 2019

У меня есть данные 30 дней температуры и других 5 переменных, я уже разделил их и получаю каждый день как переменную (день1, день2, день3, ....., день30), ПЕРВАЯ ЧАСТЬ работыэто построить графики по отдельности, а затем наложить на график 30 дней и увидеть образец поведения, затем во ВТОРОЙ ЧАСТИ мне нужно вычислять максимальное и минимальное значение, среднее значение и стандартное отклонение переменной температуры каждые 10 минут для каждогодень, получите приблизительно 144 значения за каждый день. Я работаю с данными .txt по следующей ссылке: mega.nz / #! CDQGCISJ! LUD9JhJIOVGyhmS8iyHQo6x9V9KWUdfR0_T882PAv0c каждый день выглядит так:

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

И мне нужно рассчитать (минимальное и максимальное значение T, среднее значение и стандартное отклонение каждые 10 минут до конца дня и сделать так, как в остальные 29 дней). Я хочу, чтобы Python подсчитал минуты и сделалэто:

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

и код, который у меня есть, следующий, только с первой частью (код для построения графика отдельно и наложениязаговор с 30 днями) мне нужна помощь для:

import pandas as pd
from datetime import date
import datetime as dt
import calendar
import numpy as np
import pylab as plt 
import matplotlib.ticker as ticker
import seaborn as sns

datos = pd.read_csv("Jun2019.txt", sep = ',', names=('Fecha', 'Hora', 'RADNETA', 'RADCORENT', 'RADCORSAL', 'RADINFENT', 'RADINFSAL', 'TEMP'))

datos['Hora'] = datos['Hora'].str[:9] **#Use this part to get rid of the miliseconds(mm.xxxx)**
datos['Hora']

Dia01Jun2019 = datos[datos['Fecha'] == "2019-06-01"] 

tiempo01=Dia01Jun2019['Hora']
temp01=Dia01Jun2019['TEMP']

imagen = plt.figure(figsize=(25,10))
plt.plot(tiempo01,temp01)
plt.xticks(np.arange(0, 54977, 7000)) 
plt.xlabel("Tiempo (H:M:S)(Formato 24 Horas)")
plt.ylabel("Temperatura (K)")
plt.title("Día 01 Jun 2019")
plt.show()
imagen.savefig('D1JUN2019')

Код повторяется для каждого дня, только то, что я не помещаю сюда, потому что это долго, а затем часть наложения (кредиты пользователю сообщества Mig B)это помогло мне со следующим кодом):

imagen = plt.figure(figsize=(25,10))

for day in [1,2,3,4,5,6,8,11,12,13,14,15,16,17,18,19,20,23,26,27,28,30]:
    dia = datos[datos['Fecha'] == "2019-06-"+(f"{day:02d}")]
    tiempo= pd.to_datetime(dia['Hora'], format=' %H:%M:%S').dt.time
    temp= dia['TEMP']
    plt.plot(tiempo, temp) #, color = 'red' )# 

plt.xlabel("Tiempo (H:M:S)(Formato 24 Horas)")
plt.ylabel("Temperatura (K)")
plt.title("Temperatura Jun 2019")
plt.show()
imagen.savefig('TEMPJUN2019')

И этот код пока что у меня нет, и у меня нет идеи рассчитать Вторую часть, я ценю любую помощь, чтобы сделатьвторая часть, для записи цикл for day in [1,2,3,4,5,6,8,11,12,13,14,15,16,17,18,19,20,23,26,27,28,30]: Я пропускаю несколько дней, потому что у них были проблемы с измерениями.

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

Также кто-то спрашивает что-то подобное здесь, если это поможет в качестве руководства Сгруппируйтезначения для определенного промежутка времени и рассчитать среднее значение Просто чтобы он имел данные каждые 10 минут и хотел, чтобы среднее значение каждые 3 часа получало 8 значений за день, И в моем случае у меня есть данные каждые приблизительно 2 минуты, хочу среднее значениекаждые 10 минут и получите приблизительно 144 значения для дня.

1 Ответ

0 голосов
/ 15 октября 2019
df.iloc[[1,2,3,4,5,6,8,11,12,13,14,15,16,17,18,19,20,23,26,27,28,30],:].describe()

для индекса [1,2,3,4,5,6,8,11,12,13,14,15,16,17,18,19,20,23,26,27,28, 30].

Чтобы установить день в качестве индекса:

df = df.set_index('column_name_of_your_day')

Если вы хотите нарезать каждые 5 строк:

for i in range(0,len(df),5):
    df.iloc[i:i+5,:].describe()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...