【Python 实战】Python 对中国 500 强排行榜数据进行可视化分析

🥩数据采集

🍖确定网址

首先,我们对目标网址进行数据采集。我们可以清楚的看到,在 2022 年中新财富 500 富人榜。

img

确定好我们的目标网址之后,我们要找到我们需要的数据源,通过开发者工具分析,我们不难发现其数据地址。

img

下面,我们开始写代码。

🍖获取数据

第一步,发送请求,获得数据。

import requestsurl = '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)

复制代码

我们得到数据是这样的,大家可能会以为是一个 json 数据,其实不是,这个返回值需要我们进一步处理。

jsonpCallback({“data”:{“pagesize”:15,“current”:1,“total”:500,“rows”:[{“assets”:4983.5,“year”:2022,“sex”:“男”,“name”:“钟睒睒”,“rank”:1,“company”:“农夫山泉/万泰生物”,“industry”:“矿泉水饮料、医药生物”,“id”:151478,“addr”:“浙江杭州/北京”,“rankLst”:“1”,“age”:“68”}······)

🍖解析数据

我们发现,我们得到了这样jsonpCallback()的数据,可能就有人担心了,那这种情况,我们该怎么办呢,不要慌,我们只需要正则表达式就可以。

html_data = re.findall('jsonpCallback((.*?))',res.text)[0]

复制代码

这段代码中,我们使用 Python 的 re 模块中的 findall() 函数来查找 JSONP 回调函数的参数。findall() 函数可以返回一个列表,其中包含了所有匹配的子字符串。

在这个例子中,我们使用 findall() 函数来查找 JSONP 回调函数的参数,并将其存储在 res.text 变量中。然后,我们使用 [0] 来获取第一个匹配的子字符串,并将其存储在 html_data 变量中。

这样,我们就得到了 json 数据,接下来,我们就开始解析数据。

for index in json.loads(html_data)['data']['rows']:    # print(index)    dit = {        '姓名':index['name'],        '财富值':index['assets'],        '主要公司':index['company'],        '相关行业': index['industry'],        '公司总部':index['addr'],        '排名': index['rank'],    }

复制代码

🍖保存数据

我们先把数据存入到字典里面,然后,方便我们写入 csv 文件里面,我们看看打印出来的字典数值是怎么样子的。

img

下面就是数据的写入了。其实,把字典数值写入到 csv 文件里面,特别简单,只需呀四行代码就可以实现。

f = open('财富榜.csv',mode='a',encoding='utf-8',newline='')csv_writer = csv.DictWriter(f,fieldnames=['姓名','财富值','主要公司','相关行业','公司总部','排名'])csv_writer.writeheader()

复制代码

这段代码中,我们使用 Python 的 open() 函数打开了一个名为 “财富榜.csv” 的文件,并使用 csv.DictWriter() 函数创建了一个 csv_writer 对象。fieldnames 参数用于指定字段名称,这里我们指定了 “姓名”、“财富值”、“主要公司”、“相关行业”、“公司总部”、“排名” 六个字段。

然后,我们使用 csv_writer.writeheader() 方法写入表头,表头包括了字段名称。

最后,我们使用 csv_writer.write() 方法向文件中写入数据,数据内容为一个字典对象。

写入字典数值。

csv_writer.writerow(dit)

复制代码

这时候,我们就会在文件夹里面找到财富值的 csv 文件,我们打开看看效果。

img

在这里,我只采集了第一页的数据,也就是前 15 的数据,如果,我们想进行多页数据采集,只需要对网址进行改变,我们会发现网址有相似的规律。直接 for 循环遍历就可以,这里,就不过多解释。

🥩数据可视化

🍖代码

我们在这里,就要用到 pyecharts 库,不得不说,这个功能非常强大,我们写这个代码也非常简单,我们只需要去官方文档,复制粘贴就可以,根据自己的数据稍微改动一点代码就可以。

import pandas as pdimport pyecharts.options as optsfrom pyecharts.charts import Linedf = pd.read_csv('财富榜.csv')x = ['农夫山泉/万泰生物' ,'宁德时代' ,'腾讯控股' ,'今日头条', '拼多多']c = (    Line()    .add_xaxis(x)    .add_yaxis("财富值",df['财富值'].values)    .set_global_opts(title_opts=opts.TitleOpts(title="财富值分布")))

复制代码

这段代码中,我们使用 Pandas 库的 read_csv() 函数读取了一个名为 “财富榜.csv” 的 CSV 文件,并将其存储在 df 变量中。然后,我们使用 Line() 函数创建了一个新的 DataFrame 对象,并使用 add_xaxis() 方法将 x 列添加到 DataFrame 中。接着,我们使用 add_yaxis() 方法将 DataFrame 中的 "财富值" 列添加到 DataFrame 的 "财富值" 列中。最后,我们使用 set_global_opts() 方法设置了 DataFrame 的标题选项,并使用 title_opts 参数设置了标题。

我们直接让它生成一个网页,方便我们直观的感受。

c.render('地图.html')

复制代码

🍖效果

这里,我做的图不够好看,但是基本功能都实现了。

img

🥩最后

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

如果需要可以点击链接免费领取或者滑到最后扫描二v码

👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享]安全链接,放心点击

👉Python学习大纲👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

在这里插入图片描述

在这里插入图片描述

👉Python书籍和视频合集👈

在这里插入图片描述

👉Python面试刷题👈

👉Python副业兼职路线👈

在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取保证100%免费

👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享]安全链接,放心点击

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值