翻譯網(wǎng)站怎么做網(wǎng)站策劃報告
文章目錄
- 1.數(shù)據(jù)分析基本流程
- 1.1 數(shù)據(jù)采集
- 1.2 數(shù)據(jù)提煉
- 1.3 數(shù)據(jù)探索分析
- 2.數(shù)據(jù)獲取的方法和工具
- 2.1 數(shù)據(jù)解鎖器
- 2.2 爬蟲瀏覽器
- 2.3 數(shù)據(jù)洞察市場
- 3.完整案例分析:從數(shù)據(jù)采集到數(shù)據(jù)可視化
- 3.1 直接按需定制數(shù)據(jù)集獲取數(shù)據(jù)
- 3.2 獲取IP代理,利用python爬取數(shù)據(jù)
- 3.3 數(shù)據(jù)可視化
- 4.總結(jié)
1.數(shù)據(jù)分析基本流程
1.1 數(shù)據(jù)采集
數(shù)據(jù)采集顧名思義就是獲取數(shù)據(jù)源的各類數(shù)據(jù),它在數(shù)據(jù)分析和處理中扮演著至關(guān)重要的角色。
數(shù)據(jù)源的類型包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),這些數(shù)據(jù)類型的多樣性要求數(shù)據(jù)采集系統(tǒng)具備更高的靈活性和用戶自定義能力。
由于很多數(shù)據(jù)應(yīng)用都需要來自互聯(lián)網(wǎng)的外部數(shù)據(jù),因此,常常會用到網(wǎng)絡(luò)爬蟲,按照一定的規(guī)則,自動遞抓取互聯(lián)網(wǎng)信息的程序或者腳本。
再者,在大數(shù)據(jù)環(huán)境下,數(shù)據(jù)采集技術(shù)面臨許多挑戰(zhàn),包括數(shù)據(jù)源種類多、數(shù)據(jù)類型復雜、數(shù)據(jù)量大且產(chǎn)生速度快等問題。因此,保證數(shù)據(jù)采集的可靠性和高效性,避免重復數(shù)據(jù)成為關(guān)鍵考量因素。
數(shù)據(jù)采集常常需要面臨和克服以下問題:
- 數(shù)據(jù)多樣性:源數(shù)據(jù)以各種格式存在,如文本、圖片、視頻等,需要掌握各種格式的處理方式。
- 大數(shù)據(jù):數(shù)據(jù)海量且增長快,需要高效準確的定位到所需要的數(shù)據(jù)信息。
- 數(shù)據(jù)安全與隱私:在采集和存儲數(shù)據(jù)的過程中,需要確保數(shù)據(jù)的安全性和保護用戶隱私,避免數(shù)據(jù)泄露和濫用。
- 實時性要求:某些應(yīng)用對數(shù)據(jù)的實時性有嚴格要求,如何在短時間內(nèi)采集并處理大量實時數(shù)據(jù)是一個技術(shù)難題。
- 網(wǎng)絡(luò)限制:對于在線數(shù)據(jù)采集,網(wǎng)絡(luò)的穩(wěn)定性和速度可能會影響數(shù)據(jù)的實時獲取,因此需要一個穩(wěn)定高效的網(wǎng)絡(luò)。
- 頻率限制:針對某公共網(wǎng)址,多次采集會遭到封禁,因此,需要切換不同的IP,或者仿真模擬真人操作采集數(shù)據(jù)。
- 技術(shù)機制:為了防止外部造成網(wǎng)址癱瘓,很多網(wǎng)站會設(shè)置各種機制,如驗證碼、IP 限制、動態(tài)頁面等,因此需要擁有專業(yè)的技術(shù)處理才能獲取數(shù)據(jù)。
針對這些問題,要么自己技術(shù)夠用,要么能找到技術(shù)夠硬的平臺,通過技術(shù)平臺解決難題或獲取數(shù)據(jù)。
1.2 數(shù)據(jù)提煉
數(shù)據(jù)采集主要是將數(shù)據(jù)匯集在一起,為數(shù)據(jù)提煉做準備,而數(shù)據(jù)提煉是將采集的數(shù)據(jù)轉(zhuǎn)化為有用信息的過程,常用到的技術(shù)有ETL。
ETL技術(shù):主要用來描述將數(shù)據(jù)從來源端經(jīng)過抽取(Extract)、轉(zhuǎn)換(Transform)、加載(Load)到目的端的過程。主要講網(wǎng)頁企業(yè)中的分散、凌亂、不統(tǒng)一的數(shù)據(jù)整合在一起,進行分析探索和決策。
數(shù)據(jù)提煉通常涉及以下幾個關(guān)鍵步驟:
- 數(shù)據(jù)抽取:從無結(jié)構(gòu)或半結(jié)構(gòu)化的數(shù)據(jù)中提取關(guān)鍵信息,并將其組織成結(jié)構(gòu)化格式,便于機器理解和處理。
- 數(shù)據(jù)加工:數(shù)據(jù)加工通常有字段映射、數(shù)據(jù)過濾、數(shù)據(jù)清洗、數(shù)據(jù)替換、數(shù)據(jù)計算、數(shù)據(jù)驗證、數(shù)據(jù)合并和數(shù)據(jù)拆分,移除或修正錯誤、重復或不完整的數(shù)據(jù),確保數(shù)據(jù)質(zhì)量的完整性。
- 數(shù)據(jù)轉(zhuǎn)換:將數(shù)據(jù)轉(zhuǎn)換成適合分析的格式,例如通過歸一化或標準化數(shù)值,常用到有數(shù)據(jù)挖掘技術(shù)。
常用的一些ETL工具有三種:
- DataStage:數(shù)據(jù)集成軟件平臺,專門針對多值數(shù)據(jù)源進行簡化和自動化,提供圖形框架用于轉(zhuǎn)換、清洗和加載數(shù)據(jù),能夠處理大型數(shù)據(jù)庫、關(guān)系數(shù)據(jù)和普通文件。
- Informatica PowerCenter:企業(yè)級需求而設(shè)計的企業(yè)數(shù)據(jù)集成平臺,支持結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),提供豐富的數(shù)據(jù)轉(zhuǎn)換組件和工作流支持。
- Kettle:開源的ETL工具,數(shù)據(jù)抽取高效穩(wěn)定,管理來自不同數(shù)據(jù)庫的數(shù)據(jù),提供圖形化的操作界面,支持工作流。
1.3 數(shù)據(jù)探索分析
數(shù)據(jù)探索分析可以分為數(shù)據(jù)分析和數(shù)據(jù)解釋。
- 數(shù)據(jù)分析旨在發(fā)現(xiàn)數(shù)據(jù)中的規(guī)律、趨勢和關(guān)聯(lián)性,以支持和指導決策制定。常用到的方法有描述性分析(對數(shù)據(jù)的基本特征進行概括和描述)、回歸分析(用于研究變量之間的關(guān)系)、聚類分析(將數(shù)據(jù)進行分組)。
關(guān)聯(lián)規(guī)則挖掘:發(fā)現(xiàn)不同數(shù)據(jù)項之間的關(guān)聯(lián)。 - 數(shù)據(jù)解釋的主要工作是對提煉的數(shù)據(jù)采用人機交互方式將結(jié)果展示給用戶,為了更清晰有效地傳遞信息,通常會使用圖形和圖表,在視覺上更好地傳遞信息,有效的可視化可以幫助用戶分析和探索數(shù)據(jù),使復雜的數(shù)據(jù)更容易理解和使用。
2.數(shù)據(jù)獲取的方法和工具
網(wǎng)絡(luò)爬蟲是數(shù)據(jù)獲取的常用方法,和代理IP配合能保證數(shù)據(jù)采集的穩(wěn)定運行。市面上有許多代理IP,選擇通常有一套標準,不合格的代理可能導致爬蟲頻繁中斷和失敗等產(chǎn)生一系列問題,所以對于挑選可以參考以下幾個方面:
- 試用服務(wù):不同的代理IP,通常有一定的試用服務(wù),可以通過測試對比代理的性能和適用性。
- 用戶評價和反饋:代理IP服務(wù)于用戶,可以多查看其他用戶使用的評價和反饋,或者參考行業(yè)內(nèi)相關(guān)人士的評測和推薦。
- 安全性和隱私保護:查看服務(wù)商的隱私政策,確保他們不會記錄你的活動數(shù)據(jù)。
- IP池的規(guī)模和多樣性:擁有大規(guī)模和多樣化的IP池可以提供更好地覆蓋和較低的封禁風險。
- 可靠性和穩(wěn)定性:通過試用檢查代理服務(wù)的運行時間和性能歷史記錄,確保它們能提供穩(wěn)定可靠的服務(wù)。
- 專業(yè)的技術(shù)支持和服務(wù):查看對應(yīng)服務(wù)商的用戶手冊和資源,咨詢對應(yīng)客服,看是否提供良好的支持和服務(wù)。
剛好近期需要使用IP代理獲取數(shù)據(jù),通過不斷地了解,發(fā)現(xiàn)亮數(shù)據(jù)有許多用戶評價和反饋,好評眾多,因此,博主立馬進行了注冊,通過測試使用后,發(fā)現(xiàn)IP質(zhì)量特別好,工具也多,整體特別滿意,有興趣的可以試試 👉亮數(shù)據(jù)官網(wǎng)數(shù)據(jù)獲取。
2.1 數(shù)據(jù)解鎖器
數(shù)據(jù)解鎖器是一種繞過網(wǎng)絡(luò)限制或檢測,模擬真人訪問解鎖網(wǎng)站網(wǎng)站并抓取數(shù)據(jù)。它能完全模仿真人挖掘網(wǎng)頁數(shù)據(jù),擁有管理IP發(fā)送請求率、設(shè)置請求間隔、校準參照標頭、識別蜜罐陷阱、模仿真人和設(shè)備等功能。
解鎖器的優(yōu)點有:
- 自動解鎖,自動重試。仿真瀏覽器指紋,解鎖各大網(wǎng)站,設(shè)置請求間隔不斷自動重試獲取數(shù)據(jù)。
- 驗證碼解決方案。擁有多套方案,自動識別驗證碼中的字符或圖形,運用成熟的技術(shù)來處理驗證碼。
- 應(yīng)對目標網(wǎng)站的更改。及時發(fā)現(xiàn)網(wǎng)站的更改情況,調(diào)整采集策略,確保隨時能正常獲取數(shù)據(jù)。
- 選定域的結(jié)果解析和異步請求。在特定的領(lǐng)域范圍內(nèi),對結(jié)果進行深入解析和分析,并發(fā)起不同步的請求操作,不阻塞當前的執(zhí)行任務(wù),提高系統(tǒng)的并發(fā)處理能力和效率。
2.2 爬蟲瀏覽器
數(shù)據(jù)瀏覽器有很多,但大多都不夠?qū)I(yè),對網(wǎng)絡(luò)爬蟲抓取數(shù)據(jù)并沒有提供更多的幫助。但亮數(shù)據(jù)提供的爬蟲瀏覽器內(nèi)置網(wǎng)站解鎖功能,集成了亮網(wǎng)絡(luò)解鎖器自動化解鎖能力,并且自動管理所有網(wǎng)站深層解鎖操作,包括:驗證碼解決、瀏覽器指紋識別、自動重試和選擇標頭等。
爬蟲瀏覽器的亮點如下:
- 解鎖最強大的網(wǎng)頁屏蔽。大規(guī)模抓取總是需要復雜的解鎖操作,亮數(shù)據(jù)瀏覽器后臺自動管理所有網(wǎng)站解鎖操作:CAPTCHA解決、瀏覽器指紋識別、自動重試、標頭選擇、cookie和Javascript渲染等,節(jié)省時間和資源。
- 輕易繞過任何機器人檢測軟件。使用 AI 技術(shù),亮數(shù)據(jù)瀏覽器會不斷調(diào)整,自動學習繞過機器人檢測系統(tǒng),以真實用戶瀏覽器的形式出現(xiàn)在機器人檢測系統(tǒng)中,以實現(xiàn)比代理更高的解鎖成功率,告別屏蔽麻煩,節(jié)約成本。
- 根據(jù)需要批量使用網(wǎng)絡(luò)抓取瀏覽器。亮數(shù)據(jù)瀏覽器托管在強大的可高度擴展的基礎(chǔ)架構(gòu)之上,這賦予你自由使用任何數(shù)量的瀏覽器來運行數(shù)據(jù)抓取項目的可能
- 兼容Puppeteer, Playwright和Selenium。輕松調(diào)用API以獲取任意數(shù)量的瀏覽器會話,并使用Puppeteer (Python)、Playwright (Node.js)或Selenium與它們交互。非常適合需要網(wǎng)站交互來檢索數(shù)據(jù)的抓取項目,例如將鼠標懸停在頁面上、單擊按鈕、滾動、添加文本等。
2.3 數(shù)據(jù)洞察市場
數(shù)據(jù)洞察市場是一個利用數(shù)據(jù)分析為組織提供有價值見解的領(lǐng)域,它能快速地收集市場相關(guān)行業(yè)的數(shù)據(jù),通過不斷地對比和定位,發(fā)現(xiàn)潛在問題,指定合理更有效地方案,增強在市場上的競爭力。
最常見的一些指標和策略有:
- 市場份額:收集同行業(yè)市場份額的相關(guān)數(shù)據(jù),分析自己的優(yōu)劣勢,并作出調(diào)整。
- 價格優(yōu)化:收集對比各大平臺的產(chǎn)品價格,跟蹤同類產(chǎn)品不同季節(jié)時段的價格調(diào)整,優(yōu)化自己的價格,獲取利潤同時,保有競爭力。
- 產(chǎn)品匹配:庫存匹配,以確保你能在物流備貨方面處于競爭優(yōu)勢。了解競品的庫存和已售數(shù)量,基于數(shù)據(jù)發(fā)現(xiàn)潛在熱品,靈活更新庫存減少成本壓力。
- 高效運營:跟蹤所有 SKU 并自動識別庫存問題(缺貨)、促銷和低效活動、銷售額或利潤下降等來優(yōu)化運營,優(yōu)化生產(chǎn)。
只要清楚市場,才能知道需要什么數(shù)據(jù),站在市場角度,收集集成各大公眾平臺數(shù)據(jù),優(yōu)先進行分析和訓練,得出更好的市場洞察力。
3.完整案例分析:從數(shù)據(jù)采集到數(shù)據(jù)可視化
需求目標:以豆瓣網(wǎng)為例,獲取豆瓣讀書排行榜Top250(https://book.douban.com/top250)數(shù)據(jù),整合梳理有效信息,制作數(shù)據(jù)可視化報告。
3.1 直接按需定制數(shù)據(jù)集獲取數(shù)據(jù)
分析:在這里我們使用亮數(shù)據(jù)的“按需定制數(shù)據(jù)集”,根據(jù)自己的需要和使用場景定制自己的數(shù)據(jù)集。
- 進入到網(wǎng)絡(luò)數(shù)據(jù)采集頁面,選擇數(shù)據(jù)產(chǎn)品為“按需定制數(shù)據(jù)集”。
- 點擊選擇自定義默認數(shù)據(jù)集,開始創(chuàng)建代理端口。
- 填寫需要獲取的數(shù)據(jù)集名字、包含的內(nèi)容,查看豆瓣讀書排行榜Top250每頁分布,可得出每頁對應(yīng)的URL,依次填入,點擊下一頁。
- 等待一定時間,我們可以查看獲取數(shù)據(jù)集的數(shù)據(jù)字典,其中,可以根據(jù)自己的需要可以添加、修改和刪除字段或者字段類型。
- 確定表結(jié)構(gòu)沒有問題后,我們可以查看數(shù)據(jù)樣例,并且能導出CSV數(shù)據(jù)。
可見,直接根據(jù)網(wǎng)址的提示進行操作,非??焖倬湍塬@取到自己想要的數(shù)據(jù)。
3.2 獲取IP代理,利用python爬取數(shù)據(jù)
眾所周知,爬蟲速度過快,頻繁訪問都會被封IP,怎么解決這個問題呢?再去換一臺設(shè)備?先不說數(shù)據(jù)是否同步,僅僅換個設(shè)備的成本就不低,這個時候就需要代理IP了,根據(jù)獲得的代理IP,直接在python的使用。
1)準備工作
導入本次需要用到的基本模塊,以下所有的執(zhí)行都在這基礎(chǔ)上運行。
from bs4 import BeautifulSoup # 用于解析HTML和XML文檔
import requests # 爬蟲庫
import re # 正則庫
import pandas as pd # 數(shù)據(jù)處理庫
import times # 防止爬取過快
進入到豆瓣網(wǎng)址,點擊不同的頁面,可以發(fā)現(xiàn)網(wǎng)址URL有如下:
# 第一頁
https://book.douban.com/top250?start=0
# 第二頁
https://book.douban.com/top250?start=25
# 第三頁
https://book.douban.com/top250?start=50
通過觀察可以發(fā)現(xiàn),URL后面參數(shù)是25的倍數(shù)變化,因此可以使用如下代碼替代:
# 設(shè)置翻頁for i in range(10):# 根據(jù)每一頁的URL規(guī)律定義url = 'https://book.douban.com/top250?start=' + str(i*25) + '&filter='print(url)
2)獲取網(wǎng)頁源碼數(shù)據(jù)
a. 在不使用任何代理情況下,直接模擬瀏覽器,添加請求頭,發(fā)起請求。
# 定義獲取源碼函數(shù)
def get_html_info1(url):# 請求頭headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 發(fā)起請求,返回響應(yīng)對象response = requests.get(url, headers=headers)# 解析網(wǎng)頁內(nèi)容soup = BeautifulSoup(response.text, 'html.parser')# 打印查看信息print(soup)return soup
# 使用該函數(shù)
get_html_info1("https://book.douban.com/top250?start=0")
多次請求后出現(xiàn)404!!!
b. 進一步優(yōu)化,在這里我從 亮數(shù)據(jù)官方網(wǎng)站中注冊獲取到的IP,我們使用它進行發(fā)起請求,獲取數(shù)據(jù)。
# 定義獲取源碼函數(shù)
def get_html_info2(url):# 請求頭headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 根據(jù)獲取到的IP,添加代理proxies = {'http': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225','https': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225'}# 發(fā)起請求,返回響應(yīng)對象response = requests.get(url, headers=headers,proxies=proxies)# 解析網(wǎng)頁內(nèi)容soup = BeautifulSoup(response.text, 'html.parser')# 打印查看信息print(soup)return soup
# 使用該函數(shù)
get_html_info2("https://book.douban.com/top250?start=0")
c. 繼續(xù)在亮數(shù)據(jù)中探索發(fā)現(xiàn),平臺的亮網(wǎng)絡(luò)解鎖器和亮數(shù)據(jù)解鎖器,只需要將所需要的URL放入,調(diào)整通道和地區(qū),爬蟲代碼無需修改直接可復用。
#!/usr/bin/env python
print('If you get error "ImportError: No module named \'six\'" install six:\n'+\'$ sudo pip install six');
print('To enable your free eval account and get CUSTOMER, YOURZONE and ' + \'YOURPASS, please contact sales@brightdata.com')
import sys
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
if sys.version_info[0]==2:import sixfrom six.moves.urllib import requestopener = request.build_opener(request.ProxyHandler({'http': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225','https': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225'}))print(opener.open('https://book.douban.com/top250?start=0').read())
if sys.version_info[0]==3:import urllib.requestopener = urllib.request.build_opener(urllib.request.ProxyHandler({'http': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225','https': 'http://brd-customer-hl_93341477-zone-web_unlocker2:ke6rcbba1z0z@brd.superproxy.io:22225'}))print(opener.open('https://book.douban.com/top250?start=0').read())
在Pycharm中可以使用示例代碼直接爬取源碼,不用自己調(diào)整任何東西。爬取的源碼通常還不能直接使用,需要進一步進行提煉。
可以發(fā)現(xiàn)b和c兩部分獲取數(shù)據(jù)非常穩(wěn)定,未出現(xiàn)異常情況,代理IP
2)數(shù)據(jù)提煉
首先,打開開發(fā)者工具查看HTML源碼,聚焦選中要定位的元素,可以發(fā)現(xiàn)書本信息集中在<div,class="indent"><table></table></div>
標簽中;
其次,較為復雜的是出版相關(guān)的信息,數(shù)據(jù)有"余華 / 作家出版社 / 2012-8 / 20.00元"、“[英] 阿·柯南道爾 / 丁鐘華 等 / 群眾出版社 / 1981-8 / 53.00元/68.00元”、“少年兒童出版社 / 1962 / 30.00元”,存在著作者和譯者兩者其一或都無情況,因此,對數(shù)據(jù)進行分割時需要分情況處理。創(chuàng)建一個get_data函數(shù)用于提煉數(shù)據(jù),如下:
def get_data(soup,data_list):# 獲取<div,class="indent"><table></table></div>標簽中所有的圖書信息book_list = soup.find('div', class_='indent').find_all('table')# 遍歷圖書列表for book in book_list:# 書名:根據(jù)<div,class='pl2'><a></a></div>標簽提取信息title = book.find('div', class_='pl2').find('a')['title']# 評分:根據(jù)<span,class='rating_nums'></span>標簽提取信息rating = book.find('span', class_='rating_nums').text# 評價人數(shù):根據(jù)<span,class='pl'></span>標簽提取信息,正則出需要的數(shù)量comment_count = re.search(r'\d+', book.find('span', class_='pl').text).group()# 推薦語:根據(jù)<span,class='inq'></span>標簽提取信息,如果沒有則賦空quote = book.find('span', class_='inq').text if book.find('span', class_='inq') else None# 書本出版相關(guān)信息:根據(jù)<p,class='pl'></span>標簽提取信息publisher_info = book.find('p', class_='pl').text# 作者和譯者:并不是所有的圖書都有,因此需要根據(jù)實際信息分情況處理if publisher_info.count(' / ') == 4:author = publisher_info.split(' / ')[-5].strip()translator = publisher_info.split(' / ')[-4].strip()elif publisher_info.count(' / ') == 2:author = Nonetranslator = Noneelse:author = publisher_info.split(' / ')[-4].strip()translator = None# 出版社:根據(jù)提取的出版信息分隔符提取publisher = publisher_info.split(' / ')[-3].strip()# 定價:由于定價存在多種情況,根據(jù)提取的出版信息分隔符和正則匹配信息price = re.sub(r'(元)|(CNY\s)|(NT\$)', '', publisher_info.split(' / ')[-1].strip())# 出版年year = publisher_info.split(' / ')[-2].strip().split('-')[0]# 書本鏈接book_link = book.find('a')['href']# 封面圖片鏈接img_link = book.find('a').find('img')['src']# 打印查看每次獲取提煉的信息print({'書名': title, '評分': rating, '評價人數(shù)': comment_count, '推薦語': quote, '作者': author, '譯者': translator, '出版社': publisher, '出版年': year, '定價': price, '書本鏈接': book_link, '封面圖片鏈接': img_link})# 將獲取的信息合并追加data_list.append({'書名': title, '評分': rating, '評價人數(shù)': comment_count, '推薦語': quote, '作者': author, '譯者': translator, '出版社': publisher, '出版年': year, '定價': price, '書本鏈接': book_link, '封面圖片鏈接': img_link})return data_list
# 使用get_html_info1函數(shù)獲取HTML源碼
get_html_info1("https://book.douban.com/top250?start=0")
# 使用get_data函數(shù)提煉數(shù)據(jù)
get_data(soup,data_list)
執(zhí)行查看打印結(jié)果如下:
3)數(shù)據(jù)導出
數(shù)據(jù)提煉完成,我們常常需要保存數(shù)據(jù)或者數(shù)據(jù)入庫,方便查看和其他工具調(diào)用,因此,定義數(shù)據(jù)導出函數(shù)如下:
# 定義數(shù)據(jù)導出CSV函數(shù)
def data_to_csv(data_list):# 創(chuàng)建DataFrame對象df = pd.DataFrame(data_list)# 保存為CSV文件df.to_csv('douban_dushu.csv',index=False)
使用數(shù)據(jù)導出函數(shù),并且查看數(shù)據(jù),可以發(fā)現(xiàn)總共獲取了11列250行數(shù)據(jù)。
3.3 數(shù)據(jù)可視化
數(shù)據(jù)可視化又可以稱為數(shù)據(jù)解釋,主要工作是對數(shù)據(jù)進行處理,將結(jié)果更直觀地展現(xiàn),使復雜的數(shù)據(jù)更容易理解和使用,在本節(jié)中做基本的演示。
1)準備工作
導入數(shù)據(jù)可視化用到的基本庫,讀取提取到的數(shù)據(jù)。
import pandas as pd
from pyecharts import options as opts
from pyecharts.options import ComponentTitleOpts
from pyecharts.charts import Bar, Line # 繪制條形圖和線圖
from pyecharts.charts import TreeMap # 繪制樹形圖
from pyecharts.components import Table # 繪制表格
df = pd.read_csv('douban_dushu.csv') # 讀取提煉的數(shù)據(jù)
2)做明細表
根據(jù)提煉的數(shù)據(jù),明細表可以幫助用戶高效地查看、編輯和分析詳細的數(shù)據(jù)信息,便于查看和發(fā)現(xiàn)問題,圖書詳情盡在掌握。
table = Table()
headers = df.columns.tolist() # 表列表
rows = [list(row) for row in df.values] # 數(shù)據(jù)列表
table.add(headers, rows) # 表單中添加表頭和數(shù)據(jù)
table.set_global_opts(title_opts=ComponentTitleOpts(title="豆瓣讀書Top205明細") # 添加標題
)
table.render("豆瓣讀書Top205明細.html") # 導出HTML查看
3)繪制柱形圖
柱形圖能更直觀地查看和對比不同年份出版的圖書情況,因此,我們進一步繪制查看讀書Top250中出版年的圖書數(shù)量變化。
year_counts = df['出版年'].value_counts() # 根據(jù)出版年份統(tǒng)計圖書數(shù)量
year_counts.columns = ['出版年', '數(shù)量'] # 匯總的數(shù)據(jù)定義列名
year_counts = year_counts.sort_index() # 根據(jù)數(shù)量排序
c = (Bar().add_xaxis(list(year_counts.index)).add_yaxis('圖書數(shù)量', year_counts.values.tolist()).set_global_opts(title_opts=opts.TitleOpts(title='各年份圖書數(shù)量'), # 標題yaxis_opts=opts.AxisOpts(name='數(shù)量'), # y軸xaxis_opts=opts.AxisOpts(name='出版年'), # x軸datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_='inside')],) # 數(shù)據(jù)顯示位置.render('各年份圖書數(shù)量.html'))
4)繪制矩形樹形圖
我們可以使用矩形樹形圖查看不同的出版社出版圖書的分布情況。
publisher = df['出版社'].value_counts() # 根據(jù)出版社統(tǒng)計圖書數(shù)量
output_list = [{"value": value, "name": name} for name, value in publisher.items()] # 轉(zhuǎn)化為列表嵌套字段形式
c = (TreeMap().add("", output_list).set_global_opts(title_opts=opts.TitleOpts(title="出版社分析")).render("出版社分析.html")
)
4)繪制組合圖
通過明細數(shù)據(jù)可以看到,圖書有評分和評價人數(shù),進一步分析三種的數(shù)據(jù)情況,在這里我們繪制組合圖統(tǒng)一展示:
# 創(chuàng)建bar對象,并制定畫布大小
bar = Bar(init_opts=opts.InitOpts(width='1200px',height='300px'))
# 將數(shù)據(jù)根據(jù)評分、評價人數(shù)、書名進行升序排列
df3 = df.sort_values(by=['評分','評價人數(shù)','書名'],ascending=False)
# 依次將排名前十的三列數(shù)據(jù)拿出
x_data = df3['書名'].tolist()[:10]
rating = df3['評分'].tolist()[:10]
comment_count = df3['評價人數(shù)'].tolist()[:10]
# 柱形圖設(shè)置
bar = (Bar().add_xaxis(x_data) # x軸.add_yaxis( # y軸系列數(shù)據(jù)series_name="評價人數(shù)",y_axis=comment_count,yaxis_index=0,z=0,color="#d14a61",bar_width=40, ).extend_axis( # 擴展的y軸系列參數(shù)配置yaxis=opts.AxisOpts(type_="value", name="評分", name_gap=30, min_=0, max_=10,axislabel_opts=opts.LabelOpts(font_size=15), axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="black") ),splitline_opts=opts.SplitLineOpts( is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1) ),)).set_global_opts( # y軸系列參數(shù)配置 yaxis_opts=opts.AxisOpts( name="評價人數(shù)", name_gap=60, min_=0, max_=500000, interval=50000, axislabel_opts=opts.LabelOpts(font_size=14), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color="blank")),),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="豆瓣讀書前十評分和評價人數(shù)",pos_left="center",pos_top="top"),legend_opts=opts.LegendOpts(pos_left='40%',pos_bottom='89%'),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),)
)
# 折線圖設(shè)置
line = (Line().add_xaxis(x_data).add_yaxis(series_name="評分", y_axis=rating,symbol='triangle',symbol_size=15,yaxis_index=1, color="#aa00ff",label_opts=opts.LabelOpts(is_show=False, font_size=10,font_weight='bold'),linestyle_opts=opts.LineStyleOpts(width=3) )
)
bar.overlap(line).render("豆瓣讀書前十評分和評價人數(shù).html")
常見的數(shù)據(jù)可視化工具主要分為三類:底層程序框架;第三方庫;軟件工具。在這里使用的是第三方庫,主要是使用Python的pyecharts進行了制作,如果想了解更多,可以前往pyecharts官網(wǎng),當然也可以通過其他軟件工具實現(xiàn),如Tableau、PowerBI等。
4.總結(jié)
本文通過基本的案例,介紹了數(shù)據(jù)分析的基本流程,了解的各部分的職責。數(shù)據(jù)分析和可視化其實不難,主要是開頭難,大多數(shù)人常常止步于數(shù)據(jù)采集,常因采集不到自己所需要的數(shù)據(jù)而懊惱或者放棄,
因此本文給大家介紹了數(shù)據(jù)獲取的基本方法和可用的工具(亮 數(shù) 據(jù) 官 網(wǎng)),希望對大家有所幫助,能有更多的時間用于分析,得出有價值的信息,利用數(shù)據(jù)更好的驅(qū)動決策。