1. 程式人生 > >【爬蟲學習】資料繪成圖表學習心得

【爬蟲學習】資料繪成圖表學習心得

使用jupyter Notebook網上編輯器進行程式碼編寫,程式碼聯想可以用table鍵

1、符號庫匯入,from string import punctuation

使用if i not in punctuation

2、對MongoDB資料庫進行操作,

import pymongo

client = pymongo.MongoClient('localhost'.27017)

ceshi = client['ceshi']

item_info = ceshi['item_infoX']

3、字串操作,要學會這種操作的套路

for i in item_info.find().limit(300)

4、資料清洗,使用列表的解析式

for i in item_info.find():

  if i['area']:

       area = [i for i in i['area'] if i not in punctuation]

...

5、為了防止資料出問題,首先備份資料

在jupyter 中新建terminal 輸入命令

>mongod

>mongo

>show dbs  看資料庫中都有哪些資料庫(excel)

>use ceshi  轉向某一個庫中

>show tables  看ceshi庫中都有幾個collection(等同於excel的table)

>db.createCollection('item_infoY')  建立一個空的collection,名叫'item_infoY'

>db.item_infoX.copyTo('item_infoY')  將item_infoX中資料複製到item_infoY

6、將資料清洗後,更新到資料庫中

利用update資料

 已有資料結構{id:1,name:0,info:3}

updata({id:1},{$set:{name:2}})   $:操作符,對set起作用

update({要修改的位置},{採用什麼命令(修改方式),要修改什麼欄位})

7、資料視覺化

庫:charts

要畫圖的資料series,這是一個列表,列表內是多個字典,字典裡有各種鍵值

series = [{

'name':' ...',

'data':[11],    這個數值一定要是列表

'type':'column'

}

。。。

]

8、對area_list列表(裡邊是發帖的區域)計數

先去重area_index = list(set(area_list))   set是集合命令,肯定沒有重複的

計數:for index in area_index:

   post_time.append(area_list.count(index))   這裡利用count命令,來實現計數

9、利用子函式生成charts需要的series資料

def data_gen(types):

   for area,time in zip(area_index,post_times):

          data = {

                 'name':area,

                  'data':[times],

                   ‘type’:types

                   }

          yield data  迭代器  替我們自動調整資料結構

簡單地講,yield 的作用就是把一個函式變成一個 generator,帶有 yield 的函式不再是一個普通函式,Python 直譯器會將其視為一個 generator,呼叫data_gen(types)不會執行data_gen函式,而是返回一個 iterable 物件!在 for 迴圈執行時,每次迴圈都會執行data_gen 函式內部的程式碼,執行到 yield b 時,data_gen 函式就返回一個迭代值,下次迭代時,程式碼從 yield b 的下一條語句繼續執行,而函式的本地變數看起來和上次中斷執行前是完全一樣的,於是函式繼續執行,直到再次遇到 yield。

10、生成圖

series = [data for data in data_gen('column')]   列表解析式,比for迴圈快很多

charts.plot(series,show='inline', option= dict(title=dict(text='七日...')))  固定結構