diff --git a/.idea/csv-editor.xml b/.idea/csv-editor.xml
index c176510..8f21283 100644
--- a/.idea/csv-editor.xml
+++ b/.idea/csv-editor.xml
@@ -73,6 +73,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/__pycache__/controller_db.cpython-38.pyc b/__pycache__/controller_db.cpython-38.pyc
index 46bb379..481ae4e 100644
Binary files a/__pycache__/controller_db.cpython-38.pyc and b/__pycache__/controller_db.cpython-38.pyc differ
diff --git a/__pycache__/my_model.cpython-38.pyc b/__pycache__/my_model.cpython-38.pyc
index 80403bf..58a3cc9 100644
Binary files a/__pycache__/my_model.cpython-38.pyc and b/__pycache__/my_model.cpython-38.pyc differ
diff --git a/__pycache__/orm.cpython-38.pyc b/__pycache__/orm.cpython-38.pyc
index 4931698..9a0e013 100644
Binary files a/__pycache__/orm.cpython-38.pyc and b/__pycache__/orm.cpython-38.pyc differ
diff --git a/controller_db.py b/controller_db.py
index d4900a4..5293180 100644
--- a/controller_db.py
+++ b/controller_db.py
@@ -44,7 +44,7 @@ class ControllerDB:
self.fill_sample_table()
def fill_experiment_table(self):
- firm = pd.read_csv("input_data/Firm_amended.csv")
+ firm = pd.read_csv("input_data/input_firm_data/Firm_amended.csv")
firm['Code'] = firm['Code'].astype('string')
firm.fillna(0, inplace=True)
@@ -74,10 +74,10 @@ class ControllerDB:
# fill g_bom
# 结点属性值 相当于 图上点的 原始 产品名称
- bom_nodes = pd.read_csv('input_data/BomNodes.csv', index_col=0)
+ bom_nodes = pd.read_csv('input_data/input_product_data/BomNodes.csv', index_col=0)
bom_nodes.set_index('Code', inplace=True)
- bom_cate_net = pd.read_csv('input_data/BomCateNet.csv', index_col=0)
+ bom_cate_net = pd.read_csv('input_data/input_product_data/BomCateNet.csv', index_col=0)
bom_cate_net.fillna(0, inplace=True)
# 创建 可以多边的有向图 同时 转置操作 使得 上游指向下游结点 也就是 1.1.1 - 1.1 类似这种
g_bom = nx.from_pandas_adjacency(bom_cate_net.T,
diff --git a/input_data/BomNodes.csv b/input_data/BomNodes.csv
deleted file mode 100644
index e3c410b..0000000
--- a/input_data/BomNodes.csv
+++ /dev/null
@@ -1,108 +0,0 @@
-Index,Code,Level,Name
-0,1,0,工业互联网
-1,1.1,1,工业自动化硬件
-2,1.1.1,2,工业计算芯片
-3,1.1.2,2,工业控制器
-4,1.1.3,2,工业服务器
-5,1.2,1,工业互联网网络
-6,1.2.1,2,网络互联服务
-7,1.2.2,2,标识解析服务
-8,1.2.3,2,数据互通服务
-9,1.3,1,工业软件
-10,1.3.1,2,设计研发软件
-11,1.3.1.1,3,计算机辅助设计CAD
-12,1.3.1.2,3,计算机辅助工程CAE
-13,1.3.1.3,3,计算机辅助制造CAM
-14,1.3.1.4,3,计算机辅助工艺过程设计CAPP
-15,1.3.1.5,3,产品数据管理PDM
-16,1.3.1.6,3,产品生命周期管理PLM
-17,1.3.1.7,3,电子设计自动化EDA
-18,1.3.2,2,采购供应软件
-19,1.3.2.1,3,供应链管理SCM
-20,1.3.3,2,生产制造软件
-21,1.3.3.1,3,制造执行系统MES
-22,1.3.3.2,3,分布式控制系统DCS
-23,1.3.3.3,3,数据采集与监视控制系统SCADA
-24,1.3.3.4,3,可编程逻揖控制系统PLC
-25,1.3.3.5,3,企业资产管理系统EAM
-26,1.3.3.6,3,运维保障系统MRO
-27,1.3.3.7,3,故障预测与健康管理PHM
-28,1.3.4,2,企业运营管理软件
-29,1.3.4.1,3,企业资源计划ERP
-30,1.3.4.2,3,客户关系管理CRM
-31,1.3.4.3,3,人力资源管理HRM
-32,1.3.5,2,仓储物流软件
-33,1.3.5.1,3,仓储物流管理WMS
-34,1.4,1,工业互联网安全管理
-35,1.4.1,2,设备安全
-36,1.4.1.1,3,工业防火墙
-37,1.4.1.2,3,下一代防火墙
-38,1.4.1.3,3,防毒墙
-39,1.4.1.4,3,入侵检测系统
-40,1.4.1.5,3,统一威胁管理系统
-41,1.4.2,2,控制安全
-42,1.4.2.1,3,工控安全监测与审计
-43,1.4.2.2,3,工控主机卫士
-44,1.4.2.3,3,工控漏洞扫描
-45,1.4.2.4,3,安全隔离与信息交换系统
-46,1.4.2.5,3,安全日志与审计
-47,1.4.2.6,3,隐私计算
-48,1.4.2.7,3,工控原生安全
-49,1.4.3,2,网络安全
-50,1.4.3.1,3,网络漏洞扫描和补丁管理
-51,1.4.3.2,3,流量检测
-52,1.4.3.3,3,APT检测
-53,1.4.3.4,3,攻击溯源
-54,1.4.3.5,3,负载均衡
-55,1.4.3.6,3,沙箱类设备
-56,1.4.4,2,平台安全
-57,1.4.4.1,3,身份鉴别与访问控制
-58,1.4.4.2,3,密钥管理
-59,1.4.4.3,3,接入认证
-60,1.4.4.4,3,工业应用行为监控
-61,1.4.4.5,3,安全态势感知
-62,1.4.5,2,数据安全
-63,1.4.5.1,3,恶意代码检测系统
-64,1.4.5.2,3,数据防泄漏系统
-65,1.4.5.3,3,数据审计系统
-66,1.4.5.4,3,数据脱敏
-67,1.4.5.5,3,敏感数据发现与监控
-68,1.4.5.6,3,数据容灾备份
-69,1.4.5.7,3,数据恢复
-70,1.4.5.8,3,数据加密
-71,1.4.5.9,3,数据防火墙
-72,2,0,工业互联网平台
-73,2.1,1,PaaS
-74,2.1.1,2,开发工具
-75,2.1.1.1,3,算法建模工具
-76,2.1.1.2,3,低代码开发工具
-77,2.1.1.3,3,流程开发工具
-78,2.1.1.4,3,组态建模工具
-79,2.1.1.5,3,数字孪生建模工具
-80,2.1.2,2,工业模型库
-81,2.1.2.1,3,数据算法模型
-82,2.1.2.2,3,业务流程模型
-83,2.1.2.3,3,研发仿真模型
-84,2.1.2.4,3,行业机理模型
-85,2.1.3,2,工业物联网
-86,2.1.3.1,3,物联网服务
-87,2.1.3.2,3,平台基础服务
-88,2.1.3.3,3,工业引擎服务
-89,2.1.3.4,3,应用管理服务
-90,2.1.3.5,3,容器服务
-91,2.1.3.6,3,微服务
-92,2.1.3.7,3,制造类API
-93,2.1.4,2,工业大数据
-94,2.1.4.1,3,工业大数据存储
-95,2.1.4.1.1,4,关系型数据库
-96,2.1.4.1.2,4,分布式数据库
-97,2.1.4.1.3,4,实时数据库
-98,2.1.4.1.4,4,时序数据库
-99,2.1.4.2,3,工业大数据管理
-100,2.1.4.2.1,4,数据质量管理
-101,2.1.4.2.2,4,数据安全管理
-102,2.2,1,IaaS
-103,2.3,1,边缘层
-104,2.3.1,2,工业数据接入
-105,2.3.2,2,边缘数据处理
-106,2.3.3,2,协议转换
diff --git a/input_data/Firm_amended.csv b/input_data/Firm_amended.csv
deleted file mode 100644
index 55bac16..0000000
--- a/input_data/Firm_amended.csv
+++ /dev/null
@@ -1,172 +0,0 @@
-Code,Stock_Region,Report_Year,Assets,Revenue_Log,Revenue,Size,Num_Employ_Log,Num_Employ,Source,Type_Region,1,1.1,1.1.1,1.1.2,1.1.3,1.2,1.2.1,1.2.2,1.2.3,1.3,1.3.1,1.3.1.1,1.3.1.2,1.3.1.3,1.3.1.4,1.3.1.5,1.3.1.6,1.3.1.7,1.3.2,1.3.2.1,1.3.3,1.3.3.1,1.3.3.2,1.3.3.3,1.3.3.4,1.3.3.5,1.3.3.6,1.3.3.7,1.3.4,1.3.4.1,1.3.4.2,1.3.4.3,1.3.5,1.3.5.1,1.4,1.4.1,1.4.1.1,1.4.1.2,1.4.1.3,1.4.1.4,1.4.1.5,1.4.2,1.4.2.1,1.4.2.2,1.4.2.3,1.4.2.4,1.4.2.5,1.4.2.6,1.4.2.7,1.4.3,1.4.3.1,1.4.3.2,1.4.3.3,1.4.3.4,1.4.3.5,1.4.3.6,1.4.4,1.4.4.1,1.4.4.2,1.4.4.3,1.4.4.4,1.4.4.5,1.4.5,1.4.5.1,1.4.5.2,1.4.5.3,1.4.5.4,1.4.5.5,1.4.5.6,1.4.5.7,1.4.5.8,1.4.5.9,2,2.1,2.1.1,2.1.1.1,2.1.1.2,2.1.1.3,2.1.1.4,2.1.1.5,2.1.2,2.1.2.1,2.1.2.2,2.1.2.3,2.1.2.4,2.1.3,2.1.3.1,2.1.3.2,2.1.3.3,2.1.3.4,2.1.3.5,2.1.3.6,2.1.3.7,2.1.4,2.1.4.1,2.1.4.1.1,2.1.4.1.2,2.1.4.1.3,2.1.4.1.4,2.1.4.2,2.1.4.2.1,2.1.4.2.2,2.2,2.3,2.3.1,2.3.2,2.3.3
-0,SH,2021,42040000000,23.11111077,10890000000,L,8.908288886,7393,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-1,,2021,524000000,18.74276424,138000000,M,5.141663557,171,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-2,,,,18.91495248,,M,4.727387819,113,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-3,,,,17.40772217,,S,3.17805383,24,qichacha,Beijing,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-4,,,,19.65580702,,M,5.488937726,242,qichacha,Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-5,,,,18.5031337,,S,4.304065093,74,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-6,,2017,902000000,18.88441476,159000000,M,5.117993812,167,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-7,,,,20.22851329,,L,6.077642243,436,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,
-8,,,,20.02307783,,M,5.866468057,353,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-9,,,,20.12502381,,L,5.97126184,392,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-10,,,,18.99744465,,M,4.812184355,123,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-11,SZ,2021,2831000000,20.33022325,675000000,L,7.437795122,1699,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-12,,,,19.4654905,,M,5.293304825,199,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-13,SZ,2021,8632000000,21.62748399,2470000000,L,9.069698042,8688,qichacha,Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,,,1,1,1
-14,SZ,2021,21070000000,23.11019208,10880000000,L,9.372969295,11766,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-15,SH,2021,18310000000,22.89060378,8735000000,L,9.793616881,17919,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-16,SZ,2021,2357000000,20.6624537,941000000,L,7.398174093,1633,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1
-17,,,,17.68758638,,S,3.465735903,32,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-18,,,,19.78721596,,M,5.624017506,277,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-19,,,,18.19661508,,S,3.988984047,54,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-20,,,,16.33896504,,XS,2.079441542,8,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-21,SE,2021,4348926705,21.58399273,2364879075,L,9.998797732,22000,hexagon,Foreign,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-22,,,,18.78627894,,S,4.59511985,99,qichacha,Beijing,,,,,,,1,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,,,1,1,1
-23,US,2021,10365469660,22.30379074,4857504838,S,4.143134726,63,hollysys,Beijing,,,,1,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,1,1
-24,HK,2021,2486434448,21.10974082,1471783581,M,5.605802066,272,hkexnews,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-25,SZ,2021,1802000000,20.17681304,579000000,L,6.492239835,660,qichacha,Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-26,,,,14.9903437,,XS,0.693147181,2,,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,,
-27,,,,19.43065419,,M,5.257495372,192,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-28,HK,2021,19000334000,22.12943807,4080307000,L,7.181591945,1315,hkexnews,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,
-29,US,2021,4.96507E+11,27.58140221,9.51592E+11,M,5.891644212,362,jd,Beijing,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-30,,,,19.34600737,,M,5.170483995,176,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-31,,,,17.01327571,,S,2.772588722,16,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-32,,,,18.75634351,,S,4.564348191,96,qichacha,Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-33,,,,18.66057858,,S,4.465908119,87,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-34,,,,19.69132991,,M,5.525452939,251,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-35,,,,18.28276201,,S,4.077537444,59,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-36,SH,2021,1989000000,20.90642038,1201000000,L,6.711740395,822,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-37,SZ,2021,4765000000,21.68223284,2609000000,L,8.394347361,4422,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,1,,,,,,,1,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-38,,,,17.12785796,,S,2.890371758,18,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-39,US,2021,50085024000,23.98443519,26080016000,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-40,SH,2021,13480000000,22.48267428,5809000000,L,9.17543832,9657,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,1,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-41,SZ,2021,8936000000,22.20168349,4386000000,L,8.792853289,6587,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,1,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-42,,,,20.38102153,,M,6.234410726,510,qichacha,Beijing,,,,,,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-43,,2021,3042000000,21.13006339,1502000000,L,6.385194399,593,qichacha,Beijing,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-44,,2021,3049000000,21.52884845,2238000000,M,6.754604099,858,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-45,,,,21.43051418,,M,7.313220387,1500,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-46,,,,17.90466593,,S,3.688879454,40,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-47,,,,21.33304811,,L,7.21303166,1357,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,1,1,1,1,,,,,,,1,,,,,,,,,,,,,,,
-48,SH,2021,26190000000,23.13917962,11200000000,L,8.319473692,4103,qichacha,Non_Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-49,,2017,219000000,18.6195316,122000000,M,5.786897381,326,qichacha,Beijing,,,,,,,,,,,,1,,,1,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-50,,,,20.12502381,,M,5.97126184,392,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-51,,,,18.79605616,,M,4.605170186,100,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-52,,,,18.36189706,,S,4.158883083,64,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-53,SZ,2021,11600000000,21.93282302,3352000000,L,8.743372131,6269,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,1,,,,,,,1,1,1,1,,,,,1,,,,1,1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-54,,,,21.48044599,,L,7.364547014,1579,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-55,,,,20.09221468,,M,5.937536205,379,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-56,,2020,439000000,19.01400759,181000000,L,5.897153868,364,qichacha,Beijing,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-57,,,,19.12338465,,M,4.941642423,140,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1
-58,SH,2021,17330000000,22.91290617,8932000000,L,10.07255499,23684,qichacha,Beijing,,,,,,,,1,,,,,,,,,1,,1,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,
-59,,,,18.9063051,,M,4.718498871,112,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-60,,,,18.12174548,,S,3.912023005,50,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-61,,2017,629000000,19.3409635,251000000,L,5.811140993,334,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-62,,,,18.64933193,,S,4.454347296,86,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-63,,,,20.05292974,,M,5.897153868,364,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-64,,,,19.22865749,,M,5.049856007,156,qichacha,Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-65,SH,2021,7.62234E+11,26.80902186,4.39552E+11,L,12.53868745,278922,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-66,SH,2021,5.933E+11,26.51597452,3.279E+11,L,12.39942069,242661,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-67,SH,2021,1.84E+12,27.46645067,8.48258E+11,L,8.430545385,4585,qichacha,Beijing,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-68,SH,2021,3117000000,20.24199902,618000000,L,7.430707083,1687,qichacha,Beijing,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-69,SZ,2021,66430000000,24.93746536,67640000000,L,9.74957851,17147,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-70,US,2021,2.52378E+11,25.92778688,1.82094E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-71,US,2021,8003332000,22.02110911,3661391520,,,,marketwatch,Foreign,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-72,US,2021,43511280320,23.29726635,13118199200,,,,marketwatch,Foreign,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-73,JP,2021,83161023470,24.06291953,28209355790,,,,fanuc,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,
-74,US,2021,4.43554E+11,26.18956307,2.36583E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,
-75,US,2021,9.08167E+11,26.70107477,3.94575E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-76,,2021,,20.06161732,516000000,,,,zippia,Foreign,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-77,US,2021,9.02016E+11,26.35266781,2.78496E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-78,,2021,,21.41879181,2004763250,,,,forbes,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-79,US,2021,31012012800,23.24364049,12433253920,,,,marketwatch,Foreign,,,,,,,,,,,,1,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,1,1,1,1,,1,,,,,1,,,,,1,1,1
-80,US,2021,4.56151E+11,25.7083355,1.46214E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-81,US,2021,4.89643E+11,25.97843016,1.91553E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,1,,,,,,,
-82,,2021,,18.0265116,67424000,,,,zippia,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-83,US,2021,1.70039E+11,25.55511763,1.25443E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-84,,2021,7.80541E+11,27.07058915,5.70962E+11,,,,bosch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,,,1,,,
-85,FR,2021,1.04402E+12,26.60060295,3.56858E+11,,,,dassault ,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-86,US,2021,8.49095E+11,27.11512238,5.96964E+11,,,,marketwatch,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-87,US,2021,1.69771E+11,25.56118703,1.26207E+11,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-88,US,2021,3.96969E+11,25.97925591,1.91711E+11,,,,marketwatch,Foreign,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-89,US,2021,75779072000,24.59715157,48129040000,,,,marketwatch,Foreign,,,,1,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-90,,2023,,22.39969825,5346448000,,,,zoominfo,Foreign,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-91,,2023,,21.2735583,1733760000,,6.913737351,1006,rocketreach,Foreign,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-92,JP,2021,47620285930,24.38782633,39038974590,,,,omron,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-93,US,2021,30177737120,23.74657041,20559118720,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-94,JP,2021,1.12124E+12,27.50709063,8.83441E+11,,,,mitsubishi,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-95,FR,2021,4.00517E+11,26.08097343,2.12238E+11,,,,schneider,Foreign,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,
-96,US,2021,6.70779E+11,26.56026085,3.42748E+11,,,,marketwatch,Foreign,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-97,US,2021,1.36825E+12,26.95829817,5.10317E+11,,,,marketwatch,Foreign,,,,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,
-98,US,2021,2.2964E+12,27.77637214,1.15645E+12,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-99,XE,2021,1.02335E+12,26.84835831,4.57187E+11,,,,siemens,Foreign,,,,1,,,1,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,
-100,US,2021,60215548800,24.08697187,28896082560,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-101,US,2021,3.59976E+11,24.64226064,50349807680,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-102,US,2021,2.89338E+12,28.80423839,3.23238E+12,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
-103,US,2021,94016180090,25.03108636,74278423930,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-104,XE,2021,1.71332E+11,25.12029384,81209156000,,10.82552176,50288,infineon ,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-105,US,2021,1.15863E+12,27.02163609,5.43685E+11,,,,marketwatch,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-106,US,2021,1.69022E+12,27.29874466,7.17289E+11,,,,alibaba ,Non_Beijing,,1,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,,
-107,SH,2021,4852000000,21.32210234,1820000000,L,8.191740021,3611,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-108,HK,2021,3.80034E+11,25.54751533,1.24493E+11,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,,
-109,SH,2021,17860000000,23.18796978,11760000000,L,8.567506005,5258,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-110,,,,18.66057858,,S,4.465908119,87,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-111,SZ,2021,2638000000,21.30436351,1788000000,L,8.360305436,4274,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-112,SZ,2021,545000000,19.36458664,257000000,L,6.376726948,588,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-113,,,,19.49912236,,M,5.327876169,206,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-114,,,,18.79605616,,M,4.605170186,100,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-115,,2021,2.666E+11,26.80913106,4.396E+11,L,12.16509439,191970,qichacha,Non_Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,
-116,SH,2021,2342000000,19.07820075,193000000,M,5.683579767,294,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-117,,,,14.9903437,,XS,0.693147181,2,,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-118,,,,18.44907397,,S,4.248495242,70,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-119,SZ,2021,10070000000,22.44941955,5619000000,L,9.157572306,9486,qichacha,Non_Beijing,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-120,,,,21.70305471,,M,7.593374193,1985,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-121,,,,17.97502126,,S,3.761200116,43,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-122,SZ,2021,2668000000,20.74110576,1018000000,L,6.966024187,1060,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-123,SZ,2021,2576000000,21.63595007,2491000000,L,7.028201432,1128,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-124,SH,2021,2.177E+11,26.15085554,2.276E+11,L,11.56051491,104874,qichacha,Non_Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,
-125,,,,18.81532064,,M,4.624972813,102,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-126,,2021,,27.17973246,6.36807E+11,L,9.210340372,10000,qichacha,Non_Beijing,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,1,1,,,
-127,,2021,,23.0573496,10320000000,M,8.853665428,7000,qichacha,Non_Beijing,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-128,SZ,2021,3800000000,21.08443069,1435000000,L,7.557472902,1915,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-129,SZ,2021,3399000000,21.21429683,1634000000,L,7.857093865,2584,qichacha,Non_Beijing,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-130,HK,2021,11087132000,22.15217586,4174147000,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-131,,,,16.45354728,,S,2.197224577,9,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-132,SZ,2021,3337000000,20.8542941,1140000000,L,7.543273347,1888,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-133,SZ,2021,6249000000,19.47499277,287000000,L,6.107022888,449,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-134,,2019,446000000,19.52593758,302000000,L,6.415096959,611,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-135,SH,2021,4155000000,21.3275818,1830000000,L,7.276556403,1446,qichacha,Non_Beijing,,,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,1,,,,
-136,SZ,2021,3.879E+11,26.56216179,3.434E+11,L,12.01853149,165799,qichacha,Non_Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-137,NQ,,381000000,19.44672234,279000000,M,6.65544035,777,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-138,SZ,2021,2120000000,20.77300793,1051000000,L,7.329749689,1525,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-139,SH,2021,772000000,19.79944684,397000000,L,6.244166901,515,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-140,SH,2021,1944000000,20.74990777,1027000000,L,7.499976541,1808,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,1,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-141,,,,19.45071314,,M,5.278114659,196,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-142,SZ,2021,10950000000,22.64092347,6805000000,L,9.09346942,8897,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-143,,,,21.03606772,,L,6.907755279,1000,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
-144,,2021,1130000000,20.06355343,517000000,L,6.263398263,525,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-145,,,,15.38479015,,S,1.098612289,3,,Non_Beijing,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-146,,2021,297000000,19.27934236,236000000,M,4.997212274,148,qichacha,Non_Beijing,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-147,SZ,2021,9607000000,22.77314983,7767000000,L,9.041329829,8445,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-148,HK,2021,1.61236E+12,27.05141331,5.60118E+11,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,,
-149,,,,18.26613213,,S,4.060443011,58,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-150,SH,2021,2039000000,21.97859693,3509000000,L,5.774551546,322,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-151,,2017,156000000,17.63219378,45453200,S,4.9698133,144,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-152,SZ,2021,7142000000,21.74894895,2789000000,L,7.850493181,2567,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-153,,,,19.12338465,,M,4.941642423,140,qichacha,Non_Beijing,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-154,,,,19.13030869,,S,4.94875989,141,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-155,HK,2021,2.92892E+11,26.51722152,3.28309E+11,,,,xiaomi,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,
-156,,,,14.9903437,,XS,0.693147181,2,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-157,,,,22.72444558,,L,8.643297068,5672,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-158,,2018,425000000,19.54235831,307000000,L,6.240275845,513,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-159,SZ,2021,1.67E+11,25.15800351,84330000000,L,9.647497927,15483,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,
-160,HK,2021,9505464000,22.65401405,6894667000,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-161,,,,21.9929142,,L,7.891330758,2674,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1
-162,,,,17.88978166,58807600,M,5.370638028,215,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-163,,,,18.36189706,,S,4.158883083,64,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,,
-164,,,,21.83955113,,L,7.733683571,2284,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-165,,,,18.29911239,,S,4.094344562,60,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,
-166,,,,19.83851913,,M,5.676753802,292,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-167,SZ,2021,78220000000,24.43927396,41100000000,L,9.500843462,13371,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-168,SH,2021,10350000000,22.23155657,4519000000,L,8.528528701,5057,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1
-169,SH,2021,2.30233E+11,24.27012079,34704000000,L,8.55120807,5173,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-170,,,,18.42068074,100000000,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/测试数据 device_salvage_values.csv b/input_data/device_salvage_values.csv
similarity index 100%
rename from 测试数据 device_salvage_values.csv
rename to input_data/device_salvage_values.csv
diff --git a/input_data/测试 Firm_amended 170.csv b/input_data/input_firm_data/Firm_amended.csv
similarity index 100%
rename from input_data/测试 Firm_amended 170.csv
rename to input_data/input_firm_data/Firm_amended.csv
diff --git a/测试数据 companies_devices.csv b/input_data/input_firm_data/firms_devices.csv
similarity index 100%
rename from 测试数据 companies_devices.csv
rename to input_data/input_firm_data/firms_devices.csv
diff --git a/测试数据 companies_materials.csv b/input_data/input_firm_data/firms_materials.csv
similarity index 100%
rename from 测试数据 companies_materials.csv
rename to input_data/input_firm_data/firms_materials.csv
diff --git a/测试数据 companies_products.csv b/input_data/input_firm_data/firms_products.csv
similarity index 100%
rename from 测试数据 companies_products.csv
rename to input_data/input_firm_data/firms_products.csv
diff --git a/input_data/BomCateNet.csv b/input_data/input_product_data/BomCateNet.csv
similarity index 100%
rename from input_data/BomCateNet.csv
rename to input_data/input_product_data/BomCateNet.csv
diff --git a/input_data/测试 BomNodes.csv b/input_data/input_product_data/BomNodes.csv
similarity index 100%
rename from input_data/测试 BomNodes.csv
rename to input_data/input_product_data/BomNodes.csv
diff --git a/测试数据 consumed_materials.csv b/input_data/input_product_data/products_consumed_materials.csv
similarity index 100%
rename from 测试数据 consumed_materials.csv
rename to input_data/input_product_data/products_consumed_materials.csv
diff --git a/测试数据 products_materials_equipment.csv b/input_data/input_product_data/products_materials_equipment.csv
similarity index 100%
rename from 测试数据 products_materials_equipment.csv
rename to input_data/input_product_data/products_materials_equipment.csv
diff --git a/测试数据 produced_products.csv b/input_data/input_product_data/products_produced_products.csv
similarity index 100%
rename from 测试数据 produced_products.csv
rename to input_data/input_product_data/products_produced_products.csv
diff --git a/测试数据 material_device_product_ids.csv b/input_data/material_device_product_ids.csv
similarity index 100%
rename from 测试数据 material_device_product_ids.csv
rename to input_data/material_device_product_ids.csv
diff --git a/main.py b/main.py
index 2ac6aa7..4880349 100644
--- a/main.py
+++ b/main.py
@@ -5,9 +5,7 @@ from multiprocessing import Process
import argparse
from computation import Computation
from sqlalchemy.orm import close_all_sessions
-
import yaml
-
from controller_db import ControllerDB
@@ -23,8 +21,6 @@ def controll_db_and_process(exp_argument, reset_sample_argument, reset_db_argume
close_all_sessions()
# 调用 do_process 利用计算机进行多核处理 仿真 将数据库中
do_process(do_computation, controller_db)
-
-
def do_process(target: object, controller_db: ControllerDB, ):
process_list = []
for i in range(int(args.job)):
@@ -34,8 +30,6 @@ def do_process(target: object, controller_db: ControllerDB, ):
for i in process_list:
i.join()
-
-
def do_computation(c_db):
exp = Computation(c_db)
diff --git a/my_model.py b/my_model.py
index 415826a..5dc11a2 100644
--- a/my_model.py
+++ b/my_model.py
@@ -80,7 +80,7 @@ class MyModel(Model):
print(f"Failed to initialize product network: {e}")
# 赋予 产业的量
# 产业种类
- data = pd.read_csv('input_data/测试 BomNodes.csv')
+ data = pd.read_csv('input_data/input_product_data/BomNodes.csv')
data['Code'] = data['Code'].astype('string')
self.type2 = data
# 设备c折旧比值
@@ -89,7 +89,7 @@ class MyModel(Model):
def initialize_firm_network(self):
# Read the firm data
- firm = pd.read_csv("input_data/测试 Firm_amended 170.csv")
+ firm = pd.read_csv("input_data/input_firm_data/Firm_amended.csv")
firm['Code'] = firm['Code'].astype('string')
firm.fillna(0, inplace=True)
@@ -225,7 +225,7 @@ class MyModel(Model):
for ag_node, attr in self.product_network.nodes(data=True):
# 产业种类
- # 利用 测试 BomNodes.csv 转换产业 和 id 前提是 一个产业一个产品id 且一一对应
+ # 利用 BomNodes.csv 转换产业 和 id 前提是 一个产业一个产品id 且一一对应
product_id = self.type2.loc[self.type2['Code'] == ag_node, 'Index']
type2 = self.type2.loc[product_id, '产业种类'].values[0]
@@ -317,10 +317,10 @@ class MyModel(Model):
self.product_agents.append(agent)
def resource_integration(self):
- data_R = pd.read_csv("测试数据 companies_materials.csv")
- data_C = pd.read_csv("测试数据 companies_devices.csv")
- data_P = pd.read_csv("测试数据 companies_products.csv")
- device_salvage_values = pd.read_csv('测试数据 device_salvage_values.csv')
+ data_R = pd.read_csv("input_data/input_firm_data/firms_materials.csv")
+ data_C = pd.read_csv("input_data/input_firm_data/firms_devices.csv")
+ data_P = pd.read_csv("input_data/input_firm_data/firms_products.csv")
+ device_salvage_values = pd.read_csv('input_data/device_salvage_values.csv')
self.device_salvage_values = device_salvage_values
@@ -339,8 +339,8 @@ class MyModel(Model):
self.firm_resource_P = firm_resource_P
def j_comp_consumed_produced(self):
- data_consumed = pd.read_csv('测试数据 consumed_materials.csv')
- data_produced = pd.read_csv('测试数据 produced_products.csv')
+ data_consumed = pd.read_csv('input_data/input_product_data/products_consumed_materials.csv')
+ data_produced = pd.read_csv('input_data/input_product_data/products_produced_products.csv')
data_consumed = (data_consumed.groupby('产业id')[['消耗材料id', '消耗量']]
.apply(lambda x: x.values.tolist()))
diff --git a/output_result/risk/count.csv b/output_result/risk/count.csv
new file mode 100644
index 0000000..c650bce
--- /dev/null
+++ b/output_result/risk/count.csv
@@ -0,0 +1,76 @@
+s_id,id_firm,id_product,ts
+1441,13,2.1.3.4,0
+1441,126,2.1.3,1
+1441,97,2.1.3,1
+1441,106,2.1.3,1
+1566,13,2.1.3.7,0
+1566,126,2.1.3,1
+2073,14,1.3.3.4,0
+2073,75,1.3.3,1
+2621,85,1.3.1,1
+2621,21,1.3.1.3,0
+2621,100,1.3.1,1
+3386,22,2.1.3.7,0
+3386,108,2.1.3,1
+4249,23,2.3.1,0
+4249,84,2.3,1
+4440,25,1.3.1.7,0
+4440,100,1.3.1,1
+4624,74,2.1.3,1
+4624,26,2.1.3.4,0
+5015,31,1.3.3.3,0
+5015,75,1.3.3,1
+5015,97,1.3.3,1
+5720,94,1.1,1
+5720,36,1.1.1,0
+5720,126,1.1,1
+7349,80,1.3.4,1
+7349,45,1.3.4.2,0
+7349,77,1.3.4,1
+7399,79,2.1.4.1,1
+7399,45,2.1.4.1.1,0
+8285,99,1.3.1,1
+8285,49,1.3.1.4,0
+8601,93,1.3.1,1
+8601,50,1.3.1.5,0
+8601,85,1.3.1,1
+9072,53,1.4.3.4,0
+9072,142,1.4.3,1
+9382,41,1.4.5,1
+9382,53,1.4.5.6,0
+10098,99,1.3.3,1
+10098,57,1.3.3.3,0
+10121,57,2.3.1,0
+10121,124,2.3,1
+10521,81,1.3.4,1
+10521,58,1.3.4.3,0
+10521,80,1.3.4,1
+11675,93,1.3.1,1
+11675,68,1.3.1.3,0
+11678,99,1.3.1,1
+11678,85,1.3.1,1
+11678,68,1.3.1.3,0
+12837,126,2.1.3,1
+12837,74,2.1.3,1
+12837,73,2.1.3,1
+12837,79,2.1.3.2,0
+13084,108,2.1.3,1
+13084,73,2.1.3,1
+13084,106,2.1.3,1
+13084,79,2.1.3.7,0
+13084,148,2.1.3,1
+13084,126,2.1.3,1
+16647,115,1.1.3,0
+16647,94,1.1,1
+16903,85,2.1.1,1
+16903,117,2.1.1.4,0
+17379,119,1.3.1.1,0
+17379,100,1.3.1,1
+17922,126,2.1.1.5,0
+17922,80,2.1.1,1
+18824,85,2.1.1,1
+18824,131,2.1.1.5,0
+19562,135,2.2,0
+19562,98,2,1
+21447,159,2.1.2,1
+21447,149,2.1.2.2,0
diff --git a/output_result/risk/count_dcp.csv b/output_result/risk/count_dcp.csv
new file mode 100644
index 0000000..a0f222c
--- /dev/null
+++ b/output_result/risk/count_dcp.csv
@@ -0,0 +1,46 @@
+up_id_firm,up_id_product,down_id_firm,down_id_product,count
+115,1.1.3,94,1.1,1
+45,1.3.4.2,80,1.3.4,1
+49,1.3.1.4,99,1.3.1,1
+50,1.3.1.5,85,1.3.1,1
+50,1.3.1.5,93,1.3.1,1
+53,1.4.3.4,142,1.4.3,1
+53,1.4.5.6,41,1.4.5,1
+57,1.3.3.3,99,1.3.3,1
+57,2.3.1,124,2.3,1
+58,1.3.4.3,80,1.3.4,1
+58,1.3.4.3,81,1.3.4,1
+68,1.3.1.3,85,1.3.1,1
+68,1.3.1.3,93,1.3.1,1
+68,1.3.1.3,99,1.3.1,1
+79,2.1.3.2,126,2.1.3,1
+79,2.1.3.2,73,2.1.3,1
+79,2.1.3.2,74,2.1.3,1
+79,2.1.3.7,106,2.1.3,1
+79,2.1.3.7,108,2.1.3,1
+79,2.1.3.7,126,2.1.3,1
+79,2.1.3.7,148,2.1.3,1
+45,2.1.4.1.1,79,2.1.4.1,1
+45,1.3.4.2,77,1.3.4,1
+117,2.1.1.4,85,2.1.1,1
+36,1.1.1,94,1.1,1
+119,1.3.1.1,100,1.3.1,1
+126,2.1.1.5,80,2.1.1,1
+13,2.1.3.4,106,2.1.3,1
+13,2.1.3.4,126,2.1.3,1
+13,2.1.3.4,97,2.1.3,1
+13,2.1.3.7,126,2.1.3,1
+131,2.1.1.5,85,2.1.1,1
+135,2.2,98,2,1
+14,1.3.3.4,75,1.3.3,1
+149,2.1.2.2,159,2.1.2,1
+21,1.3.1.3,100,1.3.1,1
+21,1.3.1.3,85,1.3.1,1
+22,2.1.3.7,108,2.1.3,1
+23,2.3.1,84,2.3,1
+25,1.3.1.7,100,1.3.1,1
+26,2.1.3.4,74,2.1.3,1
+31,1.3.3.3,75,1.3.3,1
+31,1.3.3.3,97,1.3.3,1
+36,1.1.1,126,1.1,1
+79,2.1.3.7,73,2.1.3,1
diff --git a/output_result/risk/count_dcp_prod.csv b/output_result/risk/count_dcp_prod.csv
new file mode 100644
index 0000000..a5d7d4f
--- /dev/null
+++ b/output_result/risk/count_dcp_prod.csv
@@ -0,0 +1,23 @@
+up_id_product,down_id_product,count
+2.1.3.7,2.1.3,7
+1.3.1.3,1.3.1,5
+2.1.3.4,2.1.3,4
+2.1.3.2,2.1.3,3
+1.3.3.3,1.3.3,3
+1.1.1,1.1,2
+1.3.4.2,1.3.4,2
+2.1.1.5,2.1.1,2
+1.3.4.3,1.3.4,2
+2.3.1,2.3,2
+1.3.1.5,1.3.1,2
+1.3.3.4,1.3.3,1
+1.1.3,1.1,1
+1.4.5.6,1.4.5,1
+2.1.1.4,2.1.1,1
+1.3.1.7,1.3.1,1
+2.1.2.2,2.1.2,1
+1.3.1.4,1.3.1,1
+1.3.1.1,1.3.1,1
+2.1.4.1.1,2.1.4.1,1
+2.2,2,1
+1.4.3.4,1.4.3,1
diff --git a/output_result/risk/count_firm.csv b/output_result/risk/count_firm.csv
new file mode 100644
index 0000000..284b7c7
--- /dev/null
+++ b/output_result/risk/count_firm.csv
@@ -0,0 +1,46 @@
+id_firm,count
+126,6
+85,5
+100,3
+80,3
+79,3
+99,3
+57,2
+74,2
+13,2
+97,2
+94,2
+93,2
+108,2
+45,2
+68,2
+53,2
+106,2
+73,2
+75,2
+58,1
+124,1
+77,1
+117,1
+81,1
+84,1
+98,1
+115,1
+49,1
+50,1
+159,1
+131,1
+135,1
+14,1
+142,1
+148,1
+149,1
+21,1
+119,1
+22,1
+23,1
+25,1
+26,1
+31,1
+41,1
+36,1
diff --git a/output_result/risk/count_firm_prod.csv b/output_result/risk/count_firm_prod.csv
new file mode 100644
index 0000000..d7769ec
--- /dev/null
+++ b/output_result/risk/count_firm_prod.csv
@@ -0,0 +1,58 @@
+id_firm,id_product,count
+126,2.1.3,4
+100,1.3.1,3
+85,1.3.1,3
+106,2.1.3,2
+68,1.3.1.3,2
+73,2.1.3,2
+74,2.1.3,2
+75,1.3.3,2
+85,2.1.1,2
+80,1.3.4,2
+93,1.3.1,2
+94,1.1,2
+108,2.1.3,2
+99,1.3.1,2
+53,1.4.5.6,1
+57,1.3.3.3,1
+57,2.3.1,1
+58,1.3.4.3,1
+98,2,1
+97,2.1.3,1
+97,1.3.3,1
+77,1.3.4,1
+79,2.1.3.2,1
+79,2.1.3.7,1
+79,2.1.4.1,1
+50,1.3.1.5,1
+80,2.1.1,1
+81,1.3.4,1
+84,2.3,1
+53,1.4.3.4,1
+45,2.1.4.1.1,1
+49,1.3.1.4,1
+45,1.3.4.2,1
+115,1.1.3,1
+117,2.1.1.4,1
+119,1.3.1.1,1
+124,2.3,1
+126,1.1,1
+126,2.1.1.5,1
+13,2.1.3.4,1
+13,2.1.3.7,1
+131,2.1.1.5,1
+135,2.2,1
+14,1.3.3.4,1
+142,1.4.3,1
+148,2.1.3,1
+149,2.1.2.2,1
+159,2.1.2,1
+21,1.3.1.3,1
+22,2.1.3.7,1
+23,2.3.1,1
+25,1.3.1.7,1
+26,2.1.3.4,1
+31,1.3.3.3,1
+36,1.1.1,1
+41,1.4.5,1
+99,1.3.3,1
diff --git a/output_result/risk/count_prod.csv b/output_result/risk/count_prod.csv
new file mode 100644
index 0000000..fc01a58
--- /dev/null
+++ b/output_result/risk/count_prod.csv
@@ -0,0 +1,35 @@
+id_product,count
+2.1.3,14
+1.3.1,10
+1.3.4,4
+1.3.3,4
+1.1,3
+2.1.3.7,3
+1.3.1.3,3
+2.1.1,3
+2.3,2
+2.1.3.4,2
+2.1.1.5,2
+2.3.1,2
+1.3.3.3,2
+1.3.3.4,1
+2.1.2.2,1
+1.1.3,1
+2.2,1
+2.1.4.1.1,1
+2.1.4.1,1
+1.3.1.1,1
+1.3.1.4,1
+2.1.3.2,1
+1.3.1.5,1
+2.1.2,1
+1.3.4.2,1
+1.3.1.7,1
+2.1.1.4,1
+2,1
+1.4.5.6,1
+1.1.1,1
+1.4.3.4,1
+1.4.3,1
+1.3.4.3,1
+1.4.5,1
diff --git a/output_result/risk/count_prod_network.png b/output_result/risk/count_prod_network.png
new file mode 100644
index 0000000..c999c43
Binary files /dev/null and b/output_result/risk/count_prod_network.png differ
diff --git a/output_result/risk/g_bom_exp_id_1.png b/output_result/risk/g_bom_exp_id_1.png
new file mode 100644
index 0000000..a7131b7
Binary files /dev/null and b/output_result/risk/g_bom_exp_id_1.png differ
diff --git a/output_result/risk/g_firm_sample_id_1_de.png b/output_result/risk/g_firm_sample_id_1_de.png
new file mode 100644
index 0000000..f009a4d
Binary files /dev/null and b/output_result/risk/g_firm_sample_id_1_de.png differ
diff --git a/risk_analysis_count.py b/risk_analysis_count.py
new file mode 100644
index 0000000..7dbe11e
--- /dev/null
+++ b/risk_analysis_count.py
@@ -0,0 +1,8 @@
+import pandas as pd
+
+count = pd.read_csv("output_result/risk/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())
diff --git a/risk_analysis_firm_network.py b/risk_analysis_firm_network.py
new file mode 100644
index 0000000..3e9abbd
--- /dev/null
+++ b/risk_analysis_firm_network.py
@@ -0,0 +1,99 @@
+import pandas as pd
+import matplotlib.pyplot as plt
+import networkx as nx
+
+plt.rcParams['font.sans-serif'] = 'SimHei'
+
+# count firm category
+count_firm = pd.read_csv("output_result/risk/count_firm.csv")
+print(count_firm.describe())
+
+count_dcp = pd.read_csv("output_result/risk/count_dcp.csv",
+ dtype={
+ 'up_id_firm': str,
+ 'down_id_firm': str
+ })
+# print(count_dcp)
+count_dcp = count_dcp[count_dcp['count'] > 35]
+
+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("input_data/input_firm_data/Firm_amended.csv")
+Firm['Code'] = Firm['Code'].astype('string')
+Firm.fillna(0, inplace=True)
+Firm_attr = Firm.loc[:, ["Code", "Type_Region", "Revenue_Log"]]
+firm_industry_relation = pd.read_csv("input_data/firm_industry_relation.csv")
+firm_industry_relation['Firm_Code'] = firm_industry_relation['Firm_Code'].astype('string')
+firm_product = []
+grouped = firm_industry_relation.groupby('Firm_Code')['Product_Code'].apply(list)
+firm_product.append(grouped)
+Firm_attr['Product_Code'] = Firm_attr['Code'].map(grouped)
+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'],
+ 'down_id_product': row['down_id_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, 'Revenue_Log')
+# desensitize
+node_label = {
+ key: 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=8,
+ 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.95, 0.05, 0.01, 0.3])
+cb = plt.colorbar(sm, fraction=0.01, cax=position)
+cb.ax.tick_params(labelsize=10)
+cb.outline.set_visible(False)
+plt.savefig("output_result\\risk\\count_dcp_network")
+plt.close()
diff --git a/risk_analysis_prod_network.py b/risk_analysis_prod_network.py
new file mode 100644
index 0000000..073c5a0
--- /dev/null
+++ b/risk_analysis_prod_network.py
@@ -0,0 +1,155 @@
+import pandas as pd
+import matplotlib.pyplot as plt
+import networkx as nx
+
+plt.rcParams['font.sans-serif'] = 'SimHei'
+
+count_prod = pd.read_csv("output_result/risk/count_prod.csv")
+print(count_prod)
+
+# category
+print(count_prod.describe())
+
+# prod_networkx
+BomNodes = pd.read_csv('input_data/input_product_data/BomNodes.csv', index_col=0)
+BomNodes.set_index('Code', inplace=True)
+BomCateNet = pd.read_csv('input_data/input_product_data/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'] = 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])
+cb = plt.colorbar(sm, fraction=0.01, cax=position)
+cb.ax.tick_params(labelsize=8)
+cb.outline.set_visible(False)
+plt.savefig("output_result\\risk\\count_prod_network")
+plt.close()
+
+# dcp_prod
+count_dcp = pd.read_csv("output_result/risk/count_dcp.csv",
+ dtype={
+ 'up_id_firm': str,
+ 'down_id_firm': str
+ })
+count_dcp_prod = count_dcp.groupby(
+ ['up_id_product',
+ 'down_id_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('output_result\\risk\\count_dcp_prod.csv',
+ index=False,
+ encoding='utf-8-sig')
+count_dcp_prod = count_dcp_prod[count_dcp_prod['count'] > 50]
+# 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('input_data/input_product_data/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')
+# rename node 1
+# node_labels['1'] = '解决方案'
+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
+
+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=5,
+ 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.75, 0.1, 0.01, 0.2])
+cb = plt.colorbar(sm, fraction=0.01, cax=position)
+cb.ax.tick_params(labelsize=8)
+cb.outline.set_visible(False)
+plt.savefig("output_result\\risk\\count_dcp_prod_network")
+plt.close()
diff --git a/risk_analysis_sum_result.py b/risk_analysis_sum_result.py
new file mode 100644
index 0000000..c290b4d
--- /dev/null
+++ b/risk_analysis_sum_result.py
@@ -0,0 +1,139 @@
+from sqlalchemy import text
+from orm import engine, connection
+import pandas as pd
+import networkx as nx
+import json
+import matplotlib.pyplot as plt
+
+# prep data
+Firm = pd.read_csv("input_data/input_firm_data/Firm_amended.csv")
+Firm['Code'] = Firm['Code'].astype('string')
+Firm.fillna(0, inplace=True)
+BomNodes = pd.read_csv('input_data/input_product_data/BomNodes.csv', index_col=0)
+
+with open('SQL_analysis_risk.sql', 'r') as f:
+ str_sql = text(f.read())
+
+result = pd.read_sql(sql=str_sql,
+ con=connection)
+result.to_csv('output_result\\risk\\count.csv',
+ index=False,
+ encoding='utf-8-sig')
+print(result)
+
+# G bom
+plt.rcParams['font.sans-serif'] = 'SimHei'
+
+exp_id = 1
+G_bom_str = pd.read_sql(
+ sql=text(f'select g_bom from iiabmdb.without_exp_experiment '
+ f'where id = {exp_id};'),
+ con=connection)['g_bom'].tolist()[0]
+G_bom = nx.adjacency_graph(json.loads(G_bom_str))
+pos = nx.nx_agraph.graphviz_layout(G_bom, prog="twopi", args="")
+node_labels = nx.get_node_attributes(G_bom, 'Name')
+# rename node 1
+# node_labels['1'] = '工业互联网'
+# node_labels['1.1'] = '工业自动化硬件'
+# node_labels['1.4'] = '工业互联网安全管理'
+# node_labels['1.2.1'] = '网络互联服务'
+# node_labels['1.2.2'] = '标识解析服务'
+# node_labels['1.2.3'] = '数据互通服务'
+# node_labels['1.3.1'] = '设计研发软件'
+# node_labels['1.3.2'] = '采购供应软件'
+# node_labels['1.3.3'] = '生产制造软件'
+# node_labels['1.3.4'] = '企业运营软件'
+# node_labels['1.3.5'] = '仓储物流软件'
+plt.figure(figsize=(12, 12), dpi=300)
+nx.draw_networkx_nodes(G_bom, pos)
+nx.draw_networkx_edges(G_bom, pos)
+nx.draw_networkx_labels(G_bom, pos, labels=node_labels, font_size=6)
+# plt.show()
+plt.savefig(f"output_result\\risk\\g_bom_exp_id_{exp_id}.png")
+plt.close()
+
+# G firm
+plt.rcParams['font.sans-serif'] = 'SimHei'
+
+sample_id = 1
+
+G_firm_str = pd.read_sql(
+ sql=text(f'select g_firm from iiabmdb.without_exp_sample '
+ f'where id = {exp_id};'),
+ con=connection)['g_firm'].tolist()[0]
+
+G_firm = nx.adjacency_graph(json.loads(G_firm_str))
+pos = nx.nx_agraph.graphviz_layout(G_firm, prog="twopi", args="")
+# desensitize
+node_label = nx.get_node_attributes(G_firm, 'Revenue_Log')
+node_label = {
+ key: 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, "Product")
+edge_label = {(n1, n2): label for (n1, n2, _), label in edge_label.items()}
+plt.figure(figsize=(12, 12), dpi=300)
+nx.draw(G_firm, pos, node_size=node_size, labels=node_label, font_size=6)
+nx.draw_networkx_edge_labels(G_firm, pos, edge_label, font_size=4)
+# plt.show()
+plt.savefig(f"output_result\\risk\\g_firm_sample_id_{exp_id}_de.png")
+plt.close()
+
+# count firm product
+count_firm_prod = result.value_counts(subset=['id_firm', 'id_product'])
+count_firm_prod.name = 'count'
+count_firm_prod = count_firm_prod.to_frame().reset_index()
+count_firm_prod.to_csv('output_result\\risk\\count_firm_prod.csv',
+ index=False,
+ encoding='utf-8-sig')
+print(count_firm_prod)
+
+# count firm
+count_firm = count_firm_prod.groupby('id_firm')['count'].sum()
+count_firm = count_firm.to_frame().reset_index()
+count_firm.sort_values('count', inplace=True, ascending=False)
+count_firm.to_csv('output_result\\risk\\count_firm.csv',
+ index=False,
+ encoding='utf-8-sig')
+print(count_firm)
+
+# count product
+count_prod = count_firm_prod.groupby('id_product')['count'].sum()
+count_prod = count_prod.to_frame().reset_index()
+count_prod.sort_values('count', inplace=True, ascending=False)
+count_prod.to_csv('output_result\\risk\\count_prod.csv',
+ index=False,
+ encoding='utf-8-sig')
+print(count_prod)
+
+# DCP disruption causing probability
+result_disrupt_ts_above_0 = result[result['ts'] > 0]
+print(result_disrupt_ts_above_0)
+result_dcp = pd.DataFrame(columns=[
+ 's_id', 'up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'
+])
+for sid, group in result.groupby('s_id'):
+ ts_start = max(group['ts'])
+ while ts_start >= 1:
+ ts_end = ts_start - 1
+ while ts_end >= 0:
+ up = group.loc[group['ts'] == ts_end, ['id_firm', 'id_product']]
+ down = group.loc[group['ts'] == ts_start,
+ ['id_firm', 'id_product']]
+ for _, up_row in up.iterrows():
+ for _, down_row in down.iterrows():
+ row = [sid]
+ row += up_row.tolist()
+ row += down_row.tolist()
+ result_dcp.loc[len(result_dcp.index)] = row
+ ts_end -= 1
+ ts_start -= 1
+count_dcp = result_dcp.value_counts(
+ subset=['up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'])
+count_dcp.name = 'count'
+count_dcp = count_dcp.to_frame().reset_index()
+count_dcp.to_csv('output_result\\risk\\count_dcp.csv',
+ index=False, encoding='utf-8-sig')
+print(count_dcp)
diff --git a/可视化测试.py b/可视化测试.py
new file mode 100644
index 0000000..3da6971
--- /dev/null
+++ b/可视化测试.py
@@ -0,0 +1,60 @@
+import matplotlib.pyplot as plt
+from mpl_toolkits.mplot3d import Axes3D
+import numpy as np
+from matplotlib import rcParams
+
+# 设置中文字体和符号显示
+rcParams['font.sans-serif'] = ['SimHei'] # 或者使用 ['Microsoft YaHei']
+rcParams['axes.unicode_minus'] = False # 用来正常显示负号
+# 定义节点和边
+nodes = {
+ 0: '原材料供应商',
+ 1: '零部件制造商',
+ 2: '产品制造商',
+ 3: '分销商',
+ 4: '零售商'
+}
+
+edges = [
+ (0, 1), # 原材料供应商 -> 零部件制造商
+ (1, 2), # 零部件制造商 -> 产品制造商
+ (2, 3), # 产品制造商 -> 分销商
+ (3, 4) # 分销商 -> 零售商
+]
+
+# 定义节点的三维坐标 (x, y, z)
+positions = {
+ 0: (0, 0, 0), # 原材料供应商
+ 1: (1, 0, 1), # 零部件制造商
+ 2: (2, 0, 2), # 产品制造商
+ 3: (3, 0, 3), # 分销商
+ 4: (4, 0, 4) # 零售商
+}
+
+# 创建3D图形
+fig = plt.figure()
+ax = fig.add_subplot(111, projection='3d')
+
+# 绘制节点
+for node, (x, y, z) in positions.items():
+ ax.scatter(x, y, z, color='b', s=100) # 绘制每个节点
+ ax.text(x, y, z, nodes[node], size=12, zorder=1, color='k') # 添加节点标签
+
+# 绘制边(箭头)
+for start, end in edges:
+ start_pos = positions[start]
+ end_pos = positions[end]
+ ax.plot([start_pos[0], end_pos[0]],
+ [start_pos[1], end_pos[1]],
+ [start_pos[2], end_pos[2]], color='r') # 连接每对节点
+
+# 设置坐标轴标签
+ax.set_xlabel('X轴')
+ax.set_ylabel('Y轴')
+ax.set_zlabel('Z轴')
+
+# 设置视角以便更好地观察3D图形
+ax.view_init(elev=20., azim=-35) # 角度可根据需要调整
+
+# 显示3D图形
+plt.show()
diff --git a/测试数据 产业 数据.py b/测试数据 产业 数据.py
deleted file mode 100644
index 485edba..0000000
--- a/测试数据 产业 数据.py
+++ /dev/null
@@ -1,54 +0,0 @@
-import pandas as pd
-import numpy as np
-
-# 设置随机种子
-np.random.seed(42)
-
-num_companies = 170 # 企业ID范围
-
-# 生成企业和设备数据
-num_rows = 220 # 每个表的行数
-
-company_ids = np.arange(num_companies)
-
-# 第二步:生成剩余的随机企业ID
-remaining_ids = np.random.randint(0, num_companies, size=num_rows - num_companies)
-
-# 合并两部分的企业ID
-all_company_ids = np.concatenate([company_ids, remaining_ids])
-
-# 第三步:对企业ID进行升序排序
-all_company_ids.sort()
-
-device_ids = np.random.randint(51, 107, size=num_rows)
-material_ids = np.random.randint(0, 51, size=num_rows)
-product_ids = np.random.randint(0, 107, size=num_rows)
-
-device_quantities = np.random.randint(50, 200, size=num_rows)
-material_quantities = np.random.randint(100,200, size=num_rows)
-product_quantities = np.random.randint(20, 100, size=num_rows)
-
-# 创建三个表格的数据框
-df_devices = pd.DataFrame({
- 'Firm_Code': all_company_ids,
- '设备id': device_ids,
- '设备数量': device_quantities
-})
-
-df_materials = pd.DataFrame({
- 'Firm_Code': all_company_ids,
- '材料id': material_ids,
- '材料数量': material_quantities
-})
-
-df_products = pd.DataFrame({
- 'Firm_Code': all_company_ids,
- '产品id': product_ids,
- '产品数量': product_quantities
-})
-
-# 保存为CSV文件
-df_devices.to_csv('测试数据 companies_devices.csv', index=False)
-df_materials.to_csv('测试数据 companies_materials.csv', index=False)
-df_products.to_csv('测试数据 companies_products.csv', index=False)
-
diff --git a/测试数据 产业-原材料消耗-产品生产量.py b/测试数据 产业-原材料消耗-产品生产量.py
deleted file mode 100644
index 5b0b8e1..0000000
--- a/测试数据 产业-原材料消耗-产品生产量.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import pandas as pd
-import numpy as np
-
-# 设置随机种子,确保结果可重复
-np.random.seed(42)
-
-# 定义产业数量
-num_industries = 107
-
-# 创建产业ID列表
-industry_ids = [i for i in range(0, num_industries + 1)]
-
-# 为每个产业生成随机的材料id、消耗量、产品id和制造量
-consumed_materials_data = []
-produced_products_data = []
-
-for industry in industry_ids:
- # 每个产业消耗的材料(生成1到3个随机材料ID和消耗量)
- num_materials = np.random.randint(1, 4)
- for _ in range(num_materials):
- material_id = np.random.randint(0, 100)
- consumption_quantity = np.random.randint(50, 500)
- consumed_materials_data.append([industry, material_id, consumption_quantity])
-
- # 每个产业制造的产品(生成1到3个随机产品ID和制造量)
- num_products = np.random.randint(1, 4)
- for _ in range(num_products):
- product_id = np.random.randint(100, 201)
- production_quantity = np.random.randint(100, 1000)
- produced_products_data.append([industry, product_id, production_quantity])
-
-# 创建两个数据框
-df_consumed_materials = pd.DataFrame(consumed_materials_data, columns=['产业id', '消耗材料id', '消耗量'])
-df_produced_products = pd.DataFrame(produced_products_data, columns=['产业id', '制造产品id', '制造量'])
-
-# 保存两个数据框为CSV文件
-file_path_consumed = '测试数据 consumed_materials.csv'
-file_path_produced = '测试数据 produced_products.csv'
-
-df_consumed_materials.to_csv(file_path_consumed, index=False)
-df_produced_products.to_csv(file_path_produced, index=False)
-
diff --git a/测试数据 BomNodes.csv.py b/测试数据 BomNodes.csv.py
deleted file mode 100644
index 89dee30..0000000
--- a/测试数据 BomNodes.csv.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import pandas as pd
-import random
-import numpy as np
-
-# 生成170条测试数据的函数
-data = pd.read_csv('input_data/BomNodes.csv')
-# 生成数据
-df = pd.DataFrame(data)
-df['产业种类'] = [random.choice([0, 1]) for _ in range(107)]
-
-# 显示前几行
-
-# 保存数据到CSV文件
-df.to_csv('input_data/测试 BomNodes.csv', index=False)
diff --git a/测试数据 Firm_amended.csv.py b/测试数据 Firm_amended.csv.py
deleted file mode 100644
index ca85e3f..0000000
--- a/测试数据 Firm_amended.csv.py
+++ /dev/null
@@ -1,34 +0,0 @@
-import pandas as pd
-import random
-import numpy as np
-
-
-# 生成170条测试数据的函数
-def generate_test_data(num_rows=170):
- data = {
- 'Code': [i for i in range(0, num_rows)], # 生成0到170的公司ID
- '原材料': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 原材料
- '库存商品': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 库存商品
- '设备数量': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 固定资产原值
- 'Revenue': [round(random.uniform(10000, 100000), 2) for _ in range(num_rows)], # Revenue
- 'Total Employees (People)': [random.randint(50, 1000) for _ in range(num_rows)], # 员工总数
- 'Type_Region': [random.choice(['Urban', 'Rural', 'Suburban']) for _ in range(num_rows)], # 区域类型
- 'Self-supply Business (Yes/No)': [random.choice(['Yes', 'No']) for _ in range(num_rows)] # 自营业务
- }
-
- df = pd.DataFrame(data)
-
- # 添加Revenue_Log列
- df['Revenue_Log'] = np.log(df['Revenue'])
- df['production_output'] = df['设备数量'] / 10+np.random.randint(100, 500, size=len(df))
- df['demand_quantity'] = df['原材料'] / 10 +np.random.randint(100, 500, size=len(df))
- return df
-
-
-# 生成数据
-df_test_data = generate_test_data()
-# 显示前几行
-print(df_test_data.head())
-
-# 保存数据到CSV文件
-df_test_data.to_csv('input_data/测试 Firm_amended 170.csv', index=False)
diff --git a/测试数据 产品通编码.py b/测试数据 产品通编码.py
deleted file mode 100644
index 16f4b89..0000000
--- a/测试数据 产品通编码.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import pandas as pd
-import numpy as np
-
-# 设置数据行数
-total_rows = 106 # 总共100行
-material_count = 50 # 前61行为材料
-
-# 生成产品id
-product_ids = np.arange(1, total_rows + 1)
-
-# 生成种类,前70行是材料,后面是设备
-categories = ['材料'] * material_count + ['设备'] * (total_rows - material_count)
-
-# 创建数据框
-df_products = pd.DataFrame({
- '产品id': product_ids,
- '种类': categories
-})
-
-# 保存为CSV文件
-file_path_products = '测试数据 products_materials_equipment.csv'
-df_products.to_csv(file_path_products, index=False) # index=False 不保存行索引
-
-# 打印文件路径
-print(f"CSV 文件已生成,路径为: {file_path_products}")
diff --git a/测试数据 材料设备产品.py b/测试数据 材料设备产品.py
deleted file mode 100644
index 93a20ca..0000000
--- a/测试数据 材料设备产品.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import pandas as pd
-import numpy as np
-
-# 设置随机种子,以便结果可重复
-np.random.seed(42)
-
-# 定义生成数据的行数
-num_rows = 170 # 生成 100 行数据
-
-# 创建空列表来存储生成的ID
-material_ids = []
-device_ids = []
-product_ids = []
-
-# 生成材料、设备、产品的ID,确保同一行内的ID不重复
-for _ in range(num_rows):
- mat_id = np.random.randint(1, 51) # 材料ID范围 0-99
- dev_id = np.random.randint(51, 107) # 设备ID范围 100-199
-
- # 确保产品ID在当前行与材料ID和设备ID不重复
- while True:
- prod_id = np.random.randint(0, 107)
- if prod_id != mat_id and prod_id != dev_id:
- break
-
- material_ids.append(mat_id)
- device_ids.append(dev_id)
- product_ids.append(prod_id)
-
-# 创建数据框,将三个ID列结合起来
-df_ids = pd.DataFrame({
- '材料id': material_ids,
- '设备id': device_ids,
- '产品id': product_ids
-})
-
-# 指定文件路径并保存为CSV文件
-file_path_ids = '测试数据 material_device_product_ids.csv'
-df_ids.to_csv(file_path_ids, index=False) # index=False 表示不保存行索引
-
-# 打印文件路径
-print(f"CSV 文件已生成,路径为: {file_path_ids}")
diff --git a/测试数据 设备id和设备残值.py b/测试数据 设备id和设备残值.py
deleted file mode 100644
index 146515a..0000000
--- a/测试数据 设备id和设备残值.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import pandas as pd
-import numpy as np
-
-# 设置随机种子以确保结果可重复
-np.random.seed(42)
-
-# 定义行数,即生成多少个设备
-num_rows = 56
-
-# 生成设备id(例如100到200之间的设备ID)
-device_ids = (i for i in range(51, 107))
-
-# 生成设备残值,假设范围在1000到10000之间
-device_salvage_values = np.random.randint(10, 1000, size=num_rows)
-
-# 创建数据框,将设备id和设备残值结合起来
-df_devices = pd.DataFrame({
- '设备id': device_ids,
- '设备残值': device_salvage_values
-})
-
-# 保存为CSV文件
-file_path_devices = '测试数据 device_salvage_values.csv'
-df_devices.to_csv(file_path_devices, index=False)
diff --git a/测试数据_firm_industry_relation.csv.py b/测试数据_firm_industry_relation.csv.py
deleted file mode 100644
index fd989f7..0000000
--- a/测试数据_firm_industry_relation.csv.py
+++ /dev/null
@@ -1,17 +0,0 @@
-import pandas as pd
-
-Firm_Prod = pd.read_csv("input_data/Firm_amended.csv")
-Firm_Prod.fillna(0, inplace=True)
-
-# Stack the firm-product relationships into a DataFrame
-firm_prod = pd.DataFrame({'bool': Firm_Prod.loc[:, '1':].stack()})
-firm_prod = firm_prod[firm_prod['bool'] == 1].reset_index()
-firm_prod.drop('bool', axis=1, inplace=True)
-firm_prod.rename({'level_0': 'Firm_Code', 'level_1': 'Product_Code'}, axis=1, inplace=True)
-firm_prod['Firm_Code'] = firm_prod['Firm_Code'].astype('string')
-
-# 保存为新的 CSV 文件
-output_file_path = 'input_data/firm_industry_relation.csv'
-firm_prod.to_csv(output_file_path, index=False)
-
-print(f"新的 CSV 文件已保存到: {output_file_path}")