持续创作,加快成长!这是我参加「掘金日新计划 4 月更文应战」的第3天,点击检查活动概况

数据收集

确认网址

首要,咱们对目标网址进行数据收集。咱们能够清楚的看到,在2022年中新财富500富人榜。

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

确认好咱们的目标网址之后,咱们要找到咱们需求的数据源,经过开发者工具剖析,咱们不难发现其数据地址。

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

下面,咱们开端写代码。

获取数据

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

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)

咱们得到数据是这样的,咱们可能会以为是一个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]

这段代码中,咱们运用 Pythonre模块中的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文件里边,咱们看看打印出来的字典数值是怎么样子的。

【Python实战】Python对中国500强排行榜数据进行可视化分析
下面便是数据的写入了。其实,把字典数值写入到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文件,咱们打开看看作用。

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

在这里,我只收集了第一页的数据,也便是前15的数据,假如,咱们想进行多页数据收集,只需求对网址进行改动,咱们会发现网址有类似的规律。直接for循环遍历就能够,这里,就不过多解说。

数据可视化

代码

咱们在这里,就要用到pyecharts库,不得不说,这个功能十分强壮,咱们写这个代码也十分简略,咱们只需求去官方文档,复制粘贴就能够,依据自己的数据略微改动一点代码就能够。

import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import Line
df = 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')

作用

这里,我做的图不行美观,但是基本功能都完成了。

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

咱们假如想做更多的图表,能够去官方网站看看,官方网站有许多示例能够运用。

总结

经过本文的学习,咱们学习了数据收集以及可视化剖析。咱们在研讨官方文档的时候,也是在一种学习,本次实战,咱们明白如何解决返回值是jsonpCallback()的问题。今天就到这里,有什么问题,能够在谈论区留言。