This commit is contained in:
HaoYizhi 2023-05-15 10:42:16 +08:00
parent 05f43fb341
commit aac2607284
16 changed files with 4077 additions and 7 deletions

File diff suppressed because one or more lines are too long

3539
analysis/count.csv Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 KiB

View File

@ -0,0 +1,98 @@
up_id_product,up_name_product,down_id_product,down_name_product,count
1.4,工业互联网安全,1,供给,118
1.4.3,网络安全,1.4,工业互联网安全,96
1.4.5,数据安全,1.4,工业互联网安全,92
1.4.2,控制安全,1.4,工业互联网安全,92
2.1,PaaS,2,工业互联网平台,77
1.4.4.5,安全态势感知,1.4.4,平台安全,76
1.3.2.1,供应链管理SCM,1.3.2,采购供应,76
1.3.2,采购供应,1.3,工业软件,74
1.3.5,仓储物流,1.3,工业软件,72
1.1.1,工业计算芯片,1.1,工业自动化,67
1.4.5.8,数据加密,1.4.5,数据安全,50
1.4.5.1,恶意代码检测系统,1.4.5,数据安全,50
1.4.3.6,沙箱类设备,1.4.3,网络安全,50
1.4.2.7,工控原生安全,1.4.2,控制安全,50
1.4.2.3,工控漏洞扫描,1.4.2,控制安全,50
1.4.1,设备安全,1.4,工业互联网安全,50
1.4.3.2,流量检测,1.4.3,网络安全,50
2.3.3,协议转换,2.3,边缘层,37
1.3.2.1,供应链管理SCM,1.3,工业软件,37
2.3.1,工业数据接入,2.3,边缘层,33
2.1.3.6,微服务,2.1.3,工业物联网,33
2.3.2,边缘数据处理,2.3,边缘层,30
2.1.3.4,应用管理服务,2.1.3,工业物联网,30
2.1.2.4,行业机理模型,2.1.2,工业模型库,30
2.1.2.2,业务流程模型,2.1.2,工业模型库,28
2.1.3.7,制造类API,2.1.3,工业物联网,28
1.3.1.1,计算机辅助设计CAD,1.3.1,设计研发,28
2.1.2.1,数据算法模型,2.1.2,工业模型库,27
1.3.1.2,计算机辅助工程CAE,1.3.1,设计研发,26
2.1.3.1,物联网服务,2.1.3,工业物联网,25
1.1.2,工业控制器,1.1,工业自动化,24
2.1.3.5,容器服务,2.1.3,工业物联网,24
1.4.3.6,沙箱类设备,1.4,工业互联网安全,23
2.1.1.2,低代码开发工具,2.1.1,开发工具,23
1.1.3,工业服务器,1.1,工业自动化,23
1.4.3.2,流量检测,1.4,工业互联网安全,23
2.1.3.3,工业引擎服务,2.1.3,工业物联网,23
1.4.5.1,恶意代码检测系统,1.4,工业互联网安全,21
1.4.5.8,数据加密,1.4,工业互联网安全,21
1.4.2.3,工控漏洞扫描,1.4,工业互联网安全,21
2.1.3.2,平台基础服务,2.1.3,工业物联网,21
1.4.2.7,工控原生安全,1.4,工业互联网安全,21
1.4.3,网络安全,1,供给,21
1.3.1.4,计算机辅助工艺过程设计CAPP,1.3.1,设计研发,20
1.4.5,数据安全,1,供给,19
1.4.2,控制安全,1,供给,19
2.1.2.3,研发仿真模型,2.1.2,工业模型库,18
2.1.1.5,数字孪生建模工具,2.1.1,开发工具,18
1.3.1.6,产品生命周期管理PLM,1.3.1,设计研发,18
1.2.3,数据互通,1.2,工业互联网网络,17
2.1.1.1,算法建模工具,2.1.1,开发工具,15
2.1.1.4,组态建模工具,2.1.1,开发工具,14
1.3.3.2,分布式控制系统DCS,1.3.3,生产制造,14
1.2.2,标识解析,1.2,工业互联网网络,13
1.2.1,网络互联,1.2,工业互联网网络,13
2.1.1.3,流程开发工具,2.1.1,开发工具,12
1.3.1.7,电子设计自动化EDA,1.3.1,设计研发,12
1.3.3.3,数据采集与监视控制系统SCADA,1.3.3,生产制造,11
2,工业互联网平台,1,供给,10
1.3.3.6,运维保障系统MRO,1.3.3,生产制造,10
1.3.3.1,制造执行系统MES,1.3.3,生产制造,10
1.4.4,平台安全,1.4,工业互联网安全,10
1.4.1,设备安全,1,供给,9
1.3.1,设计研发,1.3,工业软件,8
1.3.3.4,可编程逻揖控制系统PLC,1.3.3,生产制造,7
1.3.4.1,企业资源计划ERP,1.3.4,企业运营管理,6
1.3.3.5,企业资产管理系统EAM,1.3.3,生产制造,6
1.4.3.6,沙箱类设备,1,供给,6
1.4.3.2,流量检测,1,供给,6
1.4.5.1,恶意代码检测系统,1,供给,5
1.4.4.5,安全态势感知,1.4,工业互联网安全,5
2.1,PaaS,1,供给,5
1.4.2.7,工控原生安全,1,供给,5
1.3.1.5,产品数据管理PDM,1.3.1,设计研发,5
1.4.5.8,数据加密,1,供给,5
1.4.2.3,工控漏洞扫描,1,供给,5
2.1.4.2.2,数据安全管理,2.1.4.2,工业大数据管理,5
2.1.4.2.1,数据质量管理,2.1.4.2,工业大数据管理,5
1.3,工业软件,1,供给,4
2.1.4.1.4,时序数据库,2.1.4.1,工业大数据存储,4
2.3,边缘层,2,工业互联网平台,3
2.2,IaaS,2,工业互联网平台,3
2.1.4.1.1,关系型数据库,2.1.4.1,工业大数据存储,3
2.1.4.1.2,分布式数据库,2.1.4.1,工业大数据存储,3
2.1.4.1.3,实时数据库,2.1.4.1,工业大数据存储,3
2.1.4.2,工业大数据管理,2.1.4,工业大数据,3
1.3.1.3,计算机辅助制造CAM,1.3.1,设计研发,2
1.3.2,采购供应,1,供给,2
1.3.3,生产制造,1.3,工业软件,1
2.3.3,协议转换,2,工业互联网平台,1
1.3.4.3,人力资源管理HRM,1.3.4,企业运营管理,1
2.1.4.1,工业大数据存储,2.1.4,工业大数据,1
1.3.3.7,故障预测与健康管理PHM,1.3.3,生产制造,1
1.3.4,企业运营管理,1.3,工业软件,1
1.3.5,仓储物流,1,供给,1
1.4.4.1,身份鉴别与访问控制,1.4.4,平台安全,1
1.3.2.1,供应链管理SCM,1,供给,1
1 up_id_product up_name_product down_id_product down_name_product count
2 1.4 工业互联网安全 1 供给 118
3 1.4.3 网络安全 1.4 工业互联网安全 96
4 1.4.5 数据安全 1.4 工业互联网安全 92
5 1.4.2 控制安全 1.4 工业互联网安全 92
6 2.1 PaaS 2 工业互联网平台 77
7 1.4.4.5 安全态势感知 1.4.4 平台安全 76
8 1.3.2.1 供应链管理SCM 1.3.2 采购供应 76
9 1.3.2 采购供应 1.3 工业软件 74
10 1.3.5 仓储物流 1.3 工业软件 72
11 1.1.1 工业计算芯片 1.1 工业自动化 67
12 1.4.5.8 数据加密 1.4.5 数据安全 50
13 1.4.5.1 恶意代码检测系统 1.4.5 数据安全 50
14 1.4.3.6 沙箱类设备 1.4.3 网络安全 50
15 1.4.2.7 工控原生安全 1.4.2 控制安全 50
16 1.4.2.3 工控漏洞扫描 1.4.2 控制安全 50
17 1.4.1 设备安全 1.4 工业互联网安全 50
18 1.4.3.2 流量检测 1.4.3 网络安全 50
19 2.3.3 协议转换 2.3 边缘层 37
20 1.3.2.1 供应链管理SCM 1.3 工业软件 37
21 2.3.1 工业数据接入 2.3 边缘层 33
22 2.1.3.6 微服务 2.1.3 工业物联网 33
23 2.3.2 边缘数据处理 2.3 边缘层 30
24 2.1.3.4 应用管理服务 2.1.3 工业物联网 30
25 2.1.2.4 行业机理模型 2.1.2 工业模型库 30
26 2.1.2.2 业务流程模型 2.1.2 工业模型库 28
27 2.1.3.7 制造类API 2.1.3 工业物联网 28
28 1.3.1.1 计算机辅助设计CAD 1.3.1 设计研发 28
29 2.1.2.1 数据算法模型 2.1.2 工业模型库 27
30 1.3.1.2 计算机辅助工程CAE 1.3.1 设计研发 26
31 2.1.3.1 物联网服务 2.1.3 工业物联网 25
32 1.1.2 工业控制器 1.1 工业自动化 24
33 2.1.3.5 容器服务 2.1.3 工业物联网 24
34 1.4.3.6 沙箱类设备 1.4 工业互联网安全 23
35 2.1.1.2 低代码开发工具 2.1.1 开发工具 23
36 1.1.3 工业服务器 1.1 工业自动化 23
37 1.4.3.2 流量检测 1.4 工业互联网安全 23
38 2.1.3.3 工业引擎服务 2.1.3 工业物联网 23
39 1.4.5.1 恶意代码检测系统 1.4 工业互联网安全 21
40 1.4.5.8 数据加密 1.4 工业互联网安全 21
41 1.4.2.3 工控漏洞扫描 1.4 工业互联网安全 21
42 2.1.3.2 平台基础服务 2.1.3 工业物联网 21
43 1.4.2.7 工控原生安全 1.4 工业互联网安全 21
44 1.4.3 网络安全 1 供给 21
45 1.3.1.4 计算机辅助工艺过程设计CAPP 1.3.1 设计研发 20
46 1.4.5 数据安全 1 供给 19
47 1.4.2 控制安全 1 供给 19
48 2.1.2.3 研发仿真模型 2.1.2 工业模型库 18
49 2.1.1.5 数字孪生建模工具 2.1.1 开发工具 18
50 1.3.1.6 产品生命周期管理PLM 1.3.1 设计研发 18
51 1.2.3 数据互通 1.2 工业互联网网络 17
52 2.1.1.1 算法建模工具 2.1.1 开发工具 15
53 2.1.1.4 组态建模工具 2.1.1 开发工具 14
54 1.3.3.2 分布式控制系统DCS 1.3.3 生产制造 14
55 1.2.2 标识解析 1.2 工业互联网网络 13
56 1.2.1 网络互联 1.2 工业互联网网络 13
57 2.1.1.3 流程开发工具 2.1.1 开发工具 12
58 1.3.1.7 电子设计自动化EDA 1.3.1 设计研发 12
59 1.3.3.3 数据采集与监视控制系统SCADA 1.3.3 生产制造 11
60 2 工业互联网平台 1 供给 10
61 1.3.3.6 运维保障系统MRO 1.3.3 生产制造 10
62 1.3.3.1 制造执行系统MES 1.3.3 生产制造 10
63 1.4.4 平台安全 1.4 工业互联网安全 10
64 1.4.1 设备安全 1 供给 9
65 1.3.1 设计研发 1.3 工业软件 8
66 1.3.3.4 可编程逻揖控制系统PLC 1.3.3 生产制造 7
67 1.3.4.1 企业资源计划ERP 1.3.4 企业运营管理 6
68 1.3.3.5 企业资产管理系统EAM 1.3.3 生产制造 6
69 1.4.3.6 沙箱类设备 1 供给 6
70 1.4.3.2 流量检测 1 供给 6
71 1.4.5.1 恶意代码检测系统 1 供给 5
72 1.4.4.5 安全态势感知 1.4 工业互联网安全 5
73 2.1 PaaS 1 供给 5
74 1.4.2.7 工控原生安全 1 供给 5
75 1.3.1.5 产品数据管理PDM 1.3.1 设计研发 5
76 1.4.5.8 数据加密 1 供给 5
77 1.4.2.3 工控漏洞扫描 1 供给 5
78 2.1.4.2.2 数据安全管理 2.1.4.2 工业大数据管理 5
79 2.1.4.2.1 数据质量管理 2.1.4.2 工业大数据管理 5
80 1.3 工业软件 1 供给 4
81 2.1.4.1.4 时序数据库 2.1.4.1 工业大数据存储 4
82 2.3 边缘层 2 工业互联网平台 3
83 2.2 IaaS 2 工业互联网平台 3
84 2.1.4.1.1 关系型数据库 2.1.4.1 工业大数据存储 3
85 2.1.4.1.2 分布式数据库 2.1.4.1 工业大数据存储 3
86 2.1.4.1.3 实时数据库 2.1.4.1 工业大数据存储 3
87 2.1.4.2 工业大数据管理 2.1.4 工业大数据 3
88 1.3.1.3 计算机辅助制造CAM 1.3.1 设计研发 2
89 1.3.2 采购供应 1 供给 2
90 1.3.3 生产制造 1.3 工业软件 1
91 2.3.3 协议转换 2 工业互联网平台 1
92 1.3.4.3 人力资源管理HRM 1.3.4 企业运营管理 1
93 2.1.4.1 工业大数据存储 2.1.4 工业大数据 1
94 1.3.3.7 故障预测与健康管理PHM 1.3.3 生产制造 1
95 1.3.4 企业运营管理 1.3 工业软件 1
96 1.3.5 仓储物流 1 供给 1
97 1.4.4.1 身份鉴别与访问控制 1.4.4 平台安全 1
98 1.3.2.1 供应链管理SCM 1 供给 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 KiB

BIN
analysis/count_prod.xlsx Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
analysis/count_prod_pie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 928 KiB

8
analysis_count.py Normal file
View File

@ -0,0 +1,8 @@
import pandas as pd
count = pd.read_csv("analysis\\count.csv", dtype={'s_id': str, 'id_firm': str})
print(count)
print(len(count['s_id'].unique()))
count_max_ts = count.groupby('s_id')['ts'].max()
print(count_max_ts.value_counts())
print(count_max_ts.value_counts()/1593)

101
analysis_firm_network.py Normal file
View File

@ -0,0 +1,101 @@
import pandas as pd
import matplotlib.pyplot as plt
import networkx as nx
import math
plt.rcParams['font.sans-serif'] = 'SimHei'
# count firm category
count_firm = pd.read_csv("analysis\\count_firm.csv")
count_firm = count_firm[count_firm['count'] > 4]
print(count_firm.describe())
count_dcp = pd.read_csv("analysis\\count_dcp.csv",
dtype={
'up_id_firm': str,
'down_id_firm': str
})
# print(count_dcp)
count_dcp = count_dcp[count_dcp['count'] > 2]
list_firm = count_dcp['up_id_firm'].tolist(
) + count_dcp['down_id_firm'].tolist()
list_firm = list(set(list_firm))
# init graph firm
Firm = pd.read_csv("Firm_amended.csv")
Firm['Code'] = Firm['Code'].astype('string')
Firm.fillna(0, inplace=True)
Firm_attr = Firm.loc[:, ["Code", "Name", "Type_Region", "Revenue_Log"]]
firm_product = []
for _, row in Firm.loc[:, '1':].iterrows():
firm_product.append(row[row == 1].index.to_list())
Firm_attr.loc[:, 'Product_Code'] = firm_product
Firm_attr.set_index('Code', inplace=True)
G_firm = nx.MultiDiGraph()
G_firm.add_nodes_from(list_firm)
firm_labels_dict = {}
for code in G_firm.nodes:
firm_labels_dict[code] = Firm_attr.loc[code].to_dict()
nx.set_node_attributes(G_firm, firm_labels_dict)
count_max = count_dcp['count'].max()
count_min = count_dcp['count'].min()
k = 5 / (count_max - count_min)
for _, row in count_dcp.iterrows():
# print(row)
lst_add_edge = [(
row['up_id_firm'],
row['down_id_firm'],
{
'up_id_product': row['up_id_product'],
'up_name_product': row['up_name_product'],
'down_id_product': row['down_id_product'],
'down_name_product': row['down_name_product'],
# 'edge_label': f"{row['up_id_product']} {row['up_name_product']} - {row['down_id_product']} {row['down_name_product']}",
'edge_label': f"{row['up_id_product']} - {row['down_id_product']}",
'edge_width': k * (row['count'] - count_min),
'count': row['count']
})]
G_firm.add_edges_from(lst_add_edge)
# dcp_networkx
pos = nx.nx_agraph.graphviz_layout(G_firm, prog="dot", args="")
node_label = nx.get_node_attributes(G_firm, 'Name')
# node_degree = dict(G_firm.out_degree())
node_label = {
# key: f"{node_label[key]} {node_degree[key]}"
key: f"{node_label[key]}"
for key in node_label.keys()
}
node_size = list(nx.get_node_attributes(G_firm, 'Revenue_Log').values())
node_size = list(map(lambda x: x**2, node_size))
edge_label = nx.get_edge_attributes(G_firm, "edge_label")
edge_label = {(n1, n2): label for (n1, n2, _), label in edge_label.items()}
edge_width = nx.get_edge_attributes(G_firm, "edge_width")
edge_width = [w for (n1, n2, _), w in edge_width.items()]
colors = nx.get_edge_attributes(G_firm, "count")
colors = [w for (n1, n2, _), w in colors.items()]
vmin = min(colors)
vmax = max(colors)
cmap = plt.cm.Blues
fig = plt.figure(figsize=(10, 8), dpi=300)
nx.draw(G_firm,
pos,
node_size=node_size,
labels=node_label,
font_size=6,
width = 3,
edge_color=colors,
edge_cmap=cmap,
edge_vmin=vmin,
edge_vmax=vmax)
nx.draw_networkx_edge_labels(G_firm, pos, edge_label, font_size=6)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
position=fig.add_axes([0.9, 0.05, 0.01, 0.3])
plt.colorbar(sm, fraction=0.01, cax=position)
# plt.savefig("analysis\\count_dcp_network")
plt.close()

22
analysis_prod.py Normal file
View File

@ -0,0 +1,22 @@
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import networkx as nx
import math
plt.rcParams['font.sans-serif'] = 'SimHei'
Firm = pd.read_csv("Firm_amended.csv")
Firm['Code'] = Firm['Code'].astype('string')
Firm.fillna(0, inplace=True)
count_prod = pd.read_csv("analysis\\count_prod.csv")
for index, row in count_prod.iterrows():
count_prod.loc[index, 'num_firm'] = sum(Firm[row['id_product']]==1)
count_prod.loc[index, 'avg_size'] = Firm.loc[Firm[row['id_product']]==1, 'Revenue_Log'].median()
print(count_prod)
# sns.scatterplot(x='count', y='avg_size',data=count_prod)
ax = plt.subplot(projection = '3d') # 创建一个三维的绘图工程
ax.scatter(count_prod['avg_size'], count_prod['num_firm'], count_prod['count'], c = 'r')
plt.show()

176
analysis_prod_network.py Normal file
View File

@ -0,0 +1,176 @@
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
import math
plt.rcParams['font.sans-serif'] = 'SimHei'
count_prod = pd.read_csv("analysis\\count_prod.csv")
print(count_prod)
# category
print(count_prod.describe())
# pie
count_prod_trim = count_prod[count_prod['count'] > 50]
plt.pie(count_prod_trim['count'], labels=count_prod_trim['Name'])
plt.savefig("analysis\\count_prod_pie")
plt.close()
# prod_networkx
BomNodes = pd.read_csv('BomNodes.csv', index_col=0)
BomNodes.set_index('Code', inplace=True)
BomCateNet = pd.read_csv('BomCateNet.csv', index_col=0)
BomCateNet.fillna(0, inplace=True)
G = nx.from_pandas_adjacency(BomCateNet.T, create_using=nx.MultiDiGraph())
labels_dict = {}
for code in G.nodes:
node_attr = BomNodes.loc[code].to_dict()
index_list = count_prod[count_prod['id_product'] == code].index.tolist()
index = index_list[0] if len(index_list) == 1 else -1
node_attr['count'] = count_prod['count'].get(index, 0)
node_attr['node_size'] = 5 * count_prod['count'].get(index, 0)
node_attr['node_color'] = count_prod['count'].get(index, 0)
labels_dict[code] = node_attr
nx.set_node_attributes(G, labels_dict)
# print(labels_dict)
pos = nx.nx_agraph.graphviz_layout(G, prog="twopi", args="")
dict_node_name = nx.get_node_attributes(G, 'Name')
node_labels = {}
for node in nx.nodes(G):
node_labels[node] = f"{node} {str(dict_node_name[node])}"
# node_labels[node] = f"{str(dict_node_name[node])}"
colors = list(nx.get_node_attributes(G, 'node_color').values())
vmin = min(colors)
vmax = max(colors)
cmap = plt.cm.Blues
fig = plt.figure(figsize=(10, 10), dpi=300)
nx.draw(G,
pos,
node_size=list(nx.get_node_attributes(G, 'node_size').values()),
labels=node_labels,
font_size=6,
node_color=colors,
cmap=cmap,
vmin=vmin,
vmax=vmax,
edge_color='grey')
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
position = fig.add_axes([0.01, 0.05, 0.01, 0.3])
plt.colorbar(sm, fraction=0.01, cax=position)
# plt.savefig("analysis\\count_prod_network")
plt.close()
# dcp_prod
count_dcp = pd.read_csv("analysis\\count_dcp.csv",
dtype={
'up_id_firm': str,
'down_id_firm': str
})
count_dcp_prod = count_dcp.groupby(['up_id_product','up_name_product', 'down_id_product', 'down_name_product'])['count'].sum()
count_dcp_prod = count_dcp_prod.reset_index()
count_dcp_prod.sort_values('count', inplace=True, ascending=False)
count_dcp_prod.to_csv('analysis\\count_dcp_prod.csv',
index=False,
encoding='utf-8-sig')
count_dcp_prod = count_dcp_prod[count_dcp_prod['count'] > 2]
# print(count_dcp_prod)
list_prod = count_dcp_prod['up_id_product'].tolist(
) + count_dcp['down_id_product'].tolist()
list_prod = list(set(list_prod))
# init graph bom
BomNodes = pd.read_csv('BomNodes.csv', index_col=0)
BomNodes.set_index('Code', inplace=True)
g_bom = nx.MultiDiGraph()
g_bom.add_nodes_from(list_prod)
bom_labels_dict = {}
for code in list_prod:
dct_attr = BomNodes.loc[code].to_dict()
bom_labels_dict[code] = dct_attr
nx.set_node_attributes(g_bom, bom_labels_dict)
count_max = count_dcp_prod['count'].max()
count_min = count_dcp_prod['count'].min()
k = 5 / (count_max - count_min)
for _, row in count_dcp_prod.iterrows():
# print(row)
lst_add_edge = [(
row['up_id_product'],
row['down_id_product'],
{
'count': row['count']
})]
g_bom.add_edges_from(lst_add_edge)
# dcp_networkx
pos = nx.nx_agraph.graphviz_layout(g_bom, prog="dot", args="")
node_labels = nx.get_node_attributes(g_bom, 'Name')
temp = {}
for key, value in node_labels.items():
temp[key] = key + " " + value
node_labels = temp
colors = nx.get_edge_attributes(g_bom, "count")
colors = [w for (n1, n2, _), w in colors.items()]
vmin = min(colors)
vmax = max(colors)
cmap = plt.cm.Blues
# dct_row = {}
# for node, p in pos.items():
# if p[1] not in dct_row.keys():
# dct_row[p[1]] = {node: p}
# else:
# dct_row[p[1]][node] = p
# dct_row = dict(sorted(dct_row.items(), key=lambda d: d[0], reverse=True))
# dct_up = dct_row[max(dct_row.keys())]
# dct_up = dict(sorted(dct_up.items(), key=lambda d: d[1][0], reverse=True))
# h = list(dct_row.keys())[0] - list(dct_row.keys())[1]
# n = len(dct_up.items())
# arr_h = np.linspace(list(dct_row.keys())[0]-h/2, list(dct_row.keys())[0]+2*h, num=n)
# dct_up_new = {}
# for index, (node, p) in enumerate(dct_up.items()):
# dct_up_new[node] = (p[0], arr_h[index])
# pos_new = {}
# for row, dct in dct_row.items():
# if row == list(dct_row.keys())[0]:
# pos_new.update(dct_up_new)
# else:
# pos_new.update(dct)
pos_new ={}
for node, p in pos.items():
pos_new[node] = (p[1], p[0])
fig = plt.figure(figsize=(6, 10), dpi=300)
# plt.subplots_adjust(right=0.7)
nx.draw(g_bom,
pos_new,
node_size=50,
labels=node_labels,
font_size=6,
width = 1.5,
edge_color=colors,
edge_cmap=cmap,
edge_vmin=vmin,
edge_vmax=vmax)
plt.axis('off')
axis = plt.gca()
axis.set_xlim([1.2*x for x in axis.get_xlim()])
axis.set_ylim([1.2*y for y in axis.get_ylim()])
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
position=fig.add_axes([0.1, 0.4, 0.01, 0.2])
plt.colorbar(sm, fraction=0.01, cax=position)
# plt.savefig("analysis\\count_dcp_prod_network")
plt.close()

8
size_stats.py Normal file
View File

@ -0,0 +1,8 @@
import pandas as pd
Firm = pd.read_csv("Firm.csv")
data = Firm[['Revenue', 'Num_Employ','Size']]
print(data.describe(include='all'))
print(Firm[['Size']].value_counts())
print(Firm[['Source']].value_counts())

View File

@ -22,6 +22,10 @@ for s_id in lst_s_id:
result.set_index('id', inplace=True) result.set_index('id', inplace=True)
result.sort_index(inplace=True) result.sort_index(inplace=True)
result['id_firm'] = result['id_firm'].astype('string') result['id_firm'] = result['id_firm'].astype('string')
result.to_csv('analysis\\count.csv',
index=False,
encoding='utf-8-sig')
print(result)
# G bom # G bom
plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['font.sans-serif'] = 'SimHei'

View File

@ -65,6 +65,77 @@
"list_succ_firms = [1, 1]\n", "list_succ_firms = [1, 1]\n",
"round(share * len(list_succ_firms)) if round(share * len(list_succ_firms)) > 0 else 1" "round(share * len(list_succ_firms)) if round(share * len(list_succ_firms)) > 0 else 1"
] ]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.17307692307692307, 0.19230769230769232, 0.20192307692307693, 0.21153846153846154, 0.22115384615384615]\n",
"[0.14899116146026878, 0.1819782155490595, 0.20111703154812216, 0.22226869439668717, 0.24564489704586234]\n",
"[0.10801741721030356, 0.16114305076975205, 0.19682056666851946, 0.2403971829915773, 0.29362178235984765]\n",
"[0.07643198434626533, 0.13926815562848321, 0.18799234648997357, 0.25376312466637047, 0.34254438886890737]\n"
]
}
],
"source": [
"import math\n",
"size = [18,20,21,22,23]\n",
"p = [s / sum(size) for s in size]\n",
"print(p)\n",
"for beta in [0.1, 0.2, 0.3]:\n",
" damp_size = [math.exp(beta*s) for s in size]\n",
" print([s / sum(damp_size) for s in damp_size])\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.16666666666666666, 0.5, 0.6666666666666666, 0.8333333333333334, 1.0]\n",
"[0.8359588020779368, 0.9330329915368074, 0.960264500792218, 0.9819330445619127, 1.0]\n",
"[0.408248290463863, 0.7071067811865476, 0.816496580927726, 0.9128709291752769, 1.0]\n",
"[0.23849484685087588, 0.5743491774985174, 0.7229811807984657, 0.8642810744472068, 1.0]\n"
]
}
],
"source": [
"import math\n",
"size = [18,20,21,22,23]\n",
"p = [(s - min(size) + 1)/(max(size)-min(size)+1) for s in size]\n",
"print(p)\n",
"for beta in [0.1, 0.5, 0.8]:\n",
" p = [((s - min(size) + 1)/(max(size)-min(size)+1))**beta for s in size]\n",
" print(p)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"32\n"
]
}
],
"source": [
"import multiprocess as mp\n",
"\n",
"print(mp.cpu_count())"
]
} }
], ],
"metadata": { "metadata": {
@ -83,7 +154,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.13" "version": "3.8.8"
}, },
"orig_nbformat": 4, "orig_nbformat": 4,
"vscode": { "vscode": {