Python對中國500強排行榜數(shù)據(jù)進行可視化分析實戰(zhàn)
??數(shù)據(jù)采集
??確定網(wǎng)址
首先,我們對目標網(wǎng)址進行數(shù)據(jù)采集。我們可以清楚的看到,在2022年中新財富500富人榜。
確定好我們的目標網(wǎng)址之后,我們要找到我們需要的數(shù)據(jù)源,通過開發(fā)者工具分析,我們不難發(fā)現(xiàn)其數(shù)據(jù)地址。
下面,我們開始寫代碼。
??獲取數(shù)據(jù)
第一步,發(fā)送請求,獲得數(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ù)是這樣的,大家可能會以為是一個json數(shù)據(jù),其實不是,這個返回值需要我們進一步處理。
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ù),可能就有人擔心了,那這種情況,我們該怎么辦呢,不要慌,我們只需要正則表達式就可以。
html_data = re.findall('jsonpCallback((.*?))',res.text)[0]
這段代碼中,我們使用 Python 的 re
模塊中的 findall()
函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù)。findall()
函數(shù)可以返回一個列表,其中包含了所有匹配的子字符串。
在這個例子中,我們使用 findall()
函數(shù)來查找 JSONP 回調(diào)函數(shù)的參數(shù),并將其存儲在 res.text
變量中。然后,我們使用 [0]
來獲取第一個匹配的子字符串,并將其存儲在 html_data
變量中。
這樣,我們就得到了json數(shù)據(jù),接下來,我們就開始解析數(shù)據(jù)。
for index in json.loads(html_data)['data']['rows']: # print(index) dit = { '姓名':index['name'], '財富值':index['assets'], '主要公司':index['company'], '相關(guān)行業(yè)': index['industry'], '公司總部':index['addr'], '排名': index['rank'], }
??保存數(shù)據(jù)
我們先把數(shù)據(jù)存入到字典里面,然后,方便我們寫入csv文件里面,我們看看打印出來的字典數(shù)值是怎么樣子的。
下面就是數(shù)據(jù)的寫入了。其實,把字典數(shù)值寫入到csv文件里面,特別簡單,只需呀四行代碼就可以實現(xiàn)。
f = open('財富榜.csv',mode='a',encoding='utf-8',newline='') csv_writer = csv.DictWriter(f,fieldnames=['姓名','財富值','主要公司','相關(guān)行業(yè)','公司總部','排名']) csv_writer.writeheader()
這段代碼中,我們使用 Python 的 open()
函數(shù)打開了一個名為 "財富榜.csv" 的文件,并使用 csv.DictWriter()
函數(shù)創(chuàng)建了一個 csv_writer
對象。fieldnames
參數(shù)用于指定字段名稱,這里我們指定了 "姓名"、"財富值"、"主要公司"、"相關(guān)行業(yè)"、"公司總部"、"排名" 六個字段。
然后,我們使用 csv_writer.writeheader()
方法寫入表頭,表頭包括了字段名稱。
最后,我們使用 csv_writer.write()
方法向文件中寫入數(shù)據(jù),數(shù)據(jù)內(nèi)容為一個字典對象。
寫入字典數(shù)值。
csv_writer.writerow(dit)
這時候,我們就會在文件夾里面找到財富值的csv文件,我們打開看看效果。
在這里,我只采集了第一頁的數(shù)據(jù),也就是前15的數(shù)據(jù),如果,我們想進行多頁數(shù)據(jù)采集,只需要對網(wǎng)址進行改變,我們會發(fā)現(xiàn)網(wǎng)址有相似的規(guī)律。直接for循環(huán)遍歷就可以,這里,就不過多解釋。
??數(shù)據(jù)可視化
??代碼
我們在這里,就要用到pyecharts庫,不得不說,這個功能非常強大,我們寫這個代碼也非常簡單,我們只需要去官方文檔,復(fù)制粘貼就可以,根據(jù)自己的數(shù)據(jù)稍微改動一點代碼就可以。
import pandas as pd import pyecharts.options as opts from pyecharts.charts import Line df = pd.read_csv('財富榜.csv') x = ['農(nóng)夫山泉/萬泰生物' ,'寧德時代' ,'騰訊控股' ,'今日頭條', '拼多多'] c = ( Line() .add_xaxis(x) .add_yaxis("財富值",df['財富值'].values) .set_global_opts(title_opts=opts.TitleOpts(title="財富值分布")) )
這段代碼中,我們使用 Pandas 庫的 read_csv()
函數(shù)讀取了一個名為 "財富榜.csv" 的 CSV 文件,并將其存儲在 df
變量中。然后,我們使用 Line()
函數(shù)創(chuàng)建了一個新的 DataFrame 對象,并使用 add_xaxis()
方法將 x
列添加到 DataFrame 中。接著,我們使用 add_yaxis()
方法將 DataFrame 中的 "財富值"
列添加到 DataFrame 的 "財富值"
列中。最后,我們使用 set_global_opts()
方法設(shè)置了 DataFrame 的標題選項,并使用 title_opts
參數(shù)設(shè)置了標題。
我們直接讓它生成一個網(wǎng)頁,方便我們直觀的感受。
c.render('地圖.html')
??效果
這里,我做的圖不夠好看,但是基本功能都實現(xiàn)了。
大家如果想做更多的圖表,可以去官方網(wǎng)站看看,官方網(wǎng)站有很多示例可以使用。
??總結(jié)
通過本文的學習,我們學習了數(shù)據(jù)采集以及可視化分析。我們在研究官方文檔的時候,也是在一種學習,本次實戰(zhàn),我們明白如何解決返回值是jsonpCallback()的問題。今天就到這里
以上就是Python對中國500強排行榜數(shù)據(jù)進行可視化分析實戰(zhàn)的詳細內(nèi)容,更多關(guān)于Python排行榜數(shù)據(jù)可視化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決python2.7用pip安裝包時出現(xiàn)錯誤的問題
這篇文章主要介紹了在python2.7用pip安裝包時出現(xiàn)錯誤問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01python?matplotlib實現(xiàn)條形圖的填充效果
這篇文章主要為大家詳細介紹了python?matplotlib實現(xiàn)條形圖的填充效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04Python使用pycharm導(dǎo)入pymysql教程
這篇文章主要介紹了Python使用pycharm導(dǎo)入pymysql教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Python Flask全棧項目實戰(zhàn)構(gòu)建在線書店流程
這篇文章主要為大家介紹了Python Flask全流程全棧項目實戰(zhàn)之在線書店構(gòu)建實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11django數(shù)據(jù)庫migrate失敗的解決方法解析
這篇文章主要介紹了django數(shù)據(jù)庫migrate失敗的解決方法解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02