【爬蟲學習】資料繪成圖表學習心得
使用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='七日...'))) 固定結構