歡迎光臨
每天分享高質量文章

實戰:從Python分析17-18賽季NBA勝率超70%球隊資料開始…

來自:bigsec豈安科技(微訊號:bigsec)

擼主:

Casey    豈安業務風險分析師


主要負責豈安科技RED.Q的資料分析和運營工作。

2017年12月19日,科比再次站在斯臺普斯中心球館中央,見證自己的兩件球衣高懸於球館上空。作為一個正奮戰在 Python 之路上的球迷,開始了一次資料分析實戰,於是,以分析球賽資料為起點的操作開始了……

前言

Python 作為一個功能強大的程式語言,如今在資料分析、機器學習、人工智慧等方面如日中天。如果想做資料分析,那麼 python 則為一把利器。

初入職場,除了使用 python 中串列、元組、字典等常用資料型別外,經常會接觸到一些如 csv 檔案、json 格式的資料、或者直接要和資料庫打交道。

本文,透過幾個小例子簡述 python 對 csv、json、mysql 的簡單操作。

資料分析實戰

1

已知 nba-season_17_18.csv 檔案(見下圖)存放截至目前17-18賽季 NBA 常規賽聯盟全部球隊的資料。

現在需要將勝率超過 70% 並且場均得分在 110 分的球隊資訊寫入到 result.csv 中。

上述對 csv 檔案的操作可透過 python 中的 csv 模組輕鬆實現,csv 模組分別透過 reader() 和 writer() 實現對 csv 檔案的讀寫,這兩種方法都需要傳入檔案物件。

因此,首先需要使用 open 方法開啟 nba-season_17_18.csv,建立檔案物件。

註意:

  • 需要先將檔案第一行要寫入 result.csv,其餘行要依次透過if陳述句判斷勝率和場均得分再選擇是否寫入。

  • 判斷時要註意 reader 中的 row[3] 和 row[10] 是字串型別,需要轉換成 float 型別。


實現的程式碼如下:

最終result.csv如下:

2

json 作為一種輕量級的文字資料交換格式,因為在網路傳輸過程中具有節省流量、加快速度等優點,使其成為理想的資料交換語言。

python 對 json 的操作主要透過 json 模組中的 dumps() 函式和 loads() 函式。前者將 python 物件編碼 json 字串,而後者則是將已經編碼的 json 字串解碼為 python 物件。

  • 程式碼中 dumps() 函式將串列data編碼為 json,其中引數 separators 預設是”, “或”: “(逗號和冒號後邊分別有一個空格)。

  • 第三行程式碼表示去掉逗號和冒號後邊的空格,引數 indent 設定 json 檢驗後的縮排位數。

  • 程式碼中 loads() 函式將第三行輸出的 json 解碼為原來的串列格式。


如果上述 json 字串和 python 物件儲存在檔案中,也不用擔心,json 模組中的 dump() 和 load() 正是為此而生的。見第8行程式碼。

輸出結果如下:

3

方便高效的運算元據庫可以節省分析師大量的時間,python 中 pymysql 模組正好滿足。
該模組運算元據庫的過程可分為以下幾步:

其中,建立 connection 物件需要傳入以下引數:host(MySQL伺服器地址)、port(mysql伺服器埠號,預設3306)、user(使用者名稱)、passwd(密碼)、db(資料庫名)等。
使用 cursor.execute() 執行的 sql 陳述句,可以是 select 查詢陳述句,也可以是 insert、update、delete 等操作陳述句。
cursor 獲取資料的方法有:

☞fecthone() 獲取結果集中的下一條資料

☞fecthmany(n) 獲取結果集中的下 n 條資料

☞fetchall() 獲取結果集中的剩下所有資料

下圖是獲取並列印本地資料庫中資料的一個例子:

值得註意的是, connection 物件除了 cursor() 方法外,還為支援事務提供兩個重要的方法:

commit() 和 rollback()

這兩個方法分別是提交所有操作,和回滾當前遊標的所有操作。例如,在上例中,Tom借了Lucy10元錢,那麼此時需要先將Lucy的壓歲錢減掉10,然後將Tom的壓歲錢增加10。此時使用事務來保證資料庫的完整性,即要麼兩步都執行,要麼都不執行。

結果如下:

結語

本文用 python 對 csv、json、mysql 進行了簡單操作。當然要做好資料分析,這些還遠遠不夠。python 知識體系龐大,有大量高效且優秀的庫,不得不提的是:


  • 科學計算領域的 NumPy 和 SciPy

  • 資料分析領域的 Pandas

  • 機器學習領域的 scikit-learn

總之,python 的知識點眾多,學好不是一朝一夕的事情。但是,初入職場的小白覺得,學習其中任何一個知識點,除了看書、聽課、參加講座等方式外,更重要的是實際操作能力和思考總結能力。

當然我也一直在學習中。文中有不當之處,敬請批評指正。如果您有關於資料分析的想法,特別歡迎一起交流、共同進步。謝謝。


●本文編號346,以後想閱讀這篇文章直接輸入346即可

●輸入m獲取文章目錄

推薦↓↓↓

駭客技術與網路安全

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂