怎么利用Python对500强排行榜数据进行可视化分析
怎么利用Python对500强排行榜数据进行可视化分析
今天小编给大家分享一下怎么利用Python对500强排行榜数据进行可视化分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一、前言
今天来跟大家分析一下2020年中国500强企业排行榜数据,从不同角度去对数据进行统计分析,可视化展示。
主要分析内容:
中国500强企业-省份分布。
中国500强企业-营业收入年增率。
中国500强企业-营业收入年减率。
中国500强企业-利润年增率。
中国500强企业-利润年减率。
中国500强企业-排名上升最快。
中国500强企业-排名下降最快。
中国500强企业-资产区间分布。
中国500强企业-市值区间分布。
中国500强企业-营业收入区间分布。
中国500强企业-利润区间分布。
中国500强企业-排名前10营业收入、利润、资产、市值、股东权益等情况。
下面开始从数据采集到数据统计分析,最后进行可视化!!!
二、数据采集
1.开始爬取
获取企业列表
url="http://www.fortunechina.com/fortune500/c/2020-07/27/content_369925.htm"res=requests.get(url,headers=headers)res.encoding='utf-8'text=res.text
获取企业对应url
foriinrange(0,len(table_tr)):try:#name=i.xpath('.//td/a/text()')[0]href=table_tr[i].xpath('.//td/a/@href')[0].replace("../../../../","http://www.fortunechina.com/")column_list=get_detail(href)forkinrange(0,len(column_list)):outws.cell(row=count,column=k+1,value=column_list[k])print(count)count=count+1except:pass
获取每一个企业相关数据
name=selector.xpath('//*[@class="comp-name"]/text()')[0]r1=selector.xpath('//*[@class="con"]/em[@class="r1"]/text()')[0]r2=selector.xpath('//*[@class="con"]/span/em/font[@class="ft-red"]/text()')[0]address=selector.xpath('//*[@class="info"]/p')[0].xpath('.//text()')[0].replace("","")table_tbody_tr=selector.xpath('//*[@class="table"]/table/tr')
2.保存到Excel
outwb=openpyxl.Workbook()outws=outwb.create_sheet(index=0)outws.cell(row=1,column=1,value="企业名称")outws.cell(row=1,column=2,value="2020年排名")outws.cell(row=1,column=3,value="2019年排名")outws.cell(row=1,column=4,value="总部地址")outws.cell(row=1,column=5,value="营业收入")outws.cell(row=1,column=6,value="营业收入年增减")outws.cell(row=1,column=7,value="利润")outws.cell(row=1,column=8,value="利润年增减")outws.cell(row=1,column=9,value="资产")outws.cell(row=1,column=10,value="市值")outws.cell(row=1,column=11,value="股东权益")outwb.save("中国500强排行榜数据.xlsx")#保存
数据就已经保存到Excel中,下面开始进行统计分析,可视化!
三、可视化分析
1.省份分布
导入相关可视化库
frompyechartsimportoptionsasoptsfrompyecharts.chartsimportLinefrompyecharts.chartsimportMapimportpandasaspdfrompyechartsimportoptionsasoptsfrompyecharts.globalsimportThemeTypefrompyecharts.chartsimportBar
统计数据
从excel中中取出:总部地址,然后取出前两位(省份),统计每一个省份的500强分布情况
address=pd_data['总部地址']address=address.tolist()address_03=[]foriinaddress:###取省份(前两位)address_03.append(i[0:2])data=[]address_03_set=set(address_03)#address_03_set是另外一个列表,里面的内容是address_03里面的无重复项foriteminaddress_03_set:data.append((item,address_03.count(item)))
地图可视化
defmap_china()->Map:c=(Map().add(series_name="企业数量",data_pair=data,maptype="china",zoom=1,center=[105,38]).set_global_opts(title_opts=opts.TitleOpts(title="中国500强企业省份分布"),visualmap_opts=opts.VisualMapOpts(max_=9999,is_piecewise=True,pieces=[{"max":9,"min":0,"label":"0-9","color":"#FFE4E1"},{"max":99,"min":10,"label":"10-99","color":"#FF7F50"},{"max":499,"min":100,"label":"100-499","color":"#F08080"},{"max":999,"min":500,"label":"500-999","color":"#CD5C5C"},{"max":9999,"min":1000,"label":">=1000","color":"#8B0000"}])))returnc
2.营业收入年增率
从excel中中取出:营业收入年增减,统计增加率最大的前50名和减少率(负数)最大的前50名
income_rate=pd_data['营业收入年增减']compare_name=pd_data['企业名称']income_rate=income_rate.tolist()compare_name=compare_name.tolist()m=income_rate#求一个list中最大的50个数,并排序max_number=heapq.nlargest(50,m)#最大的2个数对应的,如果用nsmallest则是求最小的数及其索引max_index=map(m.index,heapq.nlargest(50,m))#max_index直接输出来不是数,使用list()或者set()均可输出#print(set(max_index))###{235,140,273,148,86}max_index=list(set(max_index))#ss=[m.index(j)forjinmax_number]name=[compare_name[k]forkinset(max_index)]outwb=openpyxl.Workbook()outws=outwb.create_sheet(index=0)
3.营业收入年减率
income_rate=income_rate.tolist()compare_name=compare_name.tolist()m=income_rate#求一个list中最小的50个数,并排序min_number=heapq.nsmallest(60,m)min_index=[m.index(j)forjinmin_number]name=[compare_name[k]forkinset(min_index)]
4.利润年增率
从excel中中取出:利润年增减,统计增加率最大的前50名和减少率(负数)最大的前50名
5.利润年减率
6.排名上升最快20家企业
从excel中中取出:2020年排名和2019年排名,进行对比,统计排名上升最大的前20家企业,和排名下降最大的前20家企业。
###折线图defLinePic(x_data,y_data,name):(Line()#进行全局设置.set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True),#显示提示信息,默认为显示,可以不写xaxis_opts=opts.AxisOpts(type_="category"),yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),)#添加x轴的点.add_xaxis(xaxis_data=x_data)#添加y轴的点.add_yaxis(series_name=name,y_axis=y_data,symbol="emptyCircle",is_symbol_show=True,label_opts=opts.LabelOpts(is_show=True),)#保存为一个html文件.render(name+".html"))
7.排名下降最快20家企业
8.资产区间分布
从excel中中取出:资产,为9000间隔进行区间划分,并统计每一个区间的个数。
fork,gingroupby(sorted(assets_list),key=lambdax:x//90000):name.append(str(k*90000)+"~"+str((k+1)*90000-1))dict_value.append(int(len(list(g))))
9.市值区间分布
从excel中中取出:市值,为7000间隔进行区间划分,并统计每一个区间的个数。
fork,gingroupby(sorted(assets_list),key=lambdax:x//7000):name.append(str(k*7000)+"~"+str((k+1)*7000-1))dict_value.append(int(len(list(g))))
10.营业收入区间分布
从excel中中取出:营业收入,为50000 间隔进行区间划分,并统计每一个区间的个数。
fork,gingroupby(sorted(assets_list),key=lambdax:x//50000):name.append(str(k*50000)+"~"+str((k+1)*50000-1))dict_value.append(int(len(list(g))))
11.利润区间分布
从excel中中取出:利润为5000间隔进行区间划分,并统计每一个区间的个数。
fork,gingroupby(sorted(assets_list),key=lambdax:x//5000):name.append(str(k*5000)+"~"+str((k+1)*5000-1))dict_value.append(int(len(list(g))))
12.中国500强企业-排名前10营业收入、利润、资产、市值、股东权益
从excel中中取出排名前10:**营业收入、**利润、资产、市值、股东权益、
name=pd_data['企业名称'][0:11].tolist()data_1=pd_data['营业收入'][0:11].tolist()data_2=pd_data['利润'][0:11].tolist()data_3=pd_data['资产'][0:11].tolist()data_4=pd_data['市值'][0:11].tolist()data_5=pd_data['股东权益'][0:11].tolist()#链式调用c=(Bar(init_opts=opts.InitOpts(#初始配置项theme=ThemeType.MACARONS,animation_opts=opts.AnimationOpts(animation_delay=1000,animation_easing="cubicOut"#初始动画延迟和缓动效果))).add_xaxis(xaxis_data=name)#x轴.add_yaxis(series_name="营业收入",yaxis_data=cleardata(data_1))#y轴.add_yaxis(series_name="利润",yaxis_data=cleardata(data_2))#y轴.add_yaxis(series_name="资产",yaxis_data=cleardata(data_3))#y轴.add_yaxis(series_name="市值",yaxis_data=cleardata(data_4))#y轴.add_yaxis(series_name="股东权益",yaxis_data=cleardata(data_5))#y轴.set_global_opts(title_opts=opts.TitleOpts(title='',subtitle='排名前10经济情况',#标题配置和调整位置title_textstyle_opts=opts.TextStyleOpts(font_family='SimHei',font_size=25,font_weight='bold',color='red',),pos_left="90%",pos_top="10",),xaxis_opts=opts.AxisOpts(name='企业名称',axislabel_opts=opts.LabelOpts(rotate=20)),#设置x名称和Labelrotate解决标签名字过长使用yaxis_opts=opts.AxisOpts(name='单位:百万美元'),).render("2020年中国500强-排名前10名经济情况.html"))
以上就是“怎么利用Python对500强排行榜数据进行可视化分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。
推荐阅读
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...
-
Python如何利用D3Blocks绘制可动态交互的图表
-
2021年度编程语言揭晓
-
PPython:PHP 拥抱 Python 的利器
-
哪种Python IDE最适合你?这里有一份优缺点列表
-
Python分隔字符串函数用法split
aaa,bbb=str.split(‘&&’,2)第一个参数为分隔符第二个参数是要完成的最大拆分数...
-
php安全编程——python测试实例编写
-
神奇的Python模块:pdfkit,将Python抓取的网址内容保存pdf文件