【Python 实战】Python 对中国 500 强排行榜数据进行可视化分析
持续创作,加速成长!
🥩数据采集
🍖确定网址
首先,我们对目标网址进行数据采集。我们可以清楚的看到,在 2022 年中新财富 500 富人榜。
确定好我们的目标网址之后,我们要找到我们需要的数据源,通过开发者工具分析,我们不难发现其数据地址。
下面,我们开始写代码。
🍖获取数据
第一步,发送请求,获得数据。
我们得到数据是这样的,大家可能会以为是一个 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()
的数据,可能就有人担心了,那这种情况,我们该怎么办呢,不要慌,我们只需要正则表达式就可以。
这段代码中,我们使用 Python 的 re
模块中的 findall()
函数来查找 JSONP 回调函数的参数。findall()
函数可以返回一个列表,其中包含了所有匹配的子字符串。
在这个例子中,我们使用 findall()
函数来查找 JSONP 回调函数的参数,并将其存储在 res.text
变量中。然后,我们使用 [0]
来获取第一个匹配的子字符串,并将其存储在 html_data
变量中。
这样,我们就得到了 json 数据,接下来,我们就开始解析数据。
🍖保存数据
我们先把数据存入到字典里面,然后,方便我们写入 csv 文件里面,我们看看打印出来的字典数值是怎么样子的。
下面就是数据的写入了。其实,把字典数值写入到 csv 文件里面,特别简单,只需呀四行代码就可以实现。
这段代码中,我们使用 Python 的 open()
函数打开了一个名为 "财富榜.csv" 的文件,并使用 csv.DictWriter()
函数创建了一个 csv_writer
对象。fieldnames
参数用于指定字段名称,这里我们指定了 "姓名"、"财富值"、"主要公司"、"相关行业"、"公司总部"、"排名" 六个字段。
然后,我们使用 csv_writer.writeheader()
方法写入表头,表头包括了字段名称。
最后,我们使用 csv_writer.write()
方法向文件中写入数据,数据内容为一个字典对象。
写入字典数值。
这时候,我们就会在文件夹里面找到财富值的 csv 文件,我们打开看看效果。
在这里,我只采集了第一页的数据,也就是前 15 的数据,如果,我们想进行多页数据采集,只需要对网址进行改变,我们会发现网址有相似的规律。直接 for 循环遍历就可以,这里,就不过多解释。
🥩数据可视化
🍖代码
我们在这里,就要用到 pyecharts 库,不得不说,这个功能非常强大,我们写这个代码也非常简单,我们只需要去官方文档,复制粘贴就可以,根据自己的数据稍微改动一点代码就可以。
这段代码中,我们使用 Pandas 库的 read_csv()
函数读取了一个名为 "财富榜.csv" 的 CSV 文件,并将其存储在 df
变量中。然后,我们使用 Line()
函数创建了一个新的 DataFrame 对象,并使用 add_xaxis()
方法将 x
列添加到 DataFrame 中。接着,我们使用 add_yaxis()
方法将 DataFrame 中的 "财富值"
列添加到 DataFrame 的 "财富值"
列中。最后,我们使用 set_global_opts()
方法设置了 DataFrame 的标题选项,并使用 title_opts
参数设置了标题。
我们直接让它生成一个网页,方便我们直观的感受。
🍖效果
这里,我做的图不够好看,但是基本功能都实现了。
大家如果想做更多的图表,可以去官方网站看看,官方网站有很多示例可以使用。
🥩总结
通过本文的学习,我们学习了数据采集以及可视化分析。我们在研究官方文档的时候,也是在一种学习,本次实战,我们明白如何解决返回值是 jsonpCallback()的问题。今天就到这里,有什么问题,可以在评论区留言。
版权声明: 本文为 InfoQ 作者【BROKEN】的原创文章。
原文链接:【http://xie.infoq.cn/article/aeeee92fe82072f09bb7b47e5】。文章转载请联系作者。
评论