《Python資料處理》讀書筆記

alberthao發表於2017-10-26

1 背景

《Python資料處理》這本書買了有一段時間了,一直沒開始讀。最近想入手《Linux就是這個範兒》和《單核工作法》。於是我就下了個命令給自己:本書讀完一遍後才可以下新單。於是有了這一篇。
有時候,你需要的只是給自己下個命令。讓它開始!

2 本書框架

讀書我一般會把前言讀好幾遍。我覺得這就好像在和作者對話,他會告訴你哪裡是重點,哪裡是難點,你是否適合讀這本書等等。
之後你可以通過概覽目錄來進一步瞭解知識點的分佈。
就本書而言,它不是一本全面講解Python基礎知識的書,但是作者講解的知識卻足夠你開展資料分析使用。 作者從python安裝以及python的資料結構講起,然後以從CSV、Xml、Pdf等不同的資料來源獲取資料為例,進一步講解了如何利用python獲取資料,以及如何在學習的過程中自己幫助自己。
全書整體的思路我覺得大致分為如下環節:定義問題、獲取並儲存資料(官方下載csv等各類資料、爬蟲、API)、清洗資料、分析資料、展示資料、自動化等,通過這些方面的學習最終讓你能夠明白如何用資料來解決問題。這本書就像一本資料科學大百科全書。
這本書用的Python 2.7,但請務必不要糾結於版本。2.7你能找得到,還有人用;遷移至3.5或更高版本,成本並不大。我們關注“工具”,但更關注使用工具過程中所體驗的工作方法和使用工具所要改變的世界。

3 部分重點內容分享

本書的每一章都基本上涵蓋了一個話題。接下來把我自己感興趣的內容和大家分享:

3.1 Python基礎(第2章)

這一章中,作者講到了三種資料容器:變數、列表、字典。我們來一起按照作者的寫作思路看看都講了些什麼內容:

3.1.1 是什麼,怎麼做

講解每一個概念時,作者基本上是從“這是什麼”講起,然後再引入例子補充,再適當擴充更多相關概念,再引入例子。有時候還會故意引入“錯誤”的例子讓你思考。

前面說過,學會如何閱讀錯誤資訊是很重要的,這可以讓你明白犯了什麼錯誤,以及如何改正錯誤。在這個例子中,錯誤資訊指出,dogs is notdefined,意思是我們沒有定義過一個叫作 dogs的變數。由於我們沒有定義過這個變數,所以 Python不知道我們要呼叫的是什麼。

以“列表”為例,作者寫到:列表是具有某種共同關係的一組值。然後她給出如何建立列表的方法,並舉了一個例子。

['milk', 'lettuce', 'eggs']

接下來她又舉了列表的列表作為更進一步的例子。

3.1.2 小步快跑

作者在講解時不會一次講解很多東西。後續講解其他內容時,她會逐步擴充套件前面所學知識。在2.3節中,作者就只是介紹了字串(alberthao.upper()大寫、alberthao.strip()擷取)、列表(.append、.remove)、字典(.keys)的基本方法,隨著後面章節才陸續擴充套件。

3.1.3 授人以漁

此外,作者還一步一步教會你如何自己探索。本章中作者就通過type、dir、help的介紹,告訴我們怎麼了解資料型別,然後瞭解更多資料型別對應的“方法”。 例如通過dir你可以看到字典所對應的很多方法,動手試一試,help一下。 dir('cat,dog,horse') dir(['cat', 'dog', 'horse']) help(animals.split)

3.1.4 及時引導複習

最後2.5節作者給了一個綜合性的習題,讓讀者親自建立一個變數、列表、字典,然後製造一個錯誤。通過這種方法幫助讀者鞏固練習。

“恭喜!你剛剛學會了如何程式設計。程式設計不是死記硬背,相反,程式設計是在出錯時排查並解決錯誤。”

3.2 從哪裡獲取資料以及如何儲存它們(第6章)

這一章作者講了從哪裡獲取資料以及如何儲存資料。作者在6.4節列舉了按地域和行業提供了很多可以訪問的資料來源。 例如美國政府、其他各國政府、醫療行業、教育行業等等。
資料如果量不多,可以本地檔案儲存,如果多,則可以採用資料庫。按照資料型別可選擇關係型資料庫或者非關係型資料庫。
這些內容作者都會給你一個大致的入門,並輔之以很多參考資料。內容都不多,但已經足夠你開始朝著這個方向走。
我覺得這一章最應該學習的就是她如何提問題。前言中作者提到了這個連結https://www.propublica.org/nerds/item/how-to-ask-programming-questions
我也推薦一篇。http://lixiaolai.com/2016/06/25/makecs-html-css/
這篇文章中提到了如何提問的一篇文章,底部還有朗讀稿。

讓我們來看看作者是如何提問的吧:

3.2.1 資料是否可靠

你可以問問自己以下幾個問題。
• 如果我有問題或疑慮的話,能夠聯絡上作者本人嗎?
• 資料是否定期檢查錯誤並更新?
• 資料裡是否包含資料獲取方法的資訊,是否包含資料獲取過程中使用的樣本型別?
• 有沒有其他資料來源可以驗證這個資料集?
• 根據我對這個話題了解的所有知識,資料看起來是否可信?
如果你對至少三個問題的回答都是“是”,這說明你走對路了!如果至少對兩個問題的回答是“否”, 你可能需要花更多時間尋找可靠的資料。

3.2.2 資料真實性

評價網上釋出的內容時,你需要自己仔細斟酌。資料來源是否真實?
論證能否令人信服,是否有意義?
證據是否有效?
對這些問題的回答要做綜合評價。

3.2.3 資料是否被清洗過

通過詳細詢問資料是如何採集、報告 並更新的,你可以判斷資料是否被清洗過。你應該能夠確定以下內容。
• 資料的清潔度有多高?
• 是否有人給出了統計誤差率,或者修改了錯誤的資料條目,或者誤報了資料?
• 是否會發布進一步更新,這些更新是否會傳送給你?
• 資料採集過程中使用了哪些方法,如何驗證這些方法?

3.2.4 資料壽命

你要處理的資料是定期採集並更新的嗎?
資料釋出和更新的時間計劃是什麼樣的?
瞭解一個機構更新資料的頻率,可以讓你判斷在未來幾年內對該資料的應用能力。

3.2.5 打電話給某個機構尋求幫助前,幫你思考你需要得到什麼:

• 你是如何獲取第6 頁到第200 頁的資料的?
• 是否有其他格式的資料,比如JSON、CSV、XML 或資料庫?
• 資料是如何採集的?
• 能否描述一下資料採集的方法?
• 這些縮寫是什麼意思?
• 資料是否會更新?如何更新?何時更新?
• 是否有其他人能提供更多資訊?

3.3 API(應用程式設計介面)

這一節提供了通過API介面訪問資料的方法。由於例子是twitter,國內無法測試,後續還需要找一個國內的API介面試一下。通過API獲取資料的大體思路是,通過提供API key和token來獲取資料,然後將其轉存至資料庫。需要注意的是,有的API有訪問頻率限制。也分實時與否,付費與否。需要再實際練習一下。 https://www.zoomeye.org/api

4 其他工具分享

瀏覽器python實驗
freecodecamp免費學習營
SQL學習

相關文章