怎么利用python对500强排行榜数据进行可视化分析-mile米乐体育
怎么利用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强排行榜数据进行可视化分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。