Python對(duì)中國500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析實(shí)戰(zhàn)
??數(shù)據(jù)采集
??確定網(wǎng)址
首先,我們對(duì)目標(biāo)網(wǎng)址進(jìn)行數(shù)據(jù)采集。我們可以清楚的看到,在2022年中新財(cái)富500富人榜。

確定好我們的目標(biāo)網(wǎng)址之后,我們要找到我們需要的數(shù)據(jù)源,通過開發(fā)者工具分析,我們不難發(fā)現(xiàn)其數(shù)據(jù)地址。

下面,我們開始寫代碼。
??獲取數(shù)據(jù)
第一步,發(fā)送請(qǐng)求,獲得數(shù)據(jù)。
import requests
url = 'https://service.ikuyu.cn/XinCaiFu2/pcremoting/bdListAction.do?method=getPage&callback=jsonpCallback&sortBy=&order=&type=4&keyword=&pageSize=15&year=2022&pageNo=1&from=jsonp&_=1680092323527'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}
res = requests.get(url,headers=headers)
我們得到數(shù)據(jù)是這樣的,大家可能會(huì)以為是一個(gè)json數(shù)據(jù),其實(shí)不是,這個(gè)返回值需要我們進(jìn)一步處理。
jsonpCallback({"data":{"pagesize":15,"current":1,"total":500,"rows":[{"assets":4983.5,"year":2022,"sex":"男","name":"鐘睒睒","rank":1,"company":"農(nóng)夫山泉/萬泰生物","industry":"礦泉水飲料、醫(yī)藥生物","id":151478,"addr":"浙江杭州/北京","rankLst":"1","age":"68"}······)
??解析數(shù)據(jù)
我們發(fā)現(xiàn),我們得到了這樣jsonpCallback()的數(shù)據(jù),可能就有人擔(dān)心了,那這種情況,我們?cè)撛趺崔k呢,不要慌,我們只需要正則表達(dá)式就可以。
html_data = re.findall('jsonpCallback((.*?))',res.text)[0]
這段代碼中,我們使用 Python 的 re 模塊中的 findall() 函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù)。findall() 函數(shù)可以返回一個(gè)列表,其中包含了所有匹配的子字符串。
在這個(gè)例子中,我們使用 findall() 函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù),并將其存儲(chǔ)在 res.text 變量中。然后,我們使用 [0] 來獲取第一個(gè)匹配的子字符串,并將其存儲(chǔ)在 html_data 變量中。
這樣,我們就得到了json數(shù)據(jù),接下來,我們就開始解析數(shù)據(jù)。
for index in json.loads(html_data)['data']['rows']:
# print(index)
dit = {
'姓名':index['name'],
'財(cái)富值':index['assets'],
'主要公司':index['company'],
'相關(guān)行業(yè)': index['industry'],
'公司總部':index['addr'],
'排名': index['rank'],
}
??保存數(shù)據(jù)
我們先把數(shù)據(jù)存入到字典里面,然后,方便我們寫入csv文件里面,我們看看打印出來的字典數(shù)值是怎么樣子的。

下面就是數(shù)據(jù)的寫入了。其實(shí),把字典數(shù)值寫入到csv文件里面,特別簡單,只需呀四行代碼就可以實(shí)現(xiàn)。
f = open('財(cái)富榜.csv',mode='a',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=['姓名','財(cái)富值','主要公司','相關(guān)行業(yè)','公司總部','排名'])
csv_writer.writeheader()
這段代碼中,我們使用 Python 的 open() 函數(shù)打開了一個(gè)名為 "財(cái)富榜.csv" 的文件,并使用 csv.DictWriter() 函數(shù)創(chuàng)建了一個(gè) csv_writer 對(duì)象。fieldnames 參數(shù)用于指定字段名稱,這里我們指定了 "姓名"、"財(cái)富值"、"主要公司"、"相關(guān)行業(yè)"、"公司總部"、"排名" 六個(gè)字段。
然后,我們使用 csv_writer.writeheader() 方法寫入表頭,表頭包括了字段名稱。
最后,我們使用 csv_writer.write() 方法向文件中寫入數(shù)據(jù),數(shù)據(jù)內(nèi)容為一個(gè)字典對(duì)象。
寫入字典數(shù)值。
csv_writer.writerow(dit)
這時(shí)候,我們就會(huì)在文件夾里面找到財(cái)富值的csv文件,我們打開看看效果。

在這里,我只采集了第一頁的數(shù)據(jù),也就是前15的數(shù)據(jù),如果,我們想進(jìn)行多頁數(shù)據(jù)采集,只需要對(duì)網(wǎng)址進(jìn)行改變,我們會(huì)發(fā)現(xiàn)網(wǎng)址有相似的規(guī)律。直接for循環(huán)遍歷就可以,這里,就不過多解釋。
??數(shù)據(jù)可視化
??代碼
我們?cè)谶@里,就要用到pyecharts庫,不得不說,這個(gè)功能非常強(qiáng)大,我們寫這個(gè)代碼也非常簡單,我們只需要去官方文檔,復(fù)制粘貼就可以,根據(jù)自己的數(shù)據(jù)稍微改動(dòng)一點(diǎn)代碼就可以。
import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
df = pd.read_csv('財(cái)富榜.csv')
x = ['農(nóng)夫山泉/萬泰生物' ,'寧德時(shí)代' ,'騰訊控股' ,'今日頭條', '拼多多']
c = (
Line()
.add_xaxis(x)
.add_yaxis("財(cái)富值",df['財(cái)富值'].values)
.set_global_opts(title_opts=opts.TitleOpts(title="財(cái)富值分布"))
)
這段代碼中,我們使用 Pandas 庫的 read_csv() 函數(shù)讀取了一個(gè)名為 "財(cái)富榜.csv" 的 CSV 文件,并將其存儲(chǔ)在 df 變量中。然后,我們使用 Line() 函數(shù)創(chuàng)建了一個(gè)新的 DataFrame 對(duì)象,并使用 add_xaxis() 方法將 x 列添加到 DataFrame 中。接著,我們使用 add_yaxis() 方法將 DataFrame 中的 "財(cái)富值" 列添加到 DataFrame 的 "財(cái)富值" 列中。最后,我們使用 set_global_opts() 方法設(shè)置了 DataFrame 的標(biāo)題選項(xiàng),并使用 title_opts 參數(shù)設(shè)置了標(biāo)題。
我們直接讓它生成一個(gè)網(wǎng)頁,方便我們直觀的感受。
c.render('地圖.html')
??效果
這里,我做的圖不夠好看,但是基本功能都實(shí)現(xiàn)了。

大家如果想做更多的圖表,可以去官方網(wǎng)站看看,官方網(wǎng)站有很多示例可以使用。
??總結(jié)
通過本文的學(xué)習(xí),我們學(xué)習(xí)了數(shù)據(jù)采集以及可視化分析。我們?cè)谘芯抗俜轿臋n的時(shí)候,也是在一種學(xué)習(xí),本次實(shí)戰(zhàn),我們明白如何解決返回值是jsonpCallback()的問題。今天就到這里
以上就是Python對(duì)中國500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析實(shí)戰(zhàn)的詳細(xì)內(nèi)容,更多關(guān)于Python排行榜數(shù)據(jù)可視化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python mplfinance庫繪制金融圖表實(shí)現(xiàn)數(shù)據(jù)可視化實(shí)例探究
- Python報(bào)表自動(dòng)化之從數(shù)據(jù)到可視化一站式指南
- Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例
- python數(shù)據(jù)可視化pygal模擬擲骰子實(shí)現(xiàn)示例
- python數(shù)據(jù)可視化繪制火山圖示例
- python數(shù)據(jù)可視化繪制世界人口地圖
- python數(shù)據(jù)可視化matplotlib繪制折線圖示例
- python?AutoViz庫一行代碼實(shí)現(xiàn)可視化數(shù)據(jù)集
相關(guān)文章
解決python2.7用pip安裝包時(shí)出現(xiàn)錯(cuò)誤的問題
這篇文章主要介紹了在python2.7用pip安裝包時(shí)出現(xiàn)錯(cuò)誤問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01
使用python實(shí)現(xiàn)抓取騰訊視頻所有電影的爬蟲
這篇文章主要介紹了使用python實(shí)現(xiàn)抓取騰訊視頻所有電影的爬蟲,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
python?matplotlib實(shí)現(xiàn)條形圖的填充效果
這篇文章主要為大家詳細(xì)介紹了python?matplotlib實(shí)現(xiàn)條形圖的填充效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
python實(shí)現(xiàn)兩個(gè)一維列表合并成一個(gè)二維列表
今天小編就為大家分享一篇python實(shí)現(xiàn)兩個(gè)一維列表合并成一個(gè)二維列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python使用pycharm導(dǎo)入pymysql教程
這篇文章主要介紹了Python使用pycharm導(dǎo)入pymysql教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Python Flask全棧項(xiàng)目實(shí)戰(zhàn)構(gòu)建在線書店流程
這篇文章主要為大家介紹了Python Flask全流程全棧項(xiàng)目實(shí)戰(zhàn)之在線書店構(gòu)建實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
django數(shù)據(jù)庫migrate失敗的解決方法解析
這篇文章主要介紹了django數(shù)據(jù)庫migrate失敗的解決方法解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02

