选择一系列时间序列数据并进行数据分析

Selecting a range of time-series data and performing data analysis

我有一个监测温度、压力和湿度的监测设备。通过这些数据,我得到了测量的日期和时间。测量每 5 秒进行一次。我想编写一个函数,在特定的日期和时间范围内给出温度、压力和湿度的平均值和标准偏差。理想情况下是这样的...

def TempPressHumid(time_start, time_end, data_start, date_end, temp_data, press_data, humid_data)

到目前为止我有这个:

import pandas as pd
import numpy as np

df = pd.read_csv('TM4CVC.csv', index_col = 0)

temp_data = df['Temperature']
temp_av = np.mean(temp_data)
temp_sd = np.std(temp_data)

humid_data = df['humidity']
humid_av = np.mean(humid_data)
humid_sd = np.std(humid_data)

press_data = df['pressure']
press_av = np.mean(press_data)
press_sd = np.std(press_data)

这可能吗?

谢谢,

乔伊

这应该可以做到。按时间和日期切片 df。您可以将函数更改为仅接受日期,然后使用 'yyyy-mm-dd hh:mm:ss' 格式对其进行切片,如果您只需要一个连续的日期时间范围,而不必每次都 select 时间和日期。

import pandas as pd
import numpy as np
import random

def TempPressHumid(time_start, time_end, date_start, date_end, df):

    temp = df[date_start:date_end]
    temp = df.between_time(time_start,time_end)

    out = {'temp_avg':np.mean(temp['temp']),
    'temp_std':np.std(temp['temp']),
    'press_avg':np.mean(temp['press']),
    'press_std':np.std(temp['press']),
    'humid_avg':np.mean(temp['humid']),
    'humid_std':np.std(temp['humid'])}
    print out


df = pd.DataFrame({'temp':[random.randint(50, 80) for x in range(51841)],
    'press':[random.randint(20, 40) for x in range(51841)],
    'humid':[random.randint(20, 80) for x in range(51841)]}, 
    index = pd.date_range(start = '2014-01-01', end = '2014-01-04', freq = '5S'))

TempPressHumid(time_start = '01:00:00', time_end = '23:00:00', date_start = '2014-01-02', date_end = '2014-01-03', df = df)

这将获取 2014-01-02 和 2014-01-03 之间凌晨 1 点到晚上 11 点之间的所有数据。