iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
自我挑戰組

商業數據分析應用系列 第 5

[Day5] 資料清理

  • 分享至 

  • xImage
  •  

關於昨天【#】的未解之題,首先來驗證看看有幾筆資料是需要被清理的。
接著再用DataFrame找出他的index來進行刪除。

L1=[]
for i in data['ride_length']:
    L1.append(i)
L2=[]
for i in range(len(L1)):
    de=L1[i].find('#')
    if de!=-1:
        L2.append(de)
len(L2)
###
Out[18]: 117

得出共有117筆在租借時長是【#】的資料。

接著從DataFrame中移除它們,在網路上找到了兩種可以用df來篩選的方式(因為使用mask不成功(笑)),分別是df.str.containsdf.isin(),這是因為我的需求是去除包含字串的內容,如果單純只是篩選區間的話可以直接使用運算子符號。有需要者可以看看大神的解釋

data.loc[data['ride_length'].str.contains('#')]  #看出哪是些index含有#

###
                 ride_id  ... day_of_the_week
7001    6FABADDD595AF922  ...               6
7035    867C195C5650C884  ...               6
7040    13BCB74BAFDADB21  ...               6
24362   4B82BF3DF7E45D1D  ...               6
24365   3361A4413B4813B8  ...               6
                 ...  ...             ...
71044   D5E25F13DC2C9154  ...               3
71097   FC3616DAF48D1E33  ...               3
76025   D353DE3B13901B98  ...               2
100804  EF0E692D7B4BABB3  ...               6
150596  9461DFF13D8BA8AD  ...               6

[117 rows x 15 columns]

使用df.drop()搭配str.contains()條件來試試看清理DataFrame
結果因為是迴圈,跑了超級久+電腦發熱xd,看來是用了不太好的方式(?) (而且在截稿前都還沒有跑完)
希望可以正確完成,晚點來研究有沒有聰明的作法/images/emoticon/emoticon28.gif

for i in data['ride_length']:
    if [data['ride_length'].str.contains('#')]== True:
        print('刪除!')
        data.drop(data.index[data['ride_length'].str.contains('#')])
    else:
        print('run...')
        pass

我的腦袋

我覺得篩選這個功能在Python中應該蠻常遇到的,以前有聽過遮罩但沒有實際經驗,這次這個資料剛好被我碰到要處理,也算是一種學習!
今天花了蠻長時間在嘗試和找網路資源的,明天感覺要加快速度了><~


上一篇
[Day4]資料載入
下一篇
[Day6] 遮罩(mask)的運用
系列文
商業數據分析應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言