利用Python對(duì)中國(guó)500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析
一、前言
今天來(lái)跟大家分析一下2020年中國(guó)500強(qiáng)企業(yè)排行榜數(shù)據(jù),從不同角度去對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,可視化展示。
主要分析內(nèi)容:
中國(guó)500強(qiáng)企業(yè)-省份分布。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入年增率。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入年減率。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)年增率。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)年減率。
中國(guó)500強(qiáng)企業(yè)-排名上升最快。
中國(guó)500強(qiáng)企業(yè)-排名下降最快。
中國(guó)500強(qiáng)企業(yè)-資產(chǎn)區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-市值區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入?yún)^(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-排名前10營(yíng)業(yè)收入、利潤(rùn)、資產(chǎn)、市值、股東權(quán)益等情況。
下面開(kāi)始從數(shù)據(jù)采集到數(shù)據(jù)統(tǒng)計(jì)分析,最后進(jìn)行可視化?。?!
二、數(shù)據(jù)采集

1.開(kāi)始爬取
獲取企業(yè)列表
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
獲取企業(yè)對(duì)應(yīng)url
for i in range(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)
for k in range(0,len(column_list)):
outws.cell(row=count, column=k+1, value=column_list[k])
print(count)
count = count+1
except:
pass獲取每一個(gè)企業(yè)相關(guān)數(shù)據(jù)
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="企業(yè)名稱")
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="營(yíng)業(yè)收入")
outws.cell(row=1, column=6, value="營(yíng)業(yè)收入年增減")
outws.cell(row=1, column=7, value="利潤(rùn)")
outws.cell(row=1, column=8, value="利潤(rùn)年增減")
outws.cell(row=1, column=9, value="資產(chǎn)")
outws.cell(row=1, column=10, value="市值")
outws.cell(row=1, column=11, value="股東權(quán)益")
outwb.save("中國(guó)500強(qiáng)排行榜數(shù)據(jù).xlsx") # 保存
數(shù)據(jù)就已經(jīng)保存到Excel中,下面開(kāi)始進(jìn)行統(tǒng)計(jì)分析,可視化!
三、可視化分析
1.省份分布
導(dǎo)入相關(guān)可視化庫(kù)
from pyecharts import options as opts from pyecharts.charts import Line from pyecharts.charts import Map import pandas as pd from pyecharts import options as opts from pyecharts.globals import ThemeType from pyecharts.charts import Bar
統(tǒng)計(jì)數(shù)據(jù)

從excel中中取出:總部地址,然后取出前兩位(省份),統(tǒng)計(jì)每一個(gè)省份的500強(qiáng)分布情況
address = pd_data['總部地址']
address = address.tolist()
address_03 = []
for i in address:
###取省份(前兩位)
address_03.append(i[0:2])
data =[]
address_03_set = set(address_03) #address_03_set是另外一個(gè)列表,里面的內(nèi)容是address_03里面的無(wú)重復(fù) 項(xiàng)
for item in address_03_set:
data.append((item,address_03.count(item)))地圖可視化
def map_china() -> Map:
c = (
Map()
.add(series_name="企業(yè)數(shù)量", data_pair=data, maptype="china",zoom = 1,center=[105,38])
.set_global_opts(
title_opts=opts.TitleOpts(title="中國(guó)500強(qiáng)企業(yè)省份分布"),
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"}]
)
)
)
return c
2.營(yíng)業(yè)收入年增率

從excel中中取出:營(yíng)業(yè)收入年增減,統(tǒng)計(jì)增加率最大的前50名和減少率(負(fù)數(shù))最大的前50名
income_rate = pd_data['營(yíng)業(yè)收入年增減']
compare_name = pd_data['企業(yè)名稱']
income_rate = income_rate.tolist()
compare_name = compare_name.tolist()
m = income_rate
# 求一個(gè)list中最大的50個(gè)數(shù),并排序
max_number = heapq.nlargest(50, m)
# 最大的2個(gè)數(shù)對(duì)應(yīng)的,如果用nsmallest則是求最小的數(shù)及其索引
max_index = map(m.index, heapq.nlargest(50, m))
# max_index 直接輸出來(lái)不是數(shù),使用list()或者set()均可輸出
#print(set(max_index)) ###{235, 140, 273, 148, 86}
max_index = list(set(max_index))
#ss = [m.index(j) for j in max_number]
name =[compare_name[k] for k in set(max_index)]
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
3.營(yíng)業(yè)收入年減率
income_rate = income_rate.tolist() compare_name = compare_name.tolist() m = income_rate # 求一個(gè)list中最小的50個(gè)數(shù),并排序 min_number = heapq.nsmallest(60, m) min_index = [m.index(j) for j in min_number] name =[compare_name[k] for k in set(min_index)]

4.利潤(rùn)年增率

從excel中中取出:利潤(rùn)年增減,統(tǒng)計(jì)增加率最大的前50名和減少率(負(fù)數(shù))最大的前50名

5.利潤(rùn)年減率

6.排名上升最快20家企業(yè)

從excel中中取出:2020年排名和2019年排名,進(jìn)行對(duì)比,統(tǒng)計(jì)排名上升最大的前20家企業(yè),和排名下降最大的前20家企業(yè)。
###折線圖
def LinePic(x_data,y_data,name):
(
Line()
# 進(jìn)行全局設(shè)置
.set_global_opts(
tooltip_opts=opts.TooltipOpts(is_show=True), # 顯示提示信息,默認(rèn)為顯示,可以不寫
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軸的點(diǎn)
.add_xaxis(xaxis_data=x_data)
# 添加y軸的點(diǎn)
.add_yaxis(
series_name=name,
y_axis=y_data,
symbol="emptyCircle",
is_symbol_show=True,
label_opts=opts.LabelOpts(is_show=True),
)
# 保存為一個(gè)html文件
.render(name+".html")
)
7.排名下降最快20家企業(yè)

8.資產(chǎn)區(qū)間分布

從excel中中取出:資產(chǎn),為9000 間隔進(jìn)行區(qū)間劃分,并統(tǒng)計(jì)每一個(gè)區(qū)間的個(gè)數(shù)。
for k, g in groupby(sorted(assets_list), key=lambda x: x // 90000):
name.append(str(k * 90000) + "~" + str((k + 1) * 90000 - 1))
dict_value.append(int(len(list(g))))
9.市值區(qū)間分布

從excel中中取出:市值,為7000 間隔進(jìn)行區(qū)間劃分,并統(tǒng)計(jì)每一個(gè)區(qū)間的個(gè)數(shù)。
for k, g in groupby(sorted(assets_list), key=lambda x: x // 7000):
name.append(str(k * 7000) + "~" + str((k + 1) * 7000 - 1))
dict_value.append(int(len(list(g))))
10.營(yíng)業(yè)收入?yún)^(qū)間分布

從excel中中取出:營(yíng)業(yè)收入,為50000 間隔進(jìn)行區(qū)間劃分,并統(tǒng)計(jì)每一個(gè)區(qū)間的個(gè)數(shù)。
for k, g in groupby(sorted(assets_list), key=lambda x: x // 50000):
name.append(str(k * 50000) + "~" + str((k + 1) * 50000 - 1))
dict_value.append(int(len(list(g))))
11.利潤(rùn)區(qū)間分布

從excel中中取出:利潤(rùn)為5000 間隔進(jìn)行區(qū)間劃分,并統(tǒng)計(jì)每一個(gè)區(qū)間的個(gè)數(shù)。
for k, g in groupby(sorted(assets_list), key=lambda x: x//5000):
name.append(str(k*5000)+"~"+str((k+1)*5000-1))
dict_value.append(int(len(list(g))))
12.中國(guó)500強(qiáng)企業(yè)-排名前10營(yíng)業(yè)收入、利潤(rùn)、資產(chǎn)、市值、股東權(quán)益
從excel中中取出排名前10: **營(yíng)業(yè)收入、**利潤(rùn)、資產(chǎn)、市值、股東權(quán)益、
name = pd_data['企業(yè)名稱'][0:11].tolist()
data_1 = pd_data['營(yíng)業(yè)收入'][0:11].tolist()
data_2 = pd_data['利潤(rùn)'][0:11].tolist()
data_3 = pd_data['資產(chǎn)'][0:11].tolist()
data_4 = pd_data['市值'][0:11].tolist()
data_5 = pd_data['股東權(quán)益'][0:11].tolist()
# 鏈?zhǔn)秸{(diào)用
c = (
Bar(
init_opts=opts.InitOpts( # 初始配置項(xiàng)
theme=ThemeType.MACARONS,
animation_opts=opts.AnimationOpts(
animation_delay=1000, animation_easing="cubicOut" # 初始動(dòng)畫延遲和緩動(dòng)效果
))
)
.add_xaxis(xaxis_data=name) # x軸
.add_yaxis(series_name="營(yíng)業(yè)收入", yaxis_data=cleardata(data_1)) # y軸
.add_yaxis(series_name="利潤(rùn)", yaxis_data=cleardata(data_2)) # y軸
.add_yaxis(series_name="資產(chǎn)", yaxis_data=cleardata(data_3)) # y軸
.add_yaxis(series_name="市值", yaxis_data=cleardata(data_4)) # y軸
.add_yaxis(series_name="股東權(quán)益", yaxis_data=cleardata(data_5)) # y軸
.set_global_opts(
title_opts=opts.TitleOpts(title='', subtitle='排名前10經(jīng)濟(jì)情況', # 標(biāo)題配置和調(diào)整位置
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='企業(yè)名稱', axislabel_opts=opts.LabelOpts(rotate=20)),
# 設(shè)置x名稱和Label rotate解決標(biāo)簽名字過(guò)長(zhǎng)使用
yaxis_opts=opts.AxisOpts(name='單位:百萬(wàn)美元'),
)
.render("2020年中國(guó)500強(qiáng)-排名前10名經(jīng)濟(jì)情況.html")
)
四、總結(jié)
本文主要對(duì)以下12個(gè)方面進(jìn)行統(tǒng)計(jì)分析,最后繪制可視化圖
中國(guó)500強(qiáng)企業(yè)-省份分布。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入年增率。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入年減率。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)年增率。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)年減率。
中國(guó)500強(qiáng)企業(yè)-排名上升最快。
中國(guó)500強(qiáng)企業(yè)-排名下降最快。
中國(guó)500強(qiáng)企業(yè)-資產(chǎn)區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-市值區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-營(yíng)業(yè)收入?yún)^(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-利潤(rùn)區(qū)間分布。
中國(guó)500強(qiáng)企業(yè)-排名前10營(yíng)業(yè)收入、利潤(rùn)、資產(chǎn)、市值、股東權(quán)益等情況。
到此這篇關(guān)于利用Python對(duì)中國(guó)500強(qiáng)排行榜數(shù)據(jù)進(jìn)行可視化分析的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python深度學(xué)習(xí)tensorflow入門基礎(chǔ)教程示例
這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow入門基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
用Python實(shí)現(xiàn)zip密碼破解實(shí)例
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)zip密碼破解實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Python實(shí)現(xiàn)文本特征提取的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)提取四種不同文本特征的方法,有字典文本特征提取、英文文本特征提取、中文文本特征提取和TF-IDF 文本特征提取,感興趣的可以了解一下2022-08-08
python實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器功能函數(shù)
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器功能函數(shù),涉及Python操作時(shí)間的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
Python實(shí)現(xiàn)一行代碼自動(dòng)繪制藝術(shù)畫
DiscoArt?是一個(gè)很牛的開(kāi)源模塊,它能根據(jù)你給定的關(guān)鍵詞自動(dòng)繪畫。本文就將利用這一模塊實(shí)現(xiàn)一行代碼自動(dòng)繪制藝術(shù)畫,需要的可以參考一下2022-12-12
對(duì)于Python的框架中一些會(huì)話程序的管理
這篇文章主要介紹了對(duì)于Python的框架中一些會(huì)話程序的管理,會(huì)話的實(shí)現(xiàn)是Python框架的基本功能,本文主要講述了對(duì)其的一些管理維護(hù)要點(diǎn),需要的朋友可以參考下2015-04-04

