Python:使用numpy计算日平均值的函数

yyhrrdl8  于 2022-12-13  发布在  Python
关注(0)|答案(2)|浏览(165)

Python初学者在这里需要一个赋值的帮助。我需要做一个函数,返回一个列表/数组,其中包含一个特定变量和csv文件名的每日平均值(即365个值)
函数签名:

def daily_average(data, csv_file_name1:str, variable:str):

有3个csv文件包含类似的数据(下面列出的示例只是文件的一部分):

date time variable1 variable2 variable3
2021-01-01 01:00:00 6.08624 21.3 18.6
2021-01-01 02:00:00 7.40564 45.1 40.3
2021-01-01 03:00:00 5.01157 25.6 23.9
2021-01-01 04:00:00 12.76834 20.8 18.1
2021-01-01 05:00:00 9.09745 20.9 21.7

NumPy可以用,Pandas也可以用,但我不太精通,所以我宁愿不用。

vshtjzan

vshtjzan1#

在这种情况下,Pandas是一个很好的方法,找到日平均值可以写成groupby运算,它将问题变成了一行程序,你(1)根据date_time列中的日期分组,然后(2)计算数字条目的平均值。
为了演示这一点,我从输入中复制了一些行:

from io import StringIO
import pandas as pd

data_file = StringIO("""date_time,variable1,variable2,variable3
2021-01-01 01:00:00,6.08624,21.3,18.6
2021-01-01 02:00:00,7.40564,45.1,40.3
2021-01-01 03:00:00,5.01157,25.6,23.9
2021-01-01 04:00:00,12.76834,20.8,18.1
2021-01-01 05:00:00,9.09745,20.9,21.7
2021-01-02 01:00:00,6.08624,21.3,18.6
2021-01-02 02:00:00,7.40564,45.1,40.3
2021-01-03 03:00:00,5.01157,25.6,23.9
2021-01-04 04:00:00,12.76834,20.8,18.1
2021-01-05 05:00:00,9.09745,20.9,21.7""")

df = pd.read_csv(data_file, parse_dates=[0])

print(df.groupby(by=df['date_time'].dt.date).mean(numeric_only=True))

输出量:

date_time                                  
2021-01-01   8.073848      26.74      24.52
2021-01-02   6.745940      33.20      29.45
2021-01-03   5.011570      25.60      23.90
2021-01-04  12.768340      20.80      18.10
2021-01-05   9.097450      20.90      21.70
h9a6wy2h

h9a6wy2h2#

我在这个例子中使用了panda。另一种选择是在每天的时间框架上重新采样数据。也可以在resample_dict中指定基于列的聚合方法。

resample_dict = {                                                                                                             
    'variable1': 'mean',
    'variable2': 'mean',
    'variable3': 'mean'
}

daily_average = daily_average.resample('D', closed='left', label='left').apply(ohlc_dict)

相关问题