选择一系列时间序列数据并进行数据分析
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 点之间的所有数据。
我有一个监测温度、压力和湿度的监测设备。通过这些数据,我得到了测量的日期和时间。测量每 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 点之间的所有数据。