今天要來解決與星期有關的問題,首先來看三個月以來哪一天租借的次數是最多的。
df1[mask_5]['day_of_the_week'].value_counts()
##
3 73675
4 68570
2 65054
5 64821
6 59573
1 50303
7 37219
Name: day_of_the_week, dtype: int64
週間的使用頻率高,以禮拜三次數最多。
發現這個好用的函數value_counts(),自動幫你分類計算還降冪排序(讚)
不然本來是用sum()一個一個條件輸的XD
接著來看使用者喜歡在哪個時段租借(早上/下午/晚上),使用value_counts()排序的時候,發現之前改成datetime形式的時候忘記更改format,造成程式誤判我日期年月日的排序方式,修正為以下:
(format要寫原本你日期的格式,包含-或/之類的符號!)
data['started_at']=pd.to_datetime(data['started_at'],format="%d-%m-%Y %H:%M")
data['ended_at']=pd.to_datetime(data['ended_at'],format="%d-%m-%Y %H:%M")
設定凌晨/早上/下午/晚上時段,再於原表格加一欄只顯示時間的。
凌晨 00:00~05:59
早上 06:00~11:59
下午 12:00~17:59
晚上 18:00~24:00
原本是用下面的,但出現錯誤訊息,timestamp無法使用datetime(原本以為那欄是時間...時間函數真的好複雜)
value=[]
for i in range(len(df1)):
value.append(df1['started_at'][i].dt.Tostring("HH:mm:ss"))
AttributeError: 'Timestamp' object has no attribute 'dt'
試了一陣子都無法解決,目前想到的方式是將DataFrame的'started_at'分割後日期和時間(時間轉成字串,等於一開始就不做轉換日期的動作,因為那個TimeStamp搞得我頭很痛QWQ)
L=[]
for i in df1['started_at']:
time=i.split(' ')
L.append(time[1])
df1.insert(15,column='time',value=L)
當嘗試想直接將新的一欄(str)轉換成Datetime時又不行了XDD
所以我決定明天再來解決這個難題!(哈) 不然實在是腦袋轉不過來了...
明天見la