天天看點

sql清空某一列資料_python資料分析:整理某一列的内容

上一篇文章中,我們已删除了dataframe中不必要的行列,并學會了如何更改行索引。在這篇文章中,我會教大家清理特定的列并将它們化為統一格式,以使資料集更好看并且增強資料集的一緻性。

首先我們回顧下上篇文章清理後的資料集

sql清空某一列資料_python資料分析:整理某一列的内容

我們可以看到Date of Publication和Place of Publication這兩列還是需要進行格式統一的。首先我們定位到Date of Publication列看一看

df.loc[1905:, 'Date of Publication'].head(10)
           
sql清空某一列資料_python資料分析:整理某一列的内容

可以知道的是一本書的出版日期應該隻有一個,但是我們發現原始資料集中有很多不規則或者錯誤的日期表示,是以,我們需要執行以下操作:

  • 删除方括号中多餘的日期,例如:1879 [1878]
  • 将日期範圍轉換為它們的“開始日期”,例如:1860-63; 1839,38-54

明确了我們要做什麼之後,這個時候就得用到正規表達式了

regex = r'^(d{4})'
           

關于正規表達式,随後我會專門寫一篇文章,歡迎大家關注。在這兒你隻要知道這個正規表達式的作用就是找到字元串的前4個數字就行了。

來看看在資料集中運作正規表達式抓取後是什麼樣子

extr = df1['Date of Publication'].str.extract(r'^(d{4})', expand=False)extr.head()
           
sql清空某一列資料_python資料分析:整理某一列的内容

可以看到多餘的年份被去除了隻留下了前4個數字。這部分就算完成了。

然後我們再定位到Date of Publication列看一看

sql清空某一列資料_python資料分析:整理某一列的内容

我們看到,對于Date of Publication列有很多不必要的資訊。如果我們浏覽更多的值,會發現隻有出版地為“倫敦”或“牛津”的時候才會有無用資訊。

這個時候怎麼辦呢?

我們首先的定位到包含”倫敦“或者”牛津“的格子然後再想辦法修改,接着往下看

pub = df['Place of Publication']london = pub.str.contains('London')#通過str.contains完成定位工作london[:5]oxford = pub.str.contains('Oxford')
           
sql清空某一列資料_python資料分析:整理某一列的内容

然後我們将其與np.where結合使用就可以達到替換的目的:

df['Place of Publication'] = np.where(london, 'London',                                      np.where(oxford, 'Oxford',                                            pub.str))df['Place of Publication'].head()
           

np.where(condition, x, y)

滿足條件(condition),輸出x,不滿足輸出y。上面的用法就是滿足包含London就輸出London,包含牛津就輸出牛津

可以看到出版地”倫敦“不必要的資訊都沒了,隻留下”倫敦“,牛津也是如此。

sql清空某一列資料_python資料分析:整理某一列的内容

此時我們再回頭看處理過的資料集,見下圖

sql清空某一列資料_python資料分析:整理某一列的内容

我們可以看到Date of Publication和Place of Publication這兩列是不是清晰多了?

最後總結一下,這篇文章主要運用了np.where,還有正規表達式替換。之前的行與列的處理見上篇文章(好像還在稽核),有興趣的同學可以去看看。好了,今天就這麼多,歡迎大家關注交流,一起進步,一個小白的python進階之路。

發表這些東西的主要目的就是督促自己,希望大家關注評論指出不足,一起進步。内容我都會寫的很細,并且按照文章中的代碼自己也可以做出一樣的結果,一個目的就是零基礎也能懂,因為自己就是什麼基礎沒有從零學Python的。

往期精彩:

Python初學者應避免的2個常見錯誤

機器學習實戰:迷你資料庫+超詳細解釋