【練習一】 現有乙份關於某超市牛奶銷售額的時間序列資料,請完成下列問題:
df = pd.read_csv(
'data/time_series_one.csv'
, parse_dates=
['日期'])
df.head(
)
df[
'日期'
].dt.dayofweek[df[
'銷售額'
].idxmax(
)]
(b)計算除去春節、國慶、五一節假日的月度銷售總額
holiday = pd.date_range(start=
'20170501'
, end=
'20170503'
) pd.date_range(start=
'20171001'
, end=
'20171007'))
pd.date_range(start=
'20180215'
, end=
'20180221'))
pd.date_range(start=
'20180501'
, end=
'20180503'))
pd.date_range(start=
'20181001'
, end=
'20181007'))
pd.date_range(start=
'20190204'
, end=
'20190224'))
pd.date_range(start=
'20190501'
, end=
'20190503'))
pd.date_range(start=
'20191001'
, end=
'20191007'))
result = df[
~df[
'日期'
].isin(holiday)
].set_index(
'日期'
).resample(
'ms').
sum(
)result.head(
)
(c)按季度計算週末(週六和週日)的銷量總額
result = df[df[
'日期'
].dt.dayofweek.isin([5
,6])
].set_index(
'日期'
).resample(
'qs').
sum(
)result.head(
)
(d)從最後一天開始算起,跳過週六和周一,以5天為乙個時間單位向前計算銷售總和
df_temp = df[
~df[
'日期'
].dt.dayofweek.isin([5
,6])
].set_index(
'日期'
).iloc[::
-1]l_temp,date_temp =
,[0]
*df_temp.shape[0]
for i in
range
(df_temp.shape[0]
//5):
l_temp.extend(
[i]*5)
l_temp.extend(
[df_temp.shape[0]
//5]*
(df_temp.shape[0]
-df_temp.shape[0]
//5*5
))date_temp = pd.series(
[i%5==0
for i in
range
(df_temp.shape[0]
)])df_temp[
'num'
]= l_temp
result = pd.dataframe(
, index=df_temp.reset_index(
)[date_temp]
['日期'])
.iloc[::
-1]result.head(
)
(e)假設現在發現資料有誤,所有同一周裡的周一與周五的銷售額記錄顛倒了,請計算2023年中每月第乙個周一的銷售額(如果該週沒有周一或周五的記錄就保持不動)
from datetime import datetime
df_temp = df.copy(
)df_fri = df.shift(4)
[df.shift(4)
['日期'
].dt.dayofweek==1]
['銷售額'
]df_mon = df.shift(-4
)[df.shift(-4
)['日期'
].dt.dayofweek==5]
['銷售額'
]df_temp.loc[df_fri.index,
['銷售額']]
= df_fri
df_temp.loc[df_mon.index,
['銷售額']]
= df_mon
df_temp.loc[df_temp[df_temp[
'日期'
].dt.year==
2018][
'日期'][
df_temp[df_temp[
'日期'
].dt.year==
2018][
'日期'].
(lambda x:
true
if datetime.strptime(
str(x)
.split()[
0],'%y-%m-%d'
).weekday()==
0and
1<= datetime.strptime(
str(x)
.split()[
0],'%y-%m-%d'
).day <=
7else
false)]
.index,
:]
df = pd.read_csv(
'data/time_series_one.csv'
,index_col=
'日期'
,parse_dates=
['日期'])
df['銷售額'
].rolling(window=
50,min_periods=1)
.mean(
).head(
)
df[
'銷售額'
].rolling(window=
50,min_periods=1)
.max()
.head(
)
(b)現在有如下規則:若當天銷售額超過向前5天的均值,則記為1,否則記為0,請給出2023年相應的計算結果
def
f(x):if
len(x)==6
:return
1if x[-1
]>np.mean(x[:-
1])else
0else
:return
0result_b = df.loc[pd.date_range(start=
'20171227'
,end=
'20181231'),
:].rolling(
window=
6,min_periods=1)
.agg(f)[5
:].head(
)result_b.head(
)
def
f(x):if
len(x)==8
:return
1if x[-1
]>np.mean(x[:-
1][pd.series(
[false
if i in[5
,6]else
true
for i in x[:-
1].index.dayofweek]
,index=x[:-
1].index)])
else
0else
:return
0result_c = df.loc[pd.date_range(start=
'20171225'
,end=
'20181231'),
:].rolling(
window=
8,min_periods=1)
.agg(f)[7
:].head(
)result_c.head(
)
【問題一】 如何對date_range進行批量加幀操作或對某一時間段加大時間戳密度?
【問題二】 如何批量增加timestamp的精度?
【問題三】 對於超出處理時間的時間點,是否真的完全沒有處理方法?
【問題四】 給定一組非連續的日期,怎麼快速找出位於其最大日期和最小日期之間,且沒有出現在該組日期中的日期?
第九章(筆記)
轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...
第九章作業
班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...
第九章 引用
引用擁有指標的所有功能,只是語法更加的簡單 1 引用就是別名,變數的另外乙個名字,變數和別名它們的位址是一樣的,操作別名就是操作變數 2 引用就是別名常量,一旦引用被初始化就不能再改變了 可以理解為指標常量,指向的值不能改變,能改變的只是它的該位址處的值 3 引用物件huamn mike human...