昨天的程式跑了快一個小時,發現一直都沒結束,才赫然發現原來寫錯了,變成無限循環(好天兵xd)。
既然發現了問題,當然是寫出來才能睡覺囉!
被資工系的家人訓了一頓,說沒有人拿正式資料來跑寫的邏輯是否正確的XD
想一想這筆資料高達42萬多筆,真的不該在還是個初學者階段就那麼大膽(哈)
用了一個測試的小資料來驗證寫法,結果成功了
Test=[['ID','Name','Gender','content'],['1','Mary','Female','###'],['2','Jason','Male','forty'],['3','Sandy','Female','fifty'],['4','William','Male','##']]
df=pd.DataFrame(Test[1:5],columns=Test[0])
df1=df.drop(df[df['content'].str.contains('#')==True].index)
原本的df長這樣
ID Name Gender content
0 1 Mary Female ###
1 2 Jason Male forty
2 3 Sandy Female fifty
3 4 William Male ##
執行最後一句話,存入df1中變這樣
ID Name Gender content
1 2 Jason Male forty
2 3 Sandy Female fifty
可以先安心睡覺了~起床再繼續努力分析! ^^
2022/09/08 01:53 AM
df1=data.drop(data[data['ride_length'].str.contains('#')==True].index)
df1=df1.sort_values('ride_length',ascending=False) #降冪排序
df1.head() #前五筆
df1.tail() #後五筆
##
ride_id rideable_type ... ride_length day_of_the_week
1354 2D4EA0D9064662D6 docked_bike ... 23:56:49 3
353057 651C959936BA3227 docked_bike ... 23:56:45 4
226720 EB83072244DF5183 docked_bike ... 23:55:55 4
107043 8994CCC830A3DDF1 docked_bike ... 23:54:37 5
341354 B6DE81A51970FF21 docked_bike ... 23:54:27 7
[5 rows x 15 columns]
前五筆資料可知道最長的租借時間為將近一天。
發現整理過後的後五筆資料秒數皆是00:00:00,就開始在括號內加入數字。
結果加到100筆左右時才終於出現00:00:01 (還是超級短啊!)
一開始我設定2分鐘來當作一個基準,超過2分鐘的記作有效資料,並以'ride_length'這欄的長短區分為短/中/長時間租借。
此階段目標有兩個:
使用遮罩來篩選少於00:02:00的資料,觀察後發現在00:01:00左有開始有租借還點不同的情況,可能站點真的蠻近的吧既然有這個狀況,那就稍微改一下設定為少於00:01:00設定為無效資料。
mask=df1[df1['ride_length']<'00:02:00'] #共12112筆
mask=df1[df1['ride_length']<'00:01:00'] #共7555筆
使用不重複ID資料來試算重複ID有多少筆,藉以初步推斷是不是操作錯誤的情況蠻多的(但日期可能也要考慮,明天來細算,截稿時間又要到了XD)
mask['ride_id'].nunique()
Out[29]: 7555
結果也是7555筆!
短租(00:01:00~01:00:00)
mask=(df1['ride_length']>='00:01:00')
df1[mask]
mask_1=(df1['ride_length']<='01:00:00') #短租條件一
df1[mask & mask_1] #短租 411769
中租(01:01:00~12:00:00)
mask_2=(df1['ride_length']>'01:00:00') #中租條件一
mask_3=(df1['ride_length']<='12:00:00') #中租條件二
df1[mask_2 & mask_3] #中租 #7036
df1[(df1['ride_length']>'01:00:00') & (df1['ride_length']<='12:00:00')] #另一種寫法
長租(12:01:00~24:00:00)
mask_4=(df1['ride_length']>'12:00:00') #長租條件
df1[mask_4] #長租 #410
可以發現比例最多的大多落在1個小時內,約占了98%。所以明天可以針對這些1小時內的資料在作細分,而也會用其他組來觀察使用者、地點等關聯。
明天見!中秋連假也要繼續努力更新><!