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}")