如何在Python 3.6中将日期划分为周并创建新列表?
我有两个数据列表,一个是日期和平均值,另一个是索引,另一个是值,它们看起来像:如何在Python 3.6中将日期划分为周并创建新列表?,python,Python,我有两个数据列表,一个是日期和平均值,另一个是索引,另一个是值,它们看起来像: #list 1: (in total 62 raws) date d_mean 2017-3-1 15.3 2017-3-2 16.9 2017-3-3 18.2 ... 2017-4-30 17.7 2017-5-1 15.6 #list2: (in total 10 raws) sum 121 555 122 784 123 546 ... 142 568 143 658
#list 1: (in total 62 raws)
date d_mean
2017-3-1 15.3
2017-3-2 16.9
2017-3-3 18.2
...
2017-4-30 17.7
2017-5-1 15.6
#list2: (in total 10 raws)
sum
121 555
122 784
123 546
...
142 568
143 658
144 847
我想:
chunks = [avg_T1[x:x+7] for x in range(4, len(avg_T1), 7)]
但这只是划分了列表,我试图添加
.mean()
最后,它并没有真正起作用
我是Python新手,我也很高兴听到有什么必要的材料需要我阅读或练习,以帮助我习惯使用Python。没有原始数据很难回答,但你可以使用自定义函数:要么
index/7
要么使用以获取周数:
import pandas as pd
import datetime
import numpy as np
start = datetime.datetime(2017,3,1)
end = datetime.datetime(2017,5,2)
daterange = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]
data = pd.DataFrame({'date':daterange, 'v':np.random.randint(0,100,size=len(daterange))}).set_index('date')
数据
现在看起来像:
v
date
2017-03-01 1
2017-03-02 40
2017-03-03 49
2017-03-04 27
2017-03-05 37
2017-03-06 90
2017-03-07 88
2017-03-08 42
2017-03-09 90
2017-03-10 84
2017-03-11 47
2017-03-12 24
2017-03-13 18
2017-03-14 24
2017-03-15 38
2017-03-16 71
2017-03-17 11
2017-03-18 40
...
下面是strftime的结果:
>>> data.groupby(lambda d: d.strftime('%V')).mean()
v
09 30.800000
10 66.428571
11 36.285714
12 40.857143
13 55.428571
14 56.285714
15 52.000000
16 39.714286
17 39.714286
以下是7年中的日期的结果:
>>> data.groupby(lambda d: d.timetuple().tm_yday//7).mean()
v
8 30.000000
9 65.428571
10 33.285714
11 48.857143
12 46.571429
13 58.000000
14 47.428571
15 41.428571
16 45.285714
17 33.500000
这取决于你如何定义一周
请注意,如果数据跨度超过一年,它将不起作用。您可能应该使用。我不确定是否完全理解您的问题,但第一部分的答案应该是
df = df.set_index('date')
df['w_mean'] = df.resample('w').d_mean.mean().
这是数据帧每周的平均值(我认为您正在调用列表)
我不知道你如何使这两个列表长度相同,因为它们在同一时间段内的频率不同
您将拥有一个列(“w_mean”),该列每七天有一个值,其他所有地方都有一个值
你可以做df.interpolate().plot()
是我能想到的最接近的事情…你有一个可复制的数据示例吗?使用pandas将日期列转换为日期时间索引和周频率,取平均值。这里唯一的危险是,如果你有超过一年的数据(看起来不像OP)它将在一年中的每一周聚集在一起(即2015年第1周将与2016年第1周以及所有其他年份合并)@RSHAP:的确如此。你的方法更好。这真的很有帮助!非常好,我不知道如何重新采样。