gpt4 book ai didi

python - 迭代日期,计算每 24 小时周期的平均值

转载 作者:行者123 更新时间:2023-12-01 08:21:21 25 4
gpt4 key购买 nike

我有一个 csv 文件,其中包含 2 年内每分钟的数据,并且想要运行代码来计算 24 小时平均值。理想情况下,我希望代码每 24 小时迭代一次数据,计算平均值和标准差以及 dataA 和 dataB 之间的 R^2,然后将这些新数据输出到新的 csv 文件中(包含日期戳和计算数据)每 24 小时一次)。

Example the csv data

数据有一个不寻常的时间戳,我认为这可能会让我有点困惑。我一直在尝试不同的 For 循环来迭代数据,但我不确定如何指定我想要每个 24 小时周期的平均值等。

这是我到目前为止的代码,但我不确定如何完成 For 循环以实现我想要的。如果有人可以提供帮助那就太好了!

import math
import pandas as pd
import os
import numpy as np
from datetime import timedelta, date

# read the file in csv
data = pd.read_csv("Jacaranda_data_HST.csv")

# Extract the data columns from the csv
data_date = data.iloc[:,1]
dataA = data.iloc[:,2]
dataB = data.iloc[:,3]

# set the start and end dates of the data
start_date = data_date.iloc[0]
end_date = data_date.iloc[-1:]

# for loop to run over every 24 hours of data
day_count = (end_date - start_date).days + 1
for single_date in [d for d in (start_date + timedelta(n) for n in
range(day_count)) if d <= end_date]:
print np.mean(dataA), np.mean(dataB), np.std(dataA), np.std(dataB)

# output new csv file - **unsure how to call the data**
csvfile = "Jacaranda_new.csv"
outdf = pd.DataFrame()
#outdf['dataA_mean'] = ??
#outdf['dataB_mean'] = ??
#outdf['dataA_stdev'] = ??
#outdf['dataB_stdev'] = ??
outdf.to_csv(csvfile, index=False)

最佳答案

一种简化的方法可能是在 dict 中按日历日进行分组。我对 DataFrames 中的 pandas 时间管理没有太多经验,因此这可能是一种替代方案。

您可以创建一个 dict,其中键是数据的日期(不带时间部分),以便稍后计算每个键下所有数据点的平均值。

data_date = data.iloc[:,1]
data_a = data.iloc[:,2]
data_b = data.iloc[:,3]

import collections
dd_a = collections.defaultdict(list)
dd_b = collections.defaultdict(list)

for date_str, data_point_a, data_point_b in zip(data_date, data_a, data_b):
# we split the string by the first space, so we get only the date part
date_part, _ = date_str.split(' ', maxsplit=1)

dd_a[date_part].append(data_point_a)
dd_b[date_part].append(data_point_b)

现在您可以计算平均值:

for date, v_list in dd_a.items():
if len(v_list) > 0:
print(date, 'mean:', sum(v_list) / len(v_list))
for date, v_list in dd_b.items():
if len(v_list) > 0:
print(date, 'mean:', sum(v_list) / len(v_list))

关于python - 迭代日期,计算每 24 小时周期的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com