Python爬蟲學習-大資料統計分析(基礎)

weixin_34185560發表於2016-05-26
編譯環境:python v3.5.0, mac osx 10.11.4

<big>python爬蟲基礎知識: Python爬蟲學習-基礎爬取</big>
<big>python爬蟲進階知識: Python爬蟲學習-爬取大規模資料</big>
若未進行資料爬取可以使用此資料進行練習Github

視覺化第三方庫與網頁編譯器

  • Jupyter Notebook
    安裝:終端輸入
    pip3 install jupyter
    啟動:終端輸入
    jupyter notebook


    2027713-8cc7fd0292e803f9.png
  • highchart
    安裝:終端輸入
    pip3 install charts
    檢測:

    • 終端輸入
      jupyter notebook
      在jupyter頁面點選new>python3
      2027713-58a10384e50c530e.png
      在新頁面中輸入
      import charts
      然後點選cell>run
      2027713-5b83145f6024d322.png
      若遇到如下情況則需更換charts中的檔案
      2027713-76a23ff2fd9039a4.png
  • 更換檔案
    查詢charts所在目錄,在jupyter中開啟一個新的python檔案輸入:
    import sys
    print(sys.path)
    在輸出的路徑中查詢site-packages的路徑:

    2027713-2013c6d108730313.png
    開啟finder,點選前往>資料夾
    2027713-7e4cafb7232c5c90.png
    輸入剛才的site-package的路徑,點選前往:
    2027713-51244e9aca832952.png
    替換charts中的7個檔案:替換檔案下載(Github
    2027713-e7c0dfa0031c3fa1.png

資料分析流程

  1. 備份資料,防止處理時對資料造成的意外損壞
    mongodump -h dbhost -d dbname -o dbdirectionary
    # -h mongodb所在伺服器地址,如本機127.0.0.1
    # -d 需要備份的資料庫例項如:gangjiData
    # -o 備份資料存放地址如:/Users/fujingxin/Desktop/backData
    2027713-79c3b725d72e8d33.png
  2. 對資料進行預處理(以上節爬取的資料為例)
  • 去除area中多餘的部分(‘-’),並將None改為地區不明
    2027713-01378ed7281dc935.png
  • 統一發布日期的格式
    2027713-c88b54588d525688.png
  • 轉換價格格式,方便計算
    2027713-0cff3ecfbdf4382f.png
  1. 利用聚合管道pipeline對資料進行高效的查詢與篩選
    當我們要針對爬取的資料進行統計分析時,不同的問題需要的資料形式不同,pipeline相當一個可以提供給我們一層一層篩選所需資料的管道。
    2027713-55bc602fbaf3f7bb.png
    mongodb提供的pipeline操作如下,其中$所接字元表示進行的具體操作。其中match表示針對給定的資訊篩選出資料庫中的資訊,group表示根據制定資訊進行分組等等(具體使用見例項)。
    2027713-c5a36415e80271ef.png
  2. 利用highchair繪製圖表
  • 繪製柱狀圖
    2027713-e763139f4059be69.png
  • 繪製折線圖
    2027713-d3f8f7000436c341.png
  • 繪製餅圖
    2027713-9e9d644d57de90dc.png

實戰練習1

問題:某段時間內,北京各個城區發帖數量的 top3 類目
已知:
某個時間段,例:2015.12.25~2015.12.27
北京各個城區,例:朝陽
求解:
發帖數量 top3

分析流程

所需資料結構:
原始:

series = [{'name': 'name','data': [100]},{'name': 'name','data': [100]}, ...]

實際上:

{name:類目,data:發帖量}

目標:

{'_id': ['北京二手家電'], 'counts': 175}

構建聚合管道:

2027713-9d3d39d39fe3017a.png
構建繪圖所需要的資料結構:
2027713-984fe4a9a16a25dc.png
繪製圖表:
2027713-d1bfd1b15eb81863.png

實戰練習2

問題:某段時間內各大類目中成色對應的平均價
已知:
某個時間段,例:2015.12.25~2015.12.27
各大類目,例:北京二手手機,北京二手筆記本
單個物品價格,例:某品牌二手電視,價格1000元
求解:
平均價格

分析流程

所需資料結構:
原始:

series = ['data1','data2','data3']

實際上:

[全新對應的價格,9成新對應的價格,8成新對應的價格,7成新對應的價格]

目標:

{'avg_price': 300.0, '_id': '7成新及以下'}

構建聚合管道:

2027713-5df41d6ee62a1e84.png

構建繪圖所需要的資料結構:
2027713-aa8dd45f8e5a4b9b.png

繪製圖表:
2027713-bfca9bdaac9586fc.png

如何將資料庫匯出為csv

mongoexport -d database -c collection -o output/path.csv

2027713-34a81091f78e2401.png

All source code can be downloaded at GitHub:
https://github.com/jacobkam/WebCrawlerLearning.git

相關文章