-
Notifications
You must be signed in to change notification settings - Fork 0
/
industry.py
232 lines (180 loc) · 10.5 KB
/
industry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
import os
import time
import numpy as np
import pandas as pd
import datetime
from utils import *
industries = [
'工业企业',
'采矿业', '煤炭开采和洗选业', '石油和天然气开采业', '黑色金属矿采选业', '有色金属矿采选业',
'黑色金属冶炼和压延加工业', '有色金属冶炼和压延加工业',
'非金属矿采选业', '开采专业及辅助性活动', '其他采矿业',
'制造业', '农副食品加工业', '食品制造业', '酒、饮料和精制茶制造业', '烟草制品业',
'纺织业', '纺织服装、服饰业', '皮革、毛皮、羽毛及其制品和制鞋业', '木材加工和木、竹、藤、棕、草制品业',
'家具制造业', '造纸和纸制品业', '印刷和记录媒介复制业', '文教、工美、体育和娱乐用品制造业',
'石油、煤炭及其他燃料加工业', '化学原料和化学制品制造业', '医药制造业', '化学纤维制造业',
'橡胶和塑料制品业', '非金属矿物制品业', '金属制品业',
'通用设备制造业', '专用设备制造业', '汽车制造业', '铁路、船舶、航空航天和其他运输设备制造业',
'电气机械和器材制造业', '计算机、通信和其他电子设备制造业', '仪器仪表制造业', '其他制造业',
'废弃资源综合利用业', '金属制品、机械和设备修理业',
'电力、热力、燃气及水生产和供应业', '电力、热力生产和供应业', '燃气生产和供应业', '水的生产和供应业',
]
# 2003-2011
['饮料制造业', '纺织服装、鞋、帽制造业', '皮革、毛皮、羽毛(绒)及其制品业', '木材加工及木、竹、藤、棕、草制品业',
'造纸及纸制品业', '印刷业和记录媒介的复制', '文教体育用品制造业', '石油加工、炼焦及核燃料加工业',
'化学原料及化学制品制造业', '橡胶制品业',
'黑色金属冶炼及压延加工业', '有色金属冶炼及压延加工业', '交通运输设备制造业增加值',
'电气机械及器材制造业', '通信设备、计算机及其他电子设备制造业', '仪器仪表及文化、办公用机械制造业',
'工艺品及其他制造业', '废弃资源和废旧材料回收加工业', '电力、热力的生产和供应业']
# 2012-2017
replace = {
'开采辅助活动': '开采专业及辅助性活动',
'木材加工及木、竹、藤、棕、草制品业': '木材加工和木、竹、藤、棕、草制品业',
'造纸及纸制品业': '造纸和纸制品业',
'石油加工、炼焦及核燃料加工业': '石油、煤炭及其他燃料加工业',
'化学原料及化学制品制造业': '化学原料和化学制品制造业',
'黑色金属冶炼及压延加工业': '黑色金属冶炼和压延加工业',
'有色金属冶炼及压延加工业': '有色金属冶炼和压延加工业',
'电气机械及器材制造业': '电气机械和器材制造业',
'通信设备、计算机及其他电子设备制造业': '计算机、通信和其他电子设备制造业',
'电力、热力的生产和供应业': '电力、热力生产和供应业',
}
['开采辅助活动', '木材加工及木、竹、藤、棕、草制品业', '造纸及纸制品业', '石油加工、炼焦及核燃料加工业',
'化学原料及化学制品制造业', '黑色金属冶炼及压延加工业', '有色金属冶炼及压延加工业',
'电气机械及器材制造业', '通信设备、计算机及其他电子设备制造业',
'电力、热力的生产和供应业']
# 工业增加值
def test1():
path = os.path.join(nbs_dir, '工业增加值'+'.csv')
df = pd.read_csv(path)
t = pd.DatetimeIndex(pd.to_datetime(df['time'], format='%Y-%m'))
data1 = np.array(df['工业增加值_同比增长'], dtype=float)
data2 = np.array(df['私营企业增加值_同比增长'], dtype=float)
data3 = np.array(df['国有及国有控股企业增加值_同比增长'], dtype=float)
data4 = np.array(df['外商及港澳台投资企业增加值_累计增长'], dtype=float)
data5 = np.array(df['股份制企业增加值_同比增长'], dtype=float)
datas = [[[[t, data1, '工业增加值_同比增长', ''],
[t, data2, '私营企业增加值_同比增长', ''],
[t, data3, '国有及国有控股企业增加值_同比增长', ''],
[t, data4, '外商及港澳台投资企业增加值_累计增长', ''],
[t, data5, '股份制企业增加值_同比增长', '']],
[],'']]
plot_many_figure(datas)
pass
# 1-2月累计同比, 没有1,2月的同比
def compute_base1(t, yoy, cum_yoy, base_time):
base_time_dt = pd.to_datetime(base_time)
w0 = np.where(t == base_time_dt)[0][0]
w1 = w0+1
base_time_dt_1y = datetime.datetime(year=base_time_dt.year+1, month=base_time_dt.month, day=base_time_dt.day)
w2 = np.where(t == base_time_dt_1y)[0][0]
w3 = w2+1
base_t = t[w0:]
base = np.zeros((len(base_t)), dtype=float)
base[0] = 100
cum = base[0]
for i in range(1, w2-w0):
a = cum_yoy[w2+i-1]
c1 = yoy[w3+i-1]
c2 = cum_yoy[w3+i-1]
base[i] = cum*(c2-a)/(c1-c2)
cum += base[i]
print(base[i])
for i in range(w2-w0, len(base)):
if (base_t[i].month == 2):
base[i] = base[i-(w2-w0)]*(1 + cum_yoy[i]/100)
else:
base[i] = base[i-(w2-w0)]*(1 + yoy[i]/100)
return base_t, base
# 按行业分工业企业 利润
def plot_all_corporate_profit():
path = os.path.join(nbs_dir, '按行业分工业企业主要经济指标'+'.csv')
df = pd.read_csv(path)
t = pd.DatetimeIndex(pd.to_datetime(df['time'], format='%Y-%m'))
names = ['工业企业利润总额_累计值',
'采矿业利润总额_累计值',
'煤炭开采和洗选业利润总额_累计值',
'石油和天然气开采业利润总额_累计值',
'黑色金属矿采选业利润总额_累计值',
'有色金属矿采选业利润总额_累计值',
'非金属矿采选业利润总额_累计值',
'开采专业及辅助性活动利润总额_累计值',
'其他采矿业利润总额_累计值',
'制造业利润总额_累计值',
'农副食品加工业利润总额_累计值',
'食品制造业利润总额_累计值',
'酒、饮料和精制茶制造业利润总额_累计值',
'烟草制品业利润总额_累计值',
'纺织业利润总额_累计值',
'纺织服装、服饰业利润总额_累计值',
'皮革、毛皮、羽毛及其制品和制鞋业利润总额_累计值',
'木材加工和木、竹、藤、棕、草制品业利润总额_累计值',
'家具制造业利润总额_累计值',
'造纸和纸制品业利润总额_累计值',
'印刷和记录媒介复制业利润总额_累计值',
'文教、工美、体育和娱乐用品制造业利润总额_累计值',
'石油、煤炭及其他燃料加工业利润总额_累计值',
'化学原料和化学制品制造业利润总额_累计值',
'医药制造业利润总额_累计值',
'化学纤维制造业利润总额_累计值',
'橡胶和塑料制品业利润总额_累计值',
'非金属矿物制品业利润总额_累计值',
'黑色金属冶炼和压延加工业利润总额_累计值',
'有色金属冶炼和压延加工业利润总额_累计值',
'金属制品业利润总额_累计值',
'通用设备制造业利润总额_累计值',
'专用设备制造业利润总额_累计值',
'汽车制造业利润总额_累计值',
'铁路、船舶、航空航天和其他运输设备制造业利润总额_累计值',
'电气机械和器材制造业利润总额_累计值',
'计算机、通信和其他电子设备制造业利润总额_累计值',
'仪器仪表制造业利润总额_累计值',
'其他制造业利润总额_累计值',
'废弃资源综合利用业利润总额_累计值',
'金属制品、机械和设备修理业利润总额_累计值',
'电力、热力、燃气及水生产和供应业利润总额_累计值',
'电力、热力生产和供应业利润总额_累计值',
'燃气生产和供应业利润总额_累计值',
'水的生产和供应业利润总额_累计值',
]
for name in names:
data = np.array(df[name], dtype=float)
plot_seasonality(t, data, start_year=2012, title=name)
# 利润总额 亏损总额
def plot_total_profit_loss():
path = os.path.join(nbs_dir, '工业企业主要经济指标'+'.csv')
df = pd.read_csv(path)
t = pd.DatetimeIndex(pd.to_datetime(df['time'], format='%Y-%m'))
names = [
'利润总额_累计值',
'国有工业企业利润总额_累计值',
'国有控股工业企业利润总额_累计值',
'大中型工业企业利润总额_累计值',
'私营工业企业利润总额_累计值',
'集体工业企业利润总额_累计值',
'股份合作工业企业利润总额_累计值',
'外商及港澳台投资工业企业利润总额_累计值',
'其它工业企业利润总额_累计值',
'亏损企业亏损总额_累计值',
'国有工业企业亏损企业亏损总额_累计值',
'国有控股工业企业亏损企业亏损总额_累计值',
'大中型工业企业亏损企业亏损总额_累计值',
'私营工业企业亏损企业亏损总额_累计值',
'集体工业企业亏损企业亏损总额_累计值',
'股份合作工业企业亏损企业亏损总额_累计值',
'外商及港澳台投资工业企业亏损企业亏损总额_累计值',
'其它工业企业亏损企业亏损总额_累计值',
'亏损企业_本月末',
]
data = {}
for name in names:
data[name] = np.array(df[name], dtype=float)
plot_seasonality(t, data[name], start_year=2012, title=name)
if __name__=="__main__":
# test1()
# 工业增加值 定基
# test2()
# 按行业分工业企业 利润
# plot_all_corporate_profit()
plot_total_profit_loss()
pass