提问前先阅读此贴学习规范,同时要求问题表述清晰,报错相关的问题需以文字而非图片的形式给出代码与重要的错误信息。
耿老师,感觉这里这么写会更好一些
2020-09-07 08:00:00 2020-09-07 10:00:00
好的,一会改下
编号:10,昵称:天国之影
内容:github中的jupyter notebook内容优化
已改
时间戳-Datatime序列生成-P186
这个可以不用加head()
好的,谢谢
编号:107,昵称:Y’s
Ex2的1d,求每个月最后五天苹果销量的均值
答案是用了nlargest求一个月的最后五天,这样的话实际是计算的在苹果有销量的日子里的每个月的最后五天的均值,提供的数据里2019-12-31这天是苹果没有销量的一天,可以看出答案计算的结果里不包含这一天
>>>target_dt.tail()
55 2019-12-30
56 2019-12-29
57 2019-12-28
58 2019-12-27
59 2019-12-26
Name: Date, dtype: datetime64[ns]
题意描述的更像是求每个月的最后五天的日期,对应于12月应该是12-27到12-31这五天的均值,我的思路是这样,这样还用到了本次教程中学到的offset
:
days = pd.Series([], dtype='datetime64[ns]')
for i in range(5):
days = pd.concat([days, pd.Series(pd.date_range('20190101', '20191231', freq='M')) - pd.offsets.Day(i)])
df_apple = df[df.Fruit=='Apple']
df_apple[df_apple.Date.isin(days)].groupby(df_apple.Date.dt.month).Sale.mean()
这个问题就是出在对最后五天怎么定义,题目可以描述得更清楚些或者可以修改一下答案
编号:107,昵称:Y’s
Ex 2题目3 按天计算向前10个工作日窗口的苹果销量均值序列,非工作日的值用上一个工作日的结果填充。
答案的思路是:
df_apple = df[(df.Fruit=='Apple')&(~df.Date.dt.dayofweek.isin([5,6]))]
s = pd.Series(df_apple.Sale.values, index=df_apple.Date).groupby('Date').sum()
res = s.rolling('10D').mean().reindex(pd.date_range('20190101','20191231')).fillna(method='ffill')
这里变量s的索引是只包含了工作日的日期,那么rolling('10D')
的含义应该是每十天一个窗口,求这个窗口里的工作日的销量均值,我觉得应该改成rolling(10)
,表达每十个工作日为一个窗口
你说的是对的,答案需要修正
Ex1 第3题最后一个小问 题目是:
答案Series:
因为主体是每个观测,所以最终Series的Index应该保持与df相同,添加如下代码:
res.index = df.index
res.name = '6小时前的辐射量'
res
结果:
Ex2 第一题 a
以2月为例对答案进行验证:
df_grape = df[df.Fruit==‘Grape’]
df_grape.insert(0,‘Month’,df_grape.apply(lambda x:x[0].split(’-’)[1],axis=1))
df_demo = df_grape[df_grape.Month==‘02’]
df_demo
2月总的销量是:
2月上半月的销量是:
求2月上半月与下半月的比值:

参考答案:
我的答案:
df_demo = df[df.Fruit==‘Grape’]
df_demo.insert(0,‘Month’,df_demo.apply(lambda x:x[0].split(’-’)[1],axis=1))
df_demo.insert(0,‘Day’,np.where(s_upDown.astype(‘int’)<=15,‘up’,‘down’))
res1 = df_demo.groupby(‘Month’)[‘Sale’].sum()
res2 = df_demo[df_demo.Day == ‘up’].groupby(‘Month’)[‘Sale’].sum()
res2/(res1-res2)
结果:
