成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用python和tableau對數據進行抓取及可視化

大數據 數據可視化
本篇文章介紹使用python抓取貸款及理財平臺的數據,并將數據拼接和匯總。最終通過tableau進行可視化。與之前的python爬蟲文章 不同之處在于之前是一次性抓取生產數據表,本次的數據需要每天重復抓取及存儲,并匯總在一起進行分析和可視化。

[[190576]]

本篇文章介紹使用python抓取貸款及理財平臺的數據,并將數據拼接和匯總。最終通過tableau進行可視化。與之前的python爬蟲文章 不同之處在于之前是一次性抓取生產數據表,本次的數據需要每天重復抓取及存儲,并匯總在一起進行分析和可視化。

 

開始前的準備工作

開始之前先導入所需使用的庫文件,各個庫文件在整個抓取和拼表過程中負責不同的部分。Requests負責頁面抓取,re負責從抓取下

來的頁面中提取有用的信息,pandas負責拼接并生成數據表以及最終的數據表導出。

  1. </pre> 
  2. #導入requests庫(請求和頁面抓取) 
  3. import requests 
  4. #導入正則庫(從頁面代碼中提取信息) 
  5. import re 
  6. #導入科學計算庫(拼表及各種分析匯總) 
  7. import pandas as pd 
  8. <pre>  

設置一個頭文件信息,方便后面的抓取。這個頭文件有兩個作用,第一防止抓取時被封,第二方便后面對頁面源文件的轉碼。

  1. </pre> 
  2. #設置請求中頭文件的信息 
  3. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 
  4. Safari/537.11', 
  5. 'Accept':'text/html;q=0.9,*/*;q=0.8'
  6. 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
  7. 'Connection':'close'
  8. 'Referer':'https://www.bluewhale.cc/' 
  9. <pre>  

抓取貸款及理財信息

準備工作完成后開始對貸款和理財信息進行抓取,這里我們偷個懶,直接抓取p2peye.com的信息。p2peye.com是一個網貸咨詢及數據

平臺,內容很豐富。他們定期更新各平臺的貸款及理財數據。

因為所有的網貸平臺信息都在一頁上,所以抓取起來比較簡單,不需要翻頁。下面是抓取并保存頁面信息的代碼。

  1. </pre> 
  2. #抓取并保存頁面信息 
  3. r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers) 
  4. html=r.content 
  5. <pre>  

抓取下來的信息需要進行轉碼才能變成有用的信息,下面對頁面源代碼進行GBK轉碼。

  1. </pre> 
  2. #對抓取的頁面進行編碼 
  3. html=str(html, encoding = "GBK"
  4. <pre>  

查看一下轉碼后的頁面,我們需要的信息都包含在里面了。后面只需要使用正則表達式逐個提取出來就可以了。

  1. </pre> 
  2. #查看抓取的頁面源碼 
  3. html 
  4. <pre>   

 

提取信息并進行數據清洗

使用正則表達式對應著頁面中的字段逐個將關鍵數據從頁面源碼中提取出來,下面是具體的過程,首先提取的是平臺名稱字段。在頁

面源碼中平臺名稱在title中。

  1. </pre> 
  2. #使用正則提取title字段信息 
  3. title=re.findall(r'"return false".*?title="(.*?)"',html) 
  4. <pre>  

提取后查看下結果,內容很干凈,不需要進行清洗可以直接使用。

  1. </pre> 
  2. #查看title字段信息 
  3. title 
  4. <pre>   

 

這里有一點要注意的是每個提取出來的字段最好都要檢查下,并且查看下數據的條目。因為有時候提取的條目中包含有其他的信息,

導致字段間條目數量不一致,這種情況下后面是無法拼接成數據表的。

  1. </pre> 
  2.  
  3. #查看title字段數量 
  4.  
  5. len(title) 
  6.  
  7. 607 
  8.  
  9. <pre>  

按照提取平臺名稱title的方法,后面我們依次提取了貸款利率,貸款金額,滿標時間等關鍵信息。下面是具體的代碼。

  1. </pre> 
  2.  
  3. #使用正則提取total字段信息 
  4.  
  5. total=re.findall(r'"total">(.*?)萬<',html) 
  6.  
  7. #使用正則提取rate字段信息 
  8.  
  9. rate=re.findall(r'"rate">(.*?)<',html) 
  10.  
  11. #使用正則提取pnum字段信息 
  12.  
  13. pnum=re.findall(r'"pnum">(.*?)人<',html) 
  14.  
  15. #使用正則提取cycle字段信息 
  16.  
  17. cycle=re.findall(r'"cycle">(.*?)月<',html) 
  18.  
  19. #使用正則提取plnum字段信息 
  20.  
  21. p1num=re.findall(r'"p1num">(.*?)人<',html) 
  22.  
  23. #使用正則提取fuload字段信息 
  24.  
  25. fuload=re.findall(r'"fuload">(.*?)分鐘<',html) 
  26.  
  27. #使用正則提取alltotal字段信息 
  28.  
  29. alltotal=re.findall(r'"alltotal">(.*?)萬<',html) 
  30.  
  31. #使用正則提取captial字段信息 
  32.  
  33. capital=re.findall(r'"capital">(.*?)萬<',html) 
  34.  
  35. <pre>  

由于后面我們要對數據進行累計追加及趨勢分析,因此在這里導入time庫生成當天的日期,并將日期作為一個字段一起放在數據表。

  1. </pre> 
  2.  
  3. #導入time庫(獲取日期) 
  4.  
  5. import time 
  6.  
  7. date=time.strftime('%Y-%m-%d',time.localtime(time.time())) 
  8.  
  9. <pre> 
  10.  
  11. 當天的日期信息將和數據一起生成數據表。 
  12.  
  13. </pre> 
  14.  
  15. #日期 
  16.  
  17. date 
  18.  
  19. '2017-04-13' 
  20.  
  21. <pre>  

創建貸款及理財數據表

將前面提取出來的數據和日期信息一起生成數據表,首先使用columns參數設置數據表中各字段的排列順序。

  1. </pre> 
  2.  
  3. #設置數據表各字段順序 
  4.  
  5. columns = ['采集日期','平臺名稱','成交額(萬)','綜合利率','投資人(人)','借款周期(月)','借款人(人)','滿標速度(分鐘)',' 
  6.  
  7. 累計貸款余額(萬)','凈資金流入(萬)'] 
  8.  
  9. <pre>  

然后設置各字段的名稱,并生成數據表。

  1. </pre> 
  2.  
  3. #創建數據表 
  4.  
  5. table=pd.DataFrame({'采集日期':date
  6.  
  7. '平臺名稱':title, 
  8.  
  9. '成交額(萬)':total, 
  10.  
  11. '綜合利率':rate, 
  12.  
  13. '投資人(人)':pnum, 
  14.  
  15. '借款周期(月)':cycle, 
  16.  
  17. '借款人(人)':p1num, 
  18.  
  19. '滿標速度(分鐘)':fuload, 
  20.  
  21. '累計貸款余額(萬)':alltotal, 
  22.  
  23. '凈資金流入(萬)':capital}, 
  24.  
  25. columns=columns) 
  26.  
  27. <pre>  

查看生成的數據表,字段順序與我們設置的一致,下一步把數據表導出為csv文件。便于后續的處理和分析。

  1. </pre> 
  2.  
  3. #查看數據表 
  4.  
  5. table 
  6.  
  7. <pre>   

 

 

導出及追加數據

將生成的數據表導出為csv文件。這里有兩種導出方式。第一是新建數據表。但比較麻煩,后續要需要手動將每天的數據進行拼接。因

此還有第二種導出方式就是在一個數據表中不斷追加新數據。

第一種方式將數據表導出為一個新的csv文件,文件名為wdty加上數據抓取的具體日期,也就是date中的值。

  1. </pre> 
  2.  
  3. #導出csv文件 
  4.  
  5. table.to_csv('C:\\Users\\ Desktop\\wdty'+date+'.csv',index=False
  6.  
  7. <pre>  

第二種方式是在一個csv文件中持續追加導出新的數據表。這里我們建立一個wdty的csv文件,每天抓取的數據都會追加到這個csv文件

中。代碼與之前的新建csv文件類似,唯一的區別是增加了mode參數,這個參數默認值是w,也就是新建。把值改為a就是追加導出。

  1. </pre> 
  2.  
  3. #在歷史csv文件中追加新信息 
  4.  
  5. table.to_csv('wdty.csv',index=False,mode='a'
  6.  
  7. <pre>  

以下是導出后的數據表截圖。內容與前面創建的數據表內容一致。  

 

創建自定義函數

從導入所需的庫文件,到提取數據拼接和導出,我們一共進行了30+步的操作。為了簡化步驟,我們把這些步驟放在一個loan_data自

定義函數中。以后每次只需要執行以下這個自定義函數就可以將數據抓取下來并導出到csv里了。下面是具體的代碼,其中為了獲得代

碼執行中的過程信息,我們在一些關鍵步驟后使用print輸出了一些狀態信息。并計算了整個代碼執行所耗費的時間。

  1. </pre> 
  2. def loan_data(): 
  3. import os 
  4. import requests 
  5. import re 
  6. import pandas as pd 
  7. import time 
  8. start = time.clock() 
  9. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 
  10. Safari/537.11', 
  11. 'Accept':'text/html;q=0.9,*/*;q=0.8'
  12. 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
  13. 'Connection':'close'
  14. 'Referer':'https://www.bluewhale.cc/' 
  15. r=requests.get('http://www.p2peye.com/shuju/ptsj/',headers=headers) 
  16. status=r.status_code 
  17. if status == 200: 
  18. print('頁面抓取狀態正常。'
  19. else
  20. os._exit(0) 
  21. html=r.content 
  22. html=str(html, encoding = "GBK"
  23. print('編碼轉換完成!'
  24. title=re.findall(r'"return false".*?title="(.*?)"',html) 
  25. total=re.findall(r'"total">(.*?)萬<',html) 
  26. rate=re.findall(r'"rate">(.*?)<',html) 
  27. pnum=re.findall(r'"pnum">(.*?)人<',html) 
  28. cycle=re.findall(r'"cycle">(.*?)月<',html) 
  29. p1num=re.findall(r'"p1num">(.*?)人<',html) 
  30. fuload=re.findall(r'"fuload">(.*?)分鐘<',html) 
  31. alltotal=re.findall(r'"alltotal">(.*?)萬<',html) 
  32. capital=re.findall(r'"capital">(.*?)萬<',html) 
  33. date=time.strftime('%Y-%m-%d',time.localtime(time.time())) 
  34. print('數據提取完成!'
  35. columns = ['采集日期','平臺名稱','成交額(萬)','綜合利率','投資人(人)','借款周期(月)','借款人(人)','滿標速度(分 
  36. 鐘)','累計貸款余額(萬)','凈資金流入(萬)'] 
  37. table=pd.DataFrame({'采集日期':date
  38. '平臺名稱':title, 
  39. '成交額(萬)':total, 
  40. '綜合利率':rate, 
  41. '投資人(人)':pnum, 
  42. '借款周期(月)':cycle, 
  43. '借款人(人)':p1num, 
  44. '滿標速度(分鐘)':fuload, 
  45. '累計貸款余額(萬)':alltotal, 
  46. '凈資金流入(萬)':capital}, 
  47. columns=columns) 
  48. print('數據表創建完成!'
  49. table.to_csv('C:\\Users\\cliffwang\\Desktop\\wdty'+date+'.csv',index=False
  50. print(date+'日數據導出完畢!'
  51. table.to_csv('wdty.csv',index=False,mode='a'
  52. print('累計數據追加導出完畢!'
  53. end = time.clock() 
  54. print ("執行時間: %f s" % (end-start)) 
  55. <pre>  

自定義函數寫好后,每次只需要執行loan_data()就可以完成之前的30+步驟的工作了。下面是代碼和輸出的狀態信息以及代碼執行時間信息。

  1. </pre> 
  2. loan_data() 
  3.  
  4. 頁面抓取狀態正常。 
  5. 編碼轉換完成! 
  6. 數據提取完成! 
  7. 數據表創建完成! 
  8. 2017-04-19日數據導出完畢! 
  9. 累計數據追加導出完畢! 
  10. 執行時間: 0.933262 s 
  11. <pre>  

使用tableau進行可視化

導出的數據雖然為csv格式,但使用excel進行可視化并不理想,主要問題在于excel對圖表行列數的限制(每張圖最多只能容納255個數

量列)。因此,我們將數據表導入到tableau中進行可視化。下面是對600+家網貸平臺數據的可視化截圖。尺寸為各平臺總成交額,顏色為綜合利率。   

 

所有文章及圖片版權歸 藍鯨(王彥平)所有。 

責任編輯:龐桂玉 來源: 36大數據
相關推薦

2017-02-22 13:48:49

Tableau可視化

2023-02-15 08:24:12

數據分析數據可視化

2021-11-09 08:15:18

Grafana 數據可視化運維

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2021-02-20 09:14:35

PythonPygal可視化

2015-08-20 10:00:45

可視化

2018-10-11 20:47:23

書籍數據可視化數據分析

2021-10-11 08:04:22

Python數據行程

2017-10-14 13:54:26

數據可視化數據信息可視化

2014-05-28 15:23:55

Rave

2023-07-20 08:00:00

可視化數據Python

2019-08-02 09:39:57

Python可視化技術腳本語言

2022-08-26 09:15:58

Python可視化plotly

2023-05-06 12:57:34

Python工具

2023-10-10 09:13:15

Python數據的操作轉換

2020-05-26 11:34:46

可視化WordCloud

2022-02-23 09:50:52

PythonEchartspyecharts

2021-04-09 10:42:03

數據可視化框架大數據

2024-12-24 07:30:00

Seaborn可視化Python

2018-05-07 14:50:27

可視化數據散點圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区免费视频 | 国产精品久久久久久久久久久免费看 | 国产午夜精品一区二区三区四区 | 久久综合激情 | 欧美区在线 | 成人av网站在线观看 | 精品欧美一区二区三区久久久 | 天天色影视综合 | 一区在线播放 | 一区二区三区免费 | av av在线 | 亚洲精品乱码久久久久久按摩观 | 久久精品久久久久久 | 亚洲区一区二区 | 中文字幕在线观看第一页 | 青青草av在线播放 | 日本三级电影在线看 | 一区二区三区免费在线观看 | 国产精品 欧美精品 | 成在线人视频免费视频 | 国产欧美日韩综合精品一区二区 | 国产日韩一区二区 | 免费黄色录像视频 | av在线一区二区三区 | 精品国产乱码久久久久久中文 | 国产精品久久久久一区二区三区 | 国产一区二区不卡 | 精品视频一区二区三区在线观看 | 日韩毛片 | 国产91在线观看 | 欧美激情第一区 | 精品成人一区二区 | 欧美不卡视频一区发布 | 91看片网| 偷拍自拍第一页 | 9191av| 久久精品国产99国产精品 | 色婷婷综合成人av | 在线一区二区国产 | 99精品视频在线观看免费播放 | 一级全黄少妇性色生活免费看 |