akshare 1.13.46__py3-none-any.whl → 1.17.99__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. akshare/__init__.py +757 -161
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +3 -7
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/air/sunrise_tad.py +32 -17
  8. akshare/article/cons.py +1 -0
  9. akshare/article/epu_index.py +4 -3
  10. akshare/article/ff_factor.py +19 -8
  11. akshare/article/fred_md.py +4 -1
  12. akshare/article/risk_rv.py +3 -8
  13. akshare/bank/bank_cbirc_2020.py +11 -11
  14. akshare/bank/cons.py +7 -6
  15. akshare/bond/bond_buy_back_em.py +228 -0
  16. akshare/bond/bond_cb_sina.py +1 -0
  17. akshare/bond/bond_cb_ths.py +17 -9
  18. akshare/bond/bond_cbond.py +19 -14
  19. akshare/bond/bond_china.py +38 -39
  20. akshare/bond/bond_china_money.py +75 -48
  21. akshare/bond/bond_convert.py +10 -9
  22. akshare/bond/bond_em.py +37 -17
  23. akshare/bond/bond_info_cm.py +28 -8
  24. akshare/bond/bond_issue_cninfo.py +73 -30
  25. akshare/bond/bond_summary.py +38 -37
  26. akshare/bond/bond_zh_cov.py +31 -40
  27. akshare/bond/bond_zh_sina.py +61 -51
  28. akshare/bond/cons.py +14 -11
  29. akshare/cal/__init__.py +0 -0
  30. akshare/cal/rv.py +170 -0
  31. akshare/cost/cost_living.py +7 -5
  32. akshare/crypto/__init__.py +1 -1
  33. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  34. akshare/crypto/crypto_hold.py +4 -2
  35. akshare/currency/currency.py +1 -0
  36. akshare/currency/currency_china_bank_sina.py +11 -6
  37. akshare/currency/currency_safe.py +7 -6
  38. akshare/data/__init__.py +1 -1
  39. akshare/data/cninfo.js +1 -1
  40. akshare/datasets.py +10 -21
  41. akshare/economic/cons.py +10 -3
  42. akshare/economic/macro_australia.py +74 -69
  43. akshare/economic/macro_bank.py +95 -653
  44. akshare/economic/macro_canada.py +92 -81
  45. akshare/economic/macro_china.py +163 -117
  46. akshare/economic/macro_china_hk.py +0 -1
  47. akshare/economic/macro_china_nbs.py +24 -7
  48. akshare/economic/macro_euro.py +103 -56
  49. akshare/economic/macro_finance_ths.py +135 -0
  50. akshare/economic/macro_germany.py +1 -1
  51. akshare/economic/macro_info_ws.py +100 -0
  52. akshare/economic/macro_japan.py +0 -1
  53. akshare/economic/macro_other.py +1 -6
  54. akshare/economic/macro_swiss.py +2 -3
  55. akshare/economic/macro_uk.py +1 -1
  56. akshare/economic/macro_usa.py +7 -9
  57. akshare/economic/marco_cnbs.py +11 -6
  58. akshare/energy/energy_carbon.py +94 -126
  59. akshare/energy/energy_oil_em.py +1 -2
  60. akshare/event/cons.py +1 -0
  61. akshare/event/migration.py +3 -2
  62. akshare/exceptions.py +43 -0
  63. akshare/file_fold/calendar.json +245 -2
  64. akshare/forex/__init__.py +0 -0
  65. akshare/forex/cons.py +192 -0
  66. akshare/forex/forex_em.py +149 -0
  67. akshare/fortune/fortune_500.py +15 -48
  68. akshare/fortune/fortune_bloomberg.py +6 -3
  69. akshare/fortune/fortune_forbes_500.py +3 -6
  70. akshare/fortune/fortune_hurun.py +2 -1
  71. akshare/fortune/fortune_xincaifu_500.py +17 -14
  72. akshare/fund/fund_amac.py +38 -15
  73. akshare/fund/fund_announcement_em.py +145 -0
  74. akshare/fund/fund_aum_em.py +49 -35
  75. akshare/fund/fund_em.py +251 -220
  76. akshare/fund/fund_etf_em.py +44 -35
  77. akshare/fund/fund_etf_sina.py +76 -27
  78. akshare/fund/fund_etf_ths.py +95 -0
  79. akshare/fund/fund_fee_em.py +172 -0
  80. akshare/fund/fund_fhsp_em.py +42 -32
  81. akshare/fund/fund_init_em.py +8 -5
  82. akshare/fund/fund_lof_em.py +12 -19
  83. akshare/fund/fund_manager.py +25 -11
  84. akshare/fund/fund_overview_em.py +42 -0
  85. akshare/fund/fund_portfolio_em.py +78 -66
  86. akshare/fund/fund_position_lg.py +19 -8
  87. akshare/fund/fund_rank_em.py +90 -84
  88. akshare/fund/fund_rating.py +33 -12
  89. akshare/fund/fund_report_cninfo.py +63 -48
  90. akshare/fund/fund_scale_em.py +24 -13
  91. akshare/fund/fund_scale_sina.py +20 -10
  92. akshare/fund/fund_xq.py +3 -2
  93. akshare/futures/cons.py +141 -46
  94. akshare/futures/cot.py +89 -88
  95. akshare/futures/futures_basis.py +99 -33
  96. akshare/futures/futures_comex_em.py +1 -0
  97. akshare/futures/futures_comm_ctp.py +13 -2
  98. akshare/futures/futures_contract_detail.py +59 -9
  99. akshare/futures/futures_daily_bar.py +75 -62
  100. akshare/futures/futures_foreign.py +14 -8
  101. akshare/futures/futures_hf_em.py +215 -61
  102. akshare/futures/futures_hist_em.py +191 -0
  103. akshare/futures/futures_hq_sina.py +79 -61
  104. akshare/futures/futures_index_ccidx.py +24 -82
  105. akshare/futures/futures_inventory_99.py +70 -272
  106. akshare/futures/futures_inventory_em.py +14 -11
  107. akshare/futures/futures_news_shmet.py +2 -2
  108. akshare/futures/futures_roll_yield.py +11 -24
  109. akshare/futures/futures_rule.py +7 -3
  110. akshare/futures/futures_rule_em.py +38 -0
  111. akshare/futures/futures_settlement_price_sgx.py +21 -6
  112. akshare/futures/futures_stock_js.py +1 -2
  113. akshare/futures/futures_to_spot.py +43 -39
  114. akshare/futures/futures_warehouse_receipt.py +53 -48
  115. akshare/futures/futures_zh_sina.py +4 -4
  116. akshare/futures/receipt.py +298 -165
  117. akshare/futures/requests_fun.py +16 -3
  118. akshare/futures/symbol_var.py +32 -13
  119. akshare/futures_derivative/cons.py +100 -103
  120. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  121. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  122. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  123. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  124. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  125. akshare/futures_derivative/futures_contract_info_shfe.py +7 -8
  126. akshare/futures_derivative/futures_cot_sina.py +28 -19
  127. akshare/futures_derivative/futures_index_sina.py +25 -13
  128. akshare/fx/cons.py +12 -7
  129. akshare/fx/currency_investing.py +19 -285
  130. akshare/fx/fx_c_swap_cm.py +62 -0
  131. akshare/fx/fx_quote.py +3 -2
  132. akshare/fx/fx_quote_baidu.py +2 -1
  133. akshare/hf/__init__.py +1 -1
  134. akshare/hf/hf_sp500.py +8 -7
  135. akshare/index/cons.py +132 -28
  136. akshare/index/index_cflp.py +29 -26
  137. akshare/index/index_cni.py +89 -91
  138. akshare/index/index_cons.py +26 -10
  139. akshare/index/index_csindex.py +68 -0
  140. akshare/index/index_cx.py +263 -62
  141. akshare/index/index_drewry.py +17 -16
  142. akshare/index/index_eri.py +1 -0
  143. akshare/index/index_global_em.py +167 -0
  144. akshare/index/index_global_sina.py +82 -0
  145. akshare/index/index_kq_fz.py +17 -14
  146. akshare/index/index_kq_ss.py +1 -0
  147. akshare/index/index_option_qvix.py +351 -16
  148. akshare/index/index_research_sw.py +38 -38
  149. akshare/index/index_spot.py +9 -5
  150. akshare/index/index_stock_hk.py +6 -10
  151. akshare/index/index_stock_us_sina.py +1 -1
  152. akshare/index/index_stock_zh.py +193 -101
  153. akshare/index/index_stock_zh_csindex.py +15 -369
  154. akshare/index/index_sugar.py +18 -4
  155. akshare/index/index_sw.py +62 -34
  156. akshare/index/index_yw.py +53 -75
  157. akshare/index/index_zh_em.py +15 -82
  158. akshare/interest_rate/interbank_rate_em.py +14 -10
  159. akshare/movie/artist_yien.py +32 -5
  160. akshare/movie/jm.js +0 -1
  161. akshare/movie/movie_yien.py +92 -18
  162. akshare/movie/video_yien.py +28 -5
  163. akshare/news/__init__.py +1 -1
  164. akshare/news/news_baidu.py +395 -220
  165. akshare/news/news_cctv.py +38 -38
  166. akshare/news/news_stock.py +49 -13
  167. akshare/nlp/nlp_interface.py +7 -8
  168. akshare/option/cons.py +12 -12
  169. akshare/option/option_comm_qihuo.py +86 -0
  170. akshare/option/option_commodity.py +355 -211
  171. akshare/option/option_commodity_sina.py +22 -26
  172. akshare/option/option_contract_info_ctp.py +63 -0
  173. akshare/option/option_current_sse.py +61 -0
  174. akshare/option/option_current_szse.py +84 -0
  175. akshare/option/option_czce.py +37 -9
  176. akshare/option/option_daily_stats_sse_szse.py +145 -0
  177. akshare/option/option_em.py +4 -8
  178. akshare/option/option_finance.py +60 -12
  179. akshare/option/option_finance_sina.py +28 -26
  180. akshare/option/option_lhb_em.py +62 -57
  181. akshare/option/option_margin.py +62 -0
  182. akshare/option/option_premium_analysis_em.py +58 -53
  183. akshare/option/option_risk_analysis_em.py +11 -8
  184. akshare/option/option_risk_indicator_sse.py +18 -16
  185. akshare/option/option_value_analysis_em.py +62 -55
  186. akshare/other/__init__.py +1 -1
  187. akshare/other/other_car_cpca.py +20 -20
  188. akshare/pro/__init__.py +0 -1
  189. akshare/pro/client.py +6 -4
  190. akshare/pro/cons.py +3 -2
  191. akshare/pro/data_pro.py +6 -5
  192. akshare/qdii/__init__.py +0 -0
  193. akshare/qdii/qdii_jsl.py +233 -0
  194. akshare/qhkc/__init__.py +1 -6
  195. akshare/qhkc/qhkc_api.py +64 -22
  196. akshare/qhkc_web/__init__.py +1 -6
  197. akshare/qhkc_web/qhkc_fund.py +10 -6
  198. akshare/qhkc_web/qhkc_index.py +28 -14
  199. akshare/qhkc_web/qhkc_tool.py +62 -59
  200. akshare/rate/__init__.py +1 -1
  201. akshare/rate/repo_rate.py +36 -32
  202. akshare/reits/__init__.py +1 -1
  203. akshare/reits/reits_basic.py +149 -13
  204. akshare/request.py +117 -0
  205. akshare/spot/__init__.py +1 -1
  206. akshare/spot/spot_hog_soozhu.py +232 -0
  207. akshare/spot/spot_price_qh.py +121 -0
  208. akshare/spot/spot_sge.py +70 -9
  209. akshare/stock/cons.py +60 -23
  210. akshare/stock/stock_allotment_cninfo.py +10 -9
  211. akshare/stock/stock_ask_bid_em.py +3 -78
  212. akshare/stock/stock_board_concept_em.py +160 -35
  213. akshare/stock/stock_board_industry_em.py +163 -70
  214. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  215. akshare/stock/stock_cg_guarantee.py +41 -51
  216. akshare/stock/stock_cg_lawsuit.py +36 -35
  217. akshare/stock/stock_dividend_cninfo.py +36 -16
  218. akshare/stock/stock_dzjy_em.py +347 -260
  219. akshare/stock/stock_fund_em.py +73 -64
  220. akshare/stock/stock_fund_hold.py +1 -2
  221. akshare/stock/stock_gsrl_em.py +1 -0
  222. akshare/stock/stock_hk_comparison_em.py +175 -0
  223. akshare/stock/stock_hk_famous.py +107 -0
  224. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  225. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  226. akshare/stock/stock_hk_sina.py +91 -42
  227. akshare/stock/stock_hold_control_cninfo.py +100 -15
  228. akshare/stock/stock_hold_control_em.py +4 -5
  229. akshare/stock/stock_hold_num_cninfo.py +18 -12
  230. akshare/stock/stock_hot_rank_em.py +4 -1
  231. akshare/stock/stock_hot_search_baidu.py +32 -19
  232. akshare/stock/stock_hot_up_em.py +4 -1
  233. akshare/stock/stock_hsgt_em.py +155 -0
  234. akshare/stock/stock_industry.py +1 -0
  235. akshare/stock/stock_industry_cninfo.py +25 -20
  236. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  237. akshare/stock/stock_industry_sw.py +5 -9
  238. akshare/stock/stock_info.py +31 -19
  239. akshare/stock/stock_info_em.py +17 -11
  240. akshare/stock/stock_intraday_em.py +9 -80
  241. akshare/stock/stock_intraday_sina.py +2 -2
  242. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  243. akshare/stock/stock_new_cninfo.py +32 -19
  244. akshare/stock/stock_news_cx.py +39 -0
  245. akshare/stock/stock_profile_cninfo.py +9 -8
  246. akshare/stock/stock_profile_em.py +302 -0
  247. akshare/stock/stock_rank_forecast.py +8 -6
  248. akshare/stock/stock_repurchase_em.py +7 -2
  249. akshare/stock/stock_share_changes_cninfo.py +18 -14
  250. akshare/stock/stock_share_hold.py +24 -20
  251. akshare/stock/stock_stop.py +6 -6
  252. akshare/stock/stock_summary.py +153 -417
  253. akshare/stock/stock_us_famous.py +19 -11
  254. akshare/stock/stock_us_js.py +3 -2
  255. akshare/stock/stock_us_pink.py +38 -27
  256. akshare/stock/stock_us_sina.py +15 -12
  257. akshare/stock/stock_weibo_nlp.py +18 -20
  258. akshare/stock/stock_xq.py +36 -9
  259. akshare/stock/stock_zh_a_sina.py +58 -80
  260. akshare/stock/stock_zh_a_special.py +240 -243
  261. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  262. akshare/stock/stock_zh_ah_tx.py +23 -26
  263. akshare/stock/stock_zh_b_sina.py +32 -55
  264. akshare/stock/stock_zh_comparison_em.py +250 -0
  265. akshare/stock/stock_zh_kcb_report.py +11 -9
  266. akshare/stock/stock_zh_kcb_sina.py +67 -64
  267. akshare/stock_a/__init__.py +0 -0
  268. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  269. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  270. akshare/stock_a/stock_zh_a_spot.py +212 -0
  271. akshare/stock_feature/cons.py +1 -0
  272. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  273. akshare/stock_feature/stock_a_high_low.py +5 -2
  274. akshare/stock_feature/stock_a_indicator.py +15 -57
  275. akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
  276. akshare/stock_feature/stock_account_em.py +0 -1
  277. akshare/stock_feature/stock_all_pb.py +2 -1
  278. akshare/stock_feature/stock_analyst_em.py +36 -30
  279. akshare/stock_feature/stock_board_concept_ths.py +144 -252
  280. akshare/stock_feature/stock_board_industry_ths.py +137 -401
  281. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  282. akshare/stock_feature/stock_classify_sina.py +3 -6
  283. akshare/stock_feature/stock_comment_em.py +81 -144
  284. akshare/stock_feature/stock_concept_futu.py +183 -0
  285. akshare/stock_feature/stock_congestion_lg.py +2 -1
  286. akshare/stock_feature/stock_cyq_em.py +5 -11
  287. akshare/stock_feature/stock_disclosure_cninfo.py +20 -10
  288. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  289. akshare/stock_feature/stock_ebs_lg.py +5 -4
  290. akshare/stock_feature/stock_esg_sina.py +33 -15
  291. akshare/stock_feature/stock_fhps_em.py +62 -26
  292. akshare/stock_feature/stock_fhps_ths.py +34 -7
  293. akshare/stock_feature/stock_fund_flow.py +38 -25
  294. akshare/stock_feature/stock_gddh_em.py +19 -11
  295. akshare/stock_feature/stock_gdfx_em.py +226 -113
  296. akshare/stock_feature/stock_gdhs.py +75 -50
  297. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  298. akshare/stock_feature/stock_gpzy_em.py +78 -46
  299. akshare/stock_feature/stock_gxl_lg.py +3 -2
  300. akshare/stock_feature/stock_hist_em.py +158 -237
  301. akshare/stock_feature/stock_hist_tx.py +13 -10
  302. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  303. akshare/stock_feature/stock_hot_xq.py +4 -6
  304. akshare/stock_feature/stock_hsgt_em.py +269 -97
  305. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  306. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  307. akshare/stock_feature/stock_info.py +8 -81
  308. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  309. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  310. akshare/stock_feature/stock_jgdy_em.py +43 -40
  311. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  312. akshare/stock_feature/stock_lhb_em.py +165 -35
  313. akshare/stock_feature/stock_lhb_sina.py +93 -46
  314. akshare/stock_feature/stock_margin_em.py +101 -0
  315. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
  316. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
  317. akshare/stock_feature/stock_market_legu.py +4 -2
  318. akshare/stock_feature/stock_pankou_em.py +71 -35
  319. akshare/stock_feature/stock_qsjy_em.py +13 -4
  320. akshare/stock_feature/stock_report_em.py +152 -8
  321. akshare/stock_feature/stock_research_report_em.py +55 -20
  322. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  323. akshare/stock_feature/stock_sy_em.py +20 -15
  324. akshare/stock_feature/stock_technology_ths.py +152 -120
  325. akshare/stock_feature/stock_tfp_em.py +37 -14
  326. akshare/stock_feature/stock_three_report_em.py +120 -78
  327. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  328. akshare/stock_feature/stock_value_em.py +83 -0
  329. akshare/stock_feature/stock_yjbb_em.py +58 -32
  330. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  331. akshare/stock_feature/stock_yjyg_em.py +1 -1
  332. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  333. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  334. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  335. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  336. akshare/stock_feature/stock_ztb_em.py +39 -24
  337. akshare/stock_fundamental/__init__.py +1 -1
  338. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  339. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  340. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +203 -59
  341. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  342. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  343. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  344. akshare/stock_fundamental/stock_hold.py +26 -17
  345. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  346. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  347. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  348. akshare/stock_fundamental/stock_notice.py +41 -18
  349. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  350. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  351. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  352. akshare/stock_fundamental/stock_recommend.py +20 -4
  353. akshare/stock_fundamental/stock_register_em.py +448 -0
  354. akshare/stock_fundamental/stock_zygc.py +5 -62
  355. akshare/tool/trade_date_hist.py +1 -1
  356. akshare/utils/context.py +43 -0
  357. akshare/utils/demjson.py +2009 -1338
  358. akshare/utils/func.py +49 -2
  359. akshare/utils/multi_decrypt.py +53 -0
  360. akshare/utils/token_process.py +6 -5
  361. akshare/utils/tqdm.py +13 -3
  362. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
  363. akshare-1.17.99.dist-info/RECORD +409 -0
  364. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  365. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  366. tests/test_func.py +3 -5
  367. akshare/bond/bond_futures.py +0 -50
  368. akshare/bond/bond_investing.py +0 -139
  369. akshare/crypto/crypto_hist_investing.py +0 -249
  370. akshare/fortune/fortune_it_juzi.py +0 -123
  371. akshare/fund/fund_announcement.py +0 -56
  372. akshare/futures/futures_international.py +0 -170
  373. akshare/futures/futures_news_baidu.py +0 -54
  374. akshare/futures/inventory_data.py +0 -100
  375. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  376. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  377. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  378. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  379. akshare/index/index_fear_greed_funddb.py +0 -78
  380. akshare/index/index_investing.py +0 -232
  381. akshare/sport/__init__.py +0 -6
  382. akshare/sport/sport_olympic.py +0 -27
  383. akshare/sport/sport_olympic_winter.py +0 -39
  384. akshare/stock_feature/stock_wencai.py +0 -104
  385. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  386. akshare/stock_fundamental/stock_register.py +0 -292
  387. akshare-1.13.46.dist-info/RECORD +0 -380
  388. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,23 +1,44 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/3 15:20
4
+ Date: 2025/11/12 15:20
5
5
  Desc: 宏观数据-中国
6
6
  """
7
7
 
8
8
  import datetime
9
9
  import json
10
10
  import math
11
+ import ssl
11
12
  import time
12
13
 
13
14
  import pandas as pd
14
15
  import requests
15
- from tqdm import tqdm
16
+ from requests.adapters import HTTPAdapter
17
+ from urllib3.poolmanager import PoolManager
16
18
 
17
19
  from akshare.economic.cons import (
18
20
  JS_CHINA_ENERGY_DAILY_URL,
19
21
  )
20
22
  from akshare.utils import demjson
23
+ from akshare.utils.tqdm import get_tqdm
24
+
25
+
26
+ class TLSAdapter(HTTPAdapter):
27
+ def init_poolmanager(self, connections, maxsize, block=False):
28
+ ctx = ssl.create_default_context()
29
+ # 降低安全级别以兼容旧服务器
30
+ ctx.set_ciphers('DEFAULT@SECLEVEL=1')
31
+ # 禁用不安全的协议
32
+ ctx.options |= ssl.OP_NO_SSLv2
33
+ ctx.options |= ssl.OP_NO_SSLv3
34
+ # 指定使用 TLSv1.2
35
+ self.poolmanager = PoolManager(
36
+ num_pools=connections,
37
+ maxsize=maxsize,
38
+ block=block,
39
+ ssl_version=ssl.PROTOCOL_TLSv1_2,
40
+ ssl_context=ctx
41
+ )
21
42
 
22
43
 
23
44
  def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
@@ -32,7 +53,7 @@ def __macro_china_base_func(symbol: str, params: dict) -> pd.DataFrame:
32
53
  warnings.filterwarnings(action="ignore", category=FutureWarning)
33
54
  headers = {
34
55
  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
35
- "Chrome/107.0.0.0 Safari/537.36",
56
+ "Chrome/107.0.0.0 Safari/537.36",
36
57
  "x-app-id": "rU6QIu7JHe2gOUeR",
37
58
  "x-csrf-token": "x-csrf-token",
38
59
  "x-version": "1.0.0",
@@ -92,7 +113,9 @@ def macro_china_qyspjg() -> pd.DataFrame:
92
113
  """
93
114
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
94
115
  params = {
95
- "columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
116
+ "columns": "REPORT_DATE,TIME,BASE,BASE_SAME,BASE_SEQUENTIAL,FARM_BASE,FARM_BASE_SAME,"
117
+ "FARM_BASE_SEQUENTIAL,MINERAL_BASE,MINERAL_BASE_SAME,MINERAL_BASE_SEQUENTIAL,"
118
+ "ENERGY_BASE,ENERGY_BASE_SAME,ENERGY_BASE_SEQUENTIAL",
96
119
  "pageNumber": "1",
97
120
  "pageSize": "2000",
98
121
  "sortColumns": "REPORT_DATE",
@@ -103,7 +126,6 @@ def macro_china_qyspjg() -> pd.DataFrame:
103
126
  "p": "1",
104
127
  "pageNo": "1",
105
128
  "pageNum": "1",
106
- "_": "1669047266881",
107
129
  }
108
130
  r = requests.get(url, params=params)
109
131
  data_json = r.json()
@@ -186,7 +208,8 @@ def macro_china_fdi() -> pd.DataFrame:
186
208
  """
187
209
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
188
210
  params = {
189
- "columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
211
+ "columns": "REPORT_DATE,TIME,ACTUAL_FOREIGN,ACTUAL_FOREIGN_SAME,ACTUAL_FOREIGN_SEQUENTIAL,"
212
+ "ACTUAL_FOREIGN_ACCUMULATE,FOREIGN_ACCUMULATE_SAME",
190
213
  "pageNumber": "1",
191
214
  "pageSize": "2000",
192
215
  "sortColumns": "REPORT_DATE",
@@ -197,7 +220,6 @@ def macro_china_fdi() -> pd.DataFrame:
197
220
  "p": "1",
198
221
  "pageNo": "1",
199
222
  "pageNum": "1",
200
- "_": "1669047266881",
201
223
  }
202
224
  r = requests.get(url, params=params)
203
225
  data_json = r.json()
@@ -227,6 +249,7 @@ def macro_china_fdi() -> pd.DataFrame:
227
249
  temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
228
250
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
229
251
  temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
252
+ temp_df.sort_values(["月份"], ignore_index=True, inplace=True)
230
253
  return temp_df
231
254
 
232
255
 
@@ -234,12 +257,14 @@ def macro_china_fdi() -> pd.DataFrame:
234
257
  def macro_china_shrzgm() -> pd.DataFrame:
235
258
  """
236
259
  商务数据中心-国内贸易-社会融资规模增量统计
237
- http://data.mofcom.gov.cn/gnmy/shrzgm.shtml
260
+ https://data.mofcom.gov.cn/gnmy/shrzgm.shtml
238
261
  :return: 社会融资规模增量统计
239
262
  :rtype: pandas.DataFrame
240
263
  """
241
- url = "http://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery"
242
- r = requests.post(url)
264
+ session = requests.Session()
265
+ session.mount(prefix='https://', adapter=TLSAdapter())
266
+ url = "https://data.mofcom.gov.cn/datamofcom/front/gnmy/shrzgmQuery"
267
+ r = session.post(url)
243
268
  data_json = r.json()
244
269
  temp_df = pd.DataFrame(data_json)
245
270
  temp_df.columns = [
@@ -323,6 +348,7 @@ def macro_china_urban_unemployment() -> pd.DataFrame:
323
348
  temp_df.columns = ["date", "item", "value"]
324
349
  temp_df["item"] = temp_df["item"].map(code_item_map)
325
350
  temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
351
+ temp_df.sort_values(by=["date"], ignore_index=True, inplace=True)
326
352
  return temp_df
327
353
 
328
354
 
@@ -706,7 +732,7 @@ def macro_china_daily_energy() -> pd.DataFrame:
706
732
  str(int(round(t * 1000))), str(int(round(t * 1000)) + 90)
707
733
  )
708
734
  )
709
- json_data = json.loads(res.text[res.text.find("{") : res.text.rfind("}") + 1])
735
+ json_data = json.loads(res.text[res.text.find("{"): res.text.rfind("}") + 1])
710
736
  date_list = [item["date"] for item in json_data["list"]]
711
737
  value_list = [
712
738
  item["datas"]["沿海六大电厂库存动态报告"] for item in json_data["list"]
@@ -963,6 +989,10 @@ def macro_china_lpr() -> pd.DataFrame:
963
989
  :return: LPR品种详细数据
964
990
  :rtype: pandas.DataFrame
965
991
  """
992
+ import warnings
993
+
994
+ warnings.filterwarnings(action="ignore", category=FutureWarning)
995
+
966
996
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
967
997
  params = {
968
998
  "reportName": "RPTA_WEB_RATE",
@@ -975,12 +1005,12 @@ def macro_china_lpr() -> pd.DataFrame:
975
1005
  "p": "1",
976
1006
  "pageNo": "1",
977
1007
  "pageNum": "1",
978
- "_": "1689835278471",
979
1008
  }
980
1009
  r = requests.get(url, params=params)
981
1010
  data_json = r.json()
982
1011
  total_page = data_json["result"]["pages"]
983
1012
  big_df = pd.DataFrame()
1013
+ tqdm = get_tqdm()
984
1014
  for page in tqdm(range(1, total_page + 1), leave=False):
985
1015
  params.update({"pageNumber": page})
986
1016
  r = requests.get(url, params=params)
@@ -1016,7 +1046,7 @@ def macro_china_new_house_price(
1016
1046
  params = {
1017
1047
  "reportName": "RPT_ECONOMY_HOUSE_PRICE",
1018
1048
  "columns": "REPORT_DATE,CITY,FIRST_COMHOUSE_SAME,FIRST_COMHOUSE_SEQUENTIAL,FIRST_COMHOUSE_BASE,"
1019
- "SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
1049
+ "SECOND_HOUSE_SAME,SECOND_HOUSE_SEQUENTIAL,SECOND_HOUSE_BASE,REPORT_DAY",
1020
1050
  "filter": f'(CITY in ("{city_first}","{city_second}"))',
1021
1051
  "pageNumber": "1",
1022
1052
  "pageSize": "500",
@@ -1027,7 +1057,6 @@ def macro_china_new_house_price(
1027
1057
  "p": "1",
1028
1058
  "pageNo": "1",
1029
1059
  "pageNum": "1",
1030
- "_": "1669352163467",
1031
1060
  }
1032
1061
  r = requests.get(url, params=params)
1033
1062
  data_json = r.json()
@@ -1038,8 +1067,8 @@ def macro_china_new_house_price(
1038
1067
  "新建商品住宅价格指数-同比",
1039
1068
  "新建商品住宅价格指数-环比",
1040
1069
  "新建商品住宅价格指数-定基",
1041
- "二手住宅价格指数-环比",
1042
1070
  "二手住宅价格指数-同比",
1071
+ "二手住宅价格指数-环比",
1043
1072
  "二手住宅价格指数-定基",
1044
1073
  "-",
1045
1074
  ]
@@ -1050,8 +1079,8 @@ def macro_china_new_house_price(
1050
1079
  "新建商品住宅价格指数-同比",
1051
1080
  "新建商品住宅价格指数-环比",
1052
1081
  "新建商品住宅价格指数-定基",
1053
- "二手住宅价格指数-环比",
1054
1082
  "二手住宅价格指数-同比",
1083
+ "二手住宅价格指数-环比",
1055
1084
  "二手住宅价格指数-定基",
1056
1085
  ]
1057
1086
  ]
@@ -1074,6 +1103,7 @@ def macro_china_new_house_price(
1074
1103
  temp_df["二手住宅价格指数-定基"] = pd.to_numeric(
1075
1104
  temp_df["二手住宅价格指数-定基"], errors="coerce"
1076
1105
  )
1106
+ temp_df.sort_values(["日期"], ignore_index=True, inplace=True)
1077
1107
  return temp_df
1078
1108
 
1079
1109
 
@@ -1087,7 +1117,8 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
1087
1117
  """
1088
1118
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
1089
1119
  params = {
1090
- "columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
1120
+ "columns": "REPORT_DATE,TIME,BOOM_INDEX,FAITH_INDEX,BOOM_INDEX_SAME,BOOM_INDEX_SEQUENTIAL,"
1121
+ "FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL",
1091
1122
  "pageNumber": "1",
1092
1123
  "pageSize": "500",
1093
1124
  "sortColumns": "REPORT_DATE",
@@ -1098,7 +1129,6 @@ def macro_china_enterprise_boom_index() -> pd.DataFrame:
1098
1129
  "p": "1",
1099
1130
  "pageNo": "1",
1100
1131
  "pageNum": "1",
1101
- "_": "1669352163467",
1102
1132
  }
1103
1133
  r = requests.get(url, params=params)
1104
1134
  data_json = r.json()
@@ -1166,7 +1196,6 @@ def macro_china_national_tax_receipts() -> pd.DataFrame:
1166
1196
  "p": "1",
1167
1197
  "pageNo": "1",
1168
1198
  "pageNum": "1",
1169
- "_": "1669352163467",
1170
1199
  }
1171
1200
  r = requests.get(url, params=params)
1172
1201
  data_json = r.json()
@@ -1196,7 +1225,8 @@ def macro_china_bank_financing() -> pd.DataFrame:
1196
1225
  "pageSize": "1000",
1197
1226
  "pageNumber": "1",
1198
1227
  "reportName": "RPT_INDUSTRY_INDEX",
1199
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1228
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1229
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1200
1230
  "filter": '(INDICATOR_ID="EMI01516267")',
1201
1231
  "source": "WEB",
1202
1232
  "client": "WEB",
@@ -1241,7 +1271,8 @@ def macro_china_insurance_income() -> pd.DataFrame:
1241
1271
  "pageSize": "1000",
1242
1272
  "pageNumber": "1",
1243
1273
  "reportName": "RPT_INDUSTRY_INDEX",
1244
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1274
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1275
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1245
1276
  "filter": '(INDICATOR_ID="EMM00088870")',
1246
1277
  "source": "WEB",
1247
1278
  "client": "WEB",
@@ -1286,7 +1317,8 @@ def macro_china_mobile_number() -> pd.DataFrame:
1286
1317
  "pageSize": "1000",
1287
1318
  "pageNumber": "1",
1288
1319
  "reportName": "RPT_INDUSTRY_INDEX",
1289
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1320
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1321
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1290
1322
  "filter": '(INDICATOR_ID="EMI00225823")',
1291
1323
  "source": "WEB",
1292
1324
  "client": "WEB",
@@ -1332,7 +1364,8 @@ def macro_china_vegetable_basket() -> pd.DataFrame:
1332
1364
  "pageSize": "500",
1333
1365
  "pageNumber": "1",
1334
1366
  "reportName": "RPT_INDUSTRY_INDEX",
1335
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1367
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1368
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1336
1369
  "filter": '(INDICATOR_ID="EMI00009275")',
1337
1370
  "source": "WEB",
1338
1371
  "client": "WEB",
@@ -1341,6 +1374,7 @@ def macro_china_vegetable_basket() -> pd.DataFrame:
1341
1374
  data_json = r.json()
1342
1375
  total_page = data_json["result"]["pages"]
1343
1376
  big_df = pd.DataFrame()
1377
+ tqdm = get_tqdm()
1344
1378
  for page in tqdm(range(1, total_page + 1), leave=False):
1345
1379
  params.update({"pageNumber": page})
1346
1380
  r = requests.get(url, params=params)
@@ -1385,7 +1419,8 @@ def macro_china_agricultural_product() -> pd.DataFrame:
1385
1419
  "pageSize": "500",
1386
1420
  "pageNumber": "1",
1387
1421
  "reportName": "RPT_INDUSTRY_INDEX",
1388
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1422
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1423
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1389
1424
  "filter": '(INDICATOR_ID="EMI00009274")',
1390
1425
  "source": "WEB",
1391
1426
  "client": "WEB",
@@ -1394,6 +1429,7 @@ def macro_china_agricultural_product() -> pd.DataFrame:
1394
1429
  data_json = r.json()
1395
1430
  total_page = data_json["result"]["pages"]
1396
1431
  big_df = pd.DataFrame()
1432
+ tqdm = get_tqdm()
1397
1433
  for page in tqdm(range(1, total_page + 1), leave=False):
1398
1434
  params.update({"pageNumber": page})
1399
1435
  r = requests.get(url, params=params)
@@ -1438,7 +1474,8 @@ def macro_china_agricultural_index() -> pd.DataFrame:
1438
1474
  "pageSize": "500",
1439
1475
  "pageNumber": "1",
1440
1476
  "reportName": "RPT_INDUSTRY_INDEX",
1441
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1477
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1478
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1442
1479
  "filter": '(INDICATOR_ID="EMI00662543")',
1443
1480
  "source": "WEB",
1444
1481
  "client": "WEB",
@@ -1447,6 +1484,7 @@ def macro_china_agricultural_index() -> pd.DataFrame:
1447
1484
  data_json = r.json()
1448
1485
  total_page = data_json["result"]["pages"]
1449
1486
  big_df = pd.DataFrame()
1487
+ tqdm = get_tqdm()
1450
1488
  for page in tqdm(range(1, total_page + 1), leave=False):
1451
1489
  params.update({"pageNumber": page})
1452
1490
  r = requests.get(url, params=params)
@@ -1491,7 +1529,8 @@ def macro_china_energy_index() -> pd.DataFrame:
1491
1529
  "pageSize": "500",
1492
1530
  "pageNumber": "1",
1493
1531
  "reportName": "RPT_INDUSTRY_INDEX",
1494
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1532
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1533
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1495
1534
  "filter": '(INDICATOR_ID="EMI00662539")',
1496
1535
  "source": "WEB",
1497
1536
  "client": "WEB",
@@ -1500,6 +1539,7 @@ def macro_china_energy_index() -> pd.DataFrame:
1500
1539
  data_json = r.json()
1501
1540
  total_page = data_json["result"]["pages"]
1502
1541
  big_df = pd.DataFrame()
1542
+ tqdm = get_tqdm()
1503
1543
  for page in tqdm(range(1, total_page + 1), leave=False):
1504
1544
  params.update({"pageNumber": page})
1505
1545
  r = requests.get(url, params=params)
@@ -1544,7 +1584,8 @@ def macro_china_commodity_price_index() -> pd.DataFrame:
1544
1584
  "pageSize": "500",
1545
1585
  "pageNumber": "1",
1546
1586
  "reportName": "RPT_INDUSTRY_INDEX",
1547
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1587
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1588
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1548
1589
  "filter": '(INDICATOR_ID="EMI00662535")',
1549
1590
  "source": "WEB",
1550
1591
  "client": "WEB",
@@ -1553,6 +1594,7 @@ def macro_china_commodity_price_index() -> pd.DataFrame:
1553
1594
  data_json = r.json()
1554
1595
  total_page = data_json["result"]["pages"]
1555
1596
  big_df = pd.DataFrame()
1597
+ tqdm = get_tqdm()
1556
1598
  for page in tqdm(range(1, total_page + 1), leave=False):
1557
1599
  params.update({"pageNumber": page})
1558
1600
  r = requests.get(url, params=params)
@@ -1597,7 +1639,8 @@ def macro_global_sox_index() -> pd.DataFrame:
1597
1639
  "pageSize": "500",
1598
1640
  "pageNumber": "1",
1599
1641
  "reportName": "RPT_INDUSTRY_INDEX",
1600
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1642
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1643
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1601
1644
  "filter": '(INDICATOR_ID="EMI00055562")',
1602
1645
  "source": "WEB",
1603
1646
  "client": "WEB",
@@ -1606,6 +1649,7 @@ def macro_global_sox_index() -> pd.DataFrame:
1606
1649
  data_json = r.json()
1607
1650
  total_page = data_json["result"]["pages"]
1608
1651
  big_df = pd.DataFrame()
1652
+ tqdm = get_tqdm()
1609
1653
  for page in tqdm(range(1, total_page + 1), leave=False):
1610
1654
  params.update({"pageNumber": page})
1611
1655
  r = requests.get(url, params=params)
@@ -1650,7 +1694,8 @@ def macro_china_yw_electronic_index() -> pd.DataFrame:
1650
1694
  "pageSize": "500",
1651
1695
  "pageNumber": "1",
1652
1696
  "reportName": "RPT_INDUSTRY_INDEX",
1653
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1697
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1698
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1654
1699
  "filter": '(INDICATOR_ID="EMI00055551")',
1655
1700
  "source": "WEB",
1656
1701
  "client": "WEB",
@@ -1659,6 +1704,7 @@ def macro_china_yw_electronic_index() -> pd.DataFrame:
1659
1704
  data_json = r.json()
1660
1705
  total_page = data_json["result"]["pages"]
1661
1706
  big_df = pd.DataFrame()
1707
+ tqdm = get_tqdm()
1662
1708
  for page in tqdm(range(1, total_page + 1), leave=False):
1663
1709
  params.update({"pageNumber": page})
1664
1710
  r = requests.get(url, params=params)
@@ -1707,7 +1753,7 @@ def macro_china_construction_index() -> pd.DataFrame:
1707
1753
  "pageNumber": "1",
1708
1754
  "reportName": "RPT_INDUSTRY_INDEX",
1709
1755
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,"
1710
- "CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1756
+ "CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1711
1757
  "filter": '(INDICATOR_ID="EMI00662541")',
1712
1758
  "source": "WEB",
1713
1759
  "client": "WEB",
@@ -1716,6 +1762,7 @@ def macro_china_construction_index() -> pd.DataFrame:
1716
1762
  data_json = r.json()
1717
1763
  total_page = data_json["result"]["pages"]
1718
1764
  big_df = pd.DataFrame()
1765
+ tqdm = get_tqdm()
1719
1766
  for page in tqdm(range(1, total_page + 1), leave=False):
1720
1767
  params.update({"pageNumber": page})
1721
1768
  r = requests.get(url, params=params)
@@ -1760,7 +1807,8 @@ def macro_china_construction_price_index() -> pd.DataFrame:
1760
1807
  "pageSize": "500",
1761
1808
  "pageNumber": "1",
1762
1809
  "reportName": "RPT_INDUSTRY_INDEX",
1763
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1810
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1811
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1764
1812
  "filter": '(INDICATOR_ID="EMI00237146")',
1765
1813
  "source": "WEB",
1766
1814
  "client": "WEB",
@@ -1769,6 +1817,7 @@ def macro_china_construction_price_index() -> pd.DataFrame:
1769
1817
  data_json = r.json()
1770
1818
  total_page = data_json["result"]["pages"]
1771
1819
  big_df = pd.DataFrame()
1820
+ tqdm = get_tqdm()
1772
1821
  for page in tqdm(range(1, total_page + 1), leave=False):
1773
1822
  params.update({"pageNumber": page})
1774
1823
  r = requests.get(url, params=params)
@@ -1813,7 +1862,8 @@ def macro_china_lpi_index() -> pd.DataFrame:
1813
1862
  "pageSize": "500",
1814
1863
  "pageNumber": "1",
1815
1864
  "reportName": "RPT_INDUSTRY_INDEX",
1816
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1865
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1866
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1817
1867
  "filter": '(INDICATOR_ID="EMI00352262")',
1818
1868
  "source": "WEB",
1819
1869
  "client": "WEB",
@@ -1822,6 +1872,7 @@ def macro_china_lpi_index() -> pd.DataFrame:
1822
1872
  data_json = r.json()
1823
1873
  total_page = data_json["result"]["pages"]
1824
1874
  big_df = pd.DataFrame()
1875
+ tqdm = get_tqdm()
1825
1876
  for page in tqdm(range(1, total_page + 1), leave=False):
1826
1877
  params.update({"pageNumber": page})
1827
1878
  r = requests.get(url, params=params)
@@ -1866,7 +1917,8 @@ def macro_china_bdti_index() -> pd.DataFrame:
1866
1917
  "pageSize": "500",
1867
1918
  "pageNumber": "1",
1868
1919
  "reportName": "RPT_INDUSTRY_INDEX",
1869
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1920
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1921
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1870
1922
  "filter": '(INDICATOR_ID="EMI00107668")',
1871
1923
  "source": "WEB",
1872
1924
  "client": "WEB",
@@ -1875,6 +1927,7 @@ def macro_china_bdti_index() -> pd.DataFrame:
1875
1927
  data_json = r.json()
1876
1928
  total_page = data_json["result"]["pages"]
1877
1929
  big_df = pd.DataFrame()
1930
+ tqdm = get_tqdm()
1878
1931
  for page in tqdm(range(1, total_page + 1), leave=False):
1879
1932
  params.update({"pageNumber": page})
1880
1933
  r = requests.get(url, params=params)
@@ -1919,7 +1972,8 @@ def macro_china_bsi_index() -> pd.DataFrame:
1919
1972
  "pageSize": "500",
1920
1973
  "pageNumber": "1",
1921
1974
  "reportName": "RPT_INDUSTRY_INDEX",
1922
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1975
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
1976
+ "CHANGERATE_2Y,CHANGERATE_3Y",
1923
1977
  "filter": '(INDICATOR_ID="EMI00107667")',
1924
1978
  "source": "WEB",
1925
1979
  "client": "WEB",
@@ -1928,6 +1982,7 @@ def macro_china_bsi_index() -> pd.DataFrame:
1928
1982
  data_json = r.json()
1929
1983
  total_page = data_json["result"]["pages"]
1930
1984
  big_df = pd.DataFrame()
1985
+ tqdm = get_tqdm()
1931
1986
  for page in tqdm(range(1, total_page + 1), leave=False):
1932
1987
  params.update({"pageNumber": page})
1933
1988
  r = requests.get(url, params=params)
@@ -1973,7 +2028,7 @@ def _em_macro_1(em_id) -> pd.DataFrame:
1973
2028
  "pageNumber": "1",
1974
2029
  "reportName": "RPT_INDUSTRY_INDEX",
1975
2030
  "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,"
1976
- "CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
2031
+ "CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
1977
2032
  "filter": "(INDICATOR_ID=" + ind_id + ")",
1978
2033
  "source": "WEB",
1979
2034
  "client": "WEB",
@@ -1982,6 +2037,7 @@ def _em_macro_1(em_id) -> pd.DataFrame:
1982
2037
  data_json = r.json()
1983
2038
  total_page = data_json["result"]["pages"]
1984
2039
  big_df = pd.DataFrame()
2040
+ tqdm = get_tqdm()
1985
2041
  for page in tqdm(range(1, total_page + 1), leave=False):
1986
2042
  params.update({"pageNumber": page})
1987
2043
  r = requests.get(url, params=params)
@@ -2066,7 +2122,7 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
2066
2122
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2067
2123
  params = {
2068
2124
  "columns": "REPORT_DATE,TIME,RMB_LOAN,RMB_LOAN_SAME,RMB_LOAN_SEQUENTIAL,"
2069
- "RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
2125
+ "RMB_LOAN_ACCUMULATE,LOAN_ACCUMULATE_SAME",
2070
2126
  "pageNumber": "1",
2071
2127
  "pageSize": "2000",
2072
2128
  "sortColumns": "REPORT_DATE",
@@ -2077,7 +2133,6 @@ def macro_china_new_financial_credit() -> pd.DataFrame:
2077
2133
  "p": "1",
2078
2134
  "pageNo": "1",
2079
2135
  "pageNum": "1",
2080
- "_": "1669047266881",
2081
2136
  }
2082
2137
  r = requests.get(url, params=params)
2083
2138
  data_json = r.json()
@@ -2115,11 +2170,11 @@ def macro_china_fx_gold() -> pd.DataFrame:
2115
2170
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2116
2171
  headers = {
2117
2172
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
2118
- "Chrome/81.0.4044.138 Safari/537.36",
2173
+ "Chrome/81.0.4044.138 Safari/537.36",
2119
2174
  }
2120
2175
  params = {
2121
2176
  "columns": "REPORT_DATE,TIME,GOLD_RESERVES,GOLD_RESERVES_SAME,"
2122
- "GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
2177
+ "GOLD_RESERVES_SEQUENTIAL,FOREX,FOREX_SAME,FOREX_SEQUENTIAL",
2123
2178
  "pageNumber": "1",
2124
2179
  "pageSize": "1000",
2125
2180
  "sortColumns": "REPORT_DATE",
@@ -2130,7 +2185,6 @@ def macro_china_fx_gold() -> pd.DataFrame:
2130
2185
  "p": "1",
2131
2186
  "pageNo": "1",
2132
2187
  "pageNum": "1",
2133
- "_": "1660718498421",
2134
2188
  }
2135
2189
  r = requests.get(url, params=params, headers=headers)
2136
2190
  data_json = r.json()
@@ -2182,19 +2236,18 @@ def macro_china_stock_market_cap() -> pd.DataFrame:
2182
2236
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2183
2237
  headers = {
2184
2238
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
2185
- "Chrome/81.0.4044.138 Safari/537.36",
2239
+ "Chrome/81.0.4044.138 Safari/537.36",
2186
2240
  }
2187
2241
  params = {
2188
2242
  "reportName": "RPT_ECONOMY_STOCK_STATISTICS",
2189
2243
  "columns": "REPORT_DATE,TIME,TOTAL_SHARES_SH,TOTAL_MARKE_SH,DEAL_AMOUNT_SH,VOLUME_SH,HIGH_INDEX_SH,"
2190
- "LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
2244
+ "LOW_INDEX_SH,TOTAL_SZARES_SZ,TOTAL_MARKE_SZ,DEAL_AMOUNT_SZ,VOLUME_SZ,HIGH_INDEX_SZ,LOW_INDEX_SZ",
2191
2245
  "sortColumns": "REPORT_DATE",
2192
2246
  "sortTypes": "-1",
2193
2247
  "pageNumber": "1",
2194
2248
  "pageSize": "1000",
2195
2249
  "source": "WEB",
2196
2250
  "client": "WEB",
2197
- "_": "1660718498421",
2198
2251
  }
2199
2252
  r = requests.get(url, params=params, headers=headers)
2200
2253
  data_json = r.json()
@@ -2269,7 +2322,7 @@ def macro_china_money_supply() -> pd.DataFrame:
2269
2322
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2270
2323
  params = {
2271
2324
  "columns": "REPORT_DATE,TIME,BASIC_CURRENCY,BASIC_CURRENCY_SAME,BASIC_CURRENCY_SEQUENTIAL,CURRENCY,"
2272
- "CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
2325
+ "CURRENCY_SAME,CURRENCY_SEQUENTIAL,FREE_CASH,FREE_CASH_SAME,FREE_CASH_SEQUENTIAL",
2273
2326
  "pageNumber": "1",
2274
2327
  "pageSize": "2000",
2275
2328
  "sortColumns": "REPORT_DATE",
@@ -2280,7 +2333,6 @@ def macro_china_money_supply() -> pd.DataFrame:
2280
2333
  "p": "1",
2281
2334
  "pageNo": "1",
2282
2335
  "pageNum": "1",
2283
- "_": "1669047266881",
2284
2336
  }
2285
2337
  r = requests.get(url, params=params)
2286
2338
  data_json = r.json()
@@ -2353,8 +2405,8 @@ def macro_china_cpi() -> pd.DataFrame:
2353
2405
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2354
2406
  params = {
2355
2407
  "columns": "REPORT_DATE,TIME,NATIONAL_SAME,NATIONAL_BASE,NATIONAL_SEQUENTIAL,NATIONAL_ACCUMULATE,"
2356
- "CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
2357
- "RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
2408
+ "CITY_SAME,CITY_BASE,CITY_SEQUENTIAL,CITY_ACCUMULATE,RURAL_SAME,"
2409
+ "RURAL_BASE,RURAL_SEQUENTIAL,RURAL_ACCUMULATE",
2358
2410
  "pageNumber": "1",
2359
2411
  "pageSize": "2000",
2360
2412
  "sortColumns": "REPORT_DATE",
@@ -2365,7 +2417,6 @@ def macro_china_cpi() -> pd.DataFrame:
2365
2417
  "p": "1",
2366
2418
  "pageNo": "1",
2367
2419
  "pageNum": "1",
2368
- "_": "1669047266881",
2369
2420
  }
2370
2421
  r = requests.get(url, params=params)
2371
2422
  data_json = r.json()
@@ -2429,7 +2480,7 @@ def macro_china_gdp() -> pd.DataFrame:
2429
2480
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2430
2481
  params = {
2431
2482
  "columns": "REPORT_DATE,TIME,DOMESTICL_PRODUCT_BASE,FIRST_PRODUCT_BASE,SECOND_PRODUCT_BASE,"
2432
- "THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
2483
+ "THIRD_PRODUCT_BASE,SUM_SAME,FIRST_SAME,SECOND_SAME,THIRD_SAME",
2433
2484
  "pageNumber": "1",
2434
2485
  "pageSize": "2000",
2435
2486
  "sortColumns": "REPORT_DATE",
@@ -2440,7 +2491,6 @@ def macro_china_gdp() -> pd.DataFrame:
2440
2491
  "p": "1",
2441
2492
  "pageNo": "1",
2442
2493
  "pageNum": "1",
2443
- "_": "1669047266881",
2444
2494
  }
2445
2495
  r = requests.get(url, params=params)
2446
2496
  data_json = r.json()
@@ -2517,7 +2567,6 @@ def macro_china_ppi() -> pd.DataFrame:
2517
2567
  "p": "1",
2518
2568
  "pageNo": "1",
2519
2569
  "pageNum": "1",
2520
- "_": "1669047266881",
2521
2570
  }
2522
2571
  r = requests.get(url, params=params)
2523
2572
  data_json = r.json()
@@ -2563,7 +2612,6 @@ def macro_china_pmi() -> pd.DataFrame:
2563
2612
  "p": "1",
2564
2613
  "pageNo": "1",
2565
2614
  "pageNum": "1",
2566
- "_": "1669047266881",
2567
2615
  }
2568
2616
  r = requests.get(url, params=params)
2569
2617
  data_json = r.json()
@@ -2616,7 +2664,6 @@ def macro_china_gdzctz() -> pd.DataFrame:
2616
2664
  "p": "1",
2617
2665
  "pageNo": "1",
2618
2666
  "pageNum": "1",
2619
- "_": "1669047266881",
2620
2667
  }
2621
2668
  r = requests.get(url, params=params)
2622
2669
  data_json = r.json()
@@ -2656,8 +2703,8 @@ def macro_china_hgjck() -> pd.DataFrame:
2656
2703
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2657
2704
  params = {
2658
2705
  "columns": "REPORT_DATE,TIME,EXIT_BASE,IMPORT_BASE,EXIT_BASE_SAME,IMPORT_BASE_SAME,"
2659
- "EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
2660
- "IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
2706
+ "EXIT_BASE_SEQUENTIAL,IMPORT_BASE_SEQUENTIAL,EXIT_ACCUMULATE,"
2707
+ "IMPORT_ACCUMULATE,EXIT_ACCUMULATE_SAME,IMPORT_ACCUMULATE_SAME",
2661
2708
  "pageNumber": "1",
2662
2709
  "pageSize": "2000",
2663
2710
  "sortColumns": "REPORT_DATE",
@@ -2668,7 +2715,6 @@ def macro_china_hgjck() -> pd.DataFrame:
2668
2715
  "p": "1",
2669
2716
  "pageNo": "1",
2670
2717
  "pageNum": "1",
2671
- "_": "1669047266881",
2672
2718
  }
2673
2719
  r = requests.get(url, params=params)
2674
2720
  data_json = r.json()
@@ -2758,7 +2804,6 @@ def macro_china_czsr() -> pd.DataFrame:
2758
2804
  "p": "1",
2759
2805
  "pageNo": "1",
2760
2806
  "pageNum": "1",
2761
- "_": "1669047266881",
2762
2807
  }
2763
2808
  r = requests.get(url, params=params)
2764
2809
  data_json = r.json()
@@ -2788,7 +2833,7 @@ def macro_china_czsr() -> pd.DataFrame:
2788
2833
  temp_df["当月-环比增长"] = pd.to_numeric(temp_df["当月-环比增长"], errors="coerce")
2789
2834
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2790
2835
  temp_df["累计-同比增长"] = pd.to_numeric(temp_df["累计-同比增长"], errors="coerce")
2791
-
2836
+ temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
2792
2837
  return temp_df
2793
2838
 
2794
2839
 
@@ -2812,7 +2857,6 @@ def macro_china_whxd() -> pd.DataFrame:
2812
2857
  "p": "1",
2813
2858
  "pageNo": "1",
2814
2859
  "pageNum": "1",
2815
- "_": "1669047266881",
2816
2860
  }
2817
2861
  r = requests.get(url, params=params)
2818
2862
  data_json = r.json()
@@ -2839,6 +2883,7 @@ def macro_china_whxd() -> pd.DataFrame:
2839
2883
  temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
2840
2884
  temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
2841
2885
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2886
+ temp_df.sort_values(by=["月份"], ignore_index=True, inplace=True)
2842
2887
  return temp_df
2843
2888
 
2844
2889
 
@@ -2862,7 +2907,6 @@ def macro_china_wbck() -> pd.DataFrame:
2862
2907
  "p": "1",
2863
2908
  "pageNo": "1",
2864
2909
  "pageNum": "1",
2865
- "_": "1669047266881",
2866
2910
  }
2867
2911
  r = requests.get(url, params=params)
2868
2912
  data_json = r.json()
@@ -2889,7 +2933,6 @@ def macro_china_wbck() -> pd.DataFrame:
2889
2933
  temp_df["同比增长"] = pd.to_numeric(temp_df["同比增长"], errors="coerce")
2890
2934
  temp_df["环比增长"] = pd.to_numeric(temp_df["环比增长"], errors="coerce")
2891
2935
  temp_df["累计"] = pd.to_numeric(temp_df["累计"], errors="coerce")
2892
-
2893
2936
  return temp_df
2894
2937
 
2895
2938
 
@@ -2902,7 +2945,9 @@ def macro_china_xfzxx() -> pd.DataFrame:
2902
2945
  """
2903
2946
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
2904
2947
  params = {
2905
- "columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
2948
+ "columns": "REPORT_DATE,TIME,CONSUMERS_FAITH_INDEX,FAITH_INDEX_SAME,FAITH_INDEX_SEQUENTIAL,"
2949
+ "CONSUMERS_ASTIS_INDEX,ASTIS_INDEX_SAME,ASTIS_INDEX_SEQUENTIAL,CONSUMERS_EXPECT_INDEX,"
2950
+ "EXPECT_INDEX_SAME,EXPECT_INDEX_SEQUENTIAL",
2906
2951
  "pageNumber": "1",
2907
2952
  "pageSize": "2000",
2908
2953
  "sortColumns": "REPORT_DATE",
@@ -2913,7 +2958,6 @@ def macro_china_xfzxx() -> pd.DataFrame:
2913
2958
  "p": "1",
2914
2959
  "pageNo": "1",
2915
2960
  "pageNum": "1",
2916
- "_": "1669047266881",
2917
2961
  }
2918
2962
  r = requests.get(url, params=params)
2919
2963
  data_json = r.json()
@@ -2997,7 +3041,6 @@ def macro_china_gyzjz() -> pd.DataFrame:
2997
3041
  "p": "1",
2998
3042
  "pageNo": "1",
2999
3043
  "pageNum": "1",
3000
- "_": "1691676211803",
3001
3044
  }
3002
3045
  r = requests.get(url, params=params)
3003
3046
  data_json = r.json()
@@ -3032,7 +3075,8 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
3032
3075
  """
3033
3076
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3034
3077
  params = {
3035
- "columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
3078
+ "columns": "REPORT_DATE,PUBLISH_DATE,TRADE_DATE,INTEREST_RATE_BB,INTEREST_RATE_BA,CHANGE_RATE_B,"
3079
+ "INTEREST_RATE_SB,INTEREST_RATE_SA,CHANGE_RATE_S,NEXT_SH_RATE,NEXT_SZ_RATE,REMARK",
3036
3080
  "pageNumber": "1",
3037
3081
  "pageSize": "2000",
3038
3082
  "sortColumns": "PUBLISH_DATE,TRADE_DATE",
@@ -3043,7 +3087,6 @@ def macro_china_reserve_requirement_ratio() -> pd.DataFrame:
3043
3087
  "p": "1",
3044
3088
  "pageNo": "1",
3045
3089
  "pageNum": "1",
3046
- "_": "1669047266881",
3047
3090
  }
3048
3091
  r = requests.get(url, params=params)
3049
3092
  data_json = r.json()
@@ -3116,10 +3159,12 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
3116
3159
  """
3117
3160
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3118
3161
  headers = {
3119
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
3162
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
3163
+ "Chrome/81.0.4044.138 Safari/537.36",
3120
3164
  }
3121
3165
  params = {
3122
- "columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
3166
+ "columns": "REPORT_DATE,TIME,RETAIL_TOTAL,RETAIL_TOTAL_SAME,RETAIL_TOTAL_SEQUENTIAL,"
3167
+ "RETAIL_TOTAL_ACCUMULATE,RETAIL_ACCUMULATE_SAME",
3123
3168
  "pageNumber": "1",
3124
3169
  "pageSize": "1000",
3125
3170
  "sortColumns": "REPORT_DATE",
@@ -3130,7 +3175,6 @@ def macro_china_consumer_goods_retail() -> pd.DataFrame:
3130
3175
  "p": "1",
3131
3176
  "pageNo": "1",
3132
3177
  "pageNum": "1",
3133
- "_": "1660718498421",
3134
3178
  }
3135
3179
  r = requests.get(url, params=params, headers=headers)
3136
3180
  data_json = r.json()
@@ -3176,18 +3220,17 @@ def macro_china_society_electricity() -> pd.DataFrame:
3176
3220
  "from": "0",
3177
3221
  "num": "31",
3178
3222
  "condition": "",
3179
- "_": "1601557771972",
3180
3223
  }
3181
3224
  r = requests.get(url, params=params)
3182
3225
  data_text = r.text
3183
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3226
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3184
3227
  page_num = math.ceil(int(data_json["count"]) / 31)
3185
3228
  big_df = pd.DataFrame(data_json["data"])
3186
3229
  for i in range(1, page_num):
3187
3230
  params.update({"from": i * 31})
3188
3231
  r = requests.get(url, params=params)
3189
3232
  data_text = r.text
3190
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3233
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3191
3234
  temp_df = pd.DataFrame(data_json["data"])
3192
3235
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3193
3236
 
@@ -3230,18 +3273,18 @@ def macro_china_society_traffic_volume() -> pd.DataFrame:
3230
3273
  "from": "0",
3231
3274
  "num": "31",
3232
3275
  "condition": "",
3233
- "_": "1601557771972",
3234
3276
  }
3235
3277
  r = requests.get(url, params=params)
3236
3278
  data_text = r.text
3237
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3279
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3238
3280
  page_num = math.ceil(int(data_json["count"]) / 31)
3239
3281
  big_df = pd.DataFrame(data_json["data"]["非累计"])
3282
+ tqdm = get_tqdm()
3240
3283
  for i in tqdm(range(1, page_num), leave=False):
3241
3284
  params.update({"from": i * 31})
3242
3285
  r = requests.get(url, params=params)
3243
3286
  data_text = r.text
3244
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3287
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3245
3288
  temp_df = pd.DataFrame(data_json["data"]["非累计"])
3246
3289
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3247
3290
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3288,20 +3331,20 @@ def macro_china_postal_telecommunicational() -> pd.DataFrame:
3288
3331
  "from": "0",
3289
3332
  "num": "31",
3290
3333
  "condition": "",
3291
- "_": "1601624495046",
3292
3334
  }
3293
3335
  r = requests.get(url, params=params)
3294
3336
  data_text = r.text
3295
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3337
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3296
3338
  page_num = math.ceil(int(data_json["count"]) / 31)
3297
3339
  big_df = pd.DataFrame(data_json["data"]["非累计"])
3298
- for i in tqdm(range(1, page_num)):
3340
+ tqdm = get_tqdm()
3341
+ for i in tqdm(range(1, page_num), leave=False):
3299
3342
  params.update({"from": i * 31})
3300
3343
  r = requests.get(url, params=params)
3301
3344
  data_text = r.text
3302
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3345
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3303
3346
  temp_df = pd.DataFrame(data_json["data"]["非累计"])
3304
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
3347
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3305
3348
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
3306
3349
  for item in big_df.columns[1:]:
3307
3350
  big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
@@ -3322,18 +3365,18 @@ def macro_china_international_tourism_fx() -> pd.DataFrame:
3322
3365
  "from": "0",
3323
3366
  "num": "31",
3324
3367
  "condition": "",
3325
- "_": "1601624495046",
3326
3368
  }
3327
3369
  r = requests.get(url, params=params)
3328
3370
  data_text = r.text
3329
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3371
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3330
3372
  page_num = math.ceil(int(data_json["count"]) / 31)
3331
3373
  big_df = pd.DataFrame(data_json["data"])
3374
+ tqdm = get_tqdm()
3332
3375
  for i in tqdm(range(1, page_num)):
3333
3376
  params.update({"from": i * 31})
3334
3377
  r = requests.get(url, params=params)
3335
3378
  data_text = r.text
3336
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3379
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3337
3380
  temp_df = pd.DataFrame(data_json["data"])
3338
3381
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3339
3382
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3356,20 +3399,20 @@ def macro_china_passenger_load_factor() -> pd.DataFrame:
3356
3399
  "from": "0",
3357
3400
  "num": "31",
3358
3401
  "condition": "",
3359
- "_": "1601624495046",
3360
3402
  }
3361
3403
  r = requests.get(url, params=params)
3362
3404
  data_text = r.text
3363
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3405
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3364
3406
  page_num = math.ceil(int(data_json["count"]) / 31)
3365
3407
  big_df = pd.DataFrame(data_json["data"])
3408
+ tqdm = get_tqdm()
3366
3409
  for i in tqdm(range(1, page_num)):
3367
3410
  params.update({"from": i * 31})
3368
3411
  r = requests.get(url, params=params)
3369
3412
  data_text = r.text
3370
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3413
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3371
3414
  temp_df = pd.DataFrame(data_json["data"])
3372
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
3415
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3373
3416
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
3374
3417
  big_df["客座率"] = pd.to_numeric(big_df["客座率"], errors="coerce")
3375
3418
  big_df["载运率"] = pd.to_numeric(big_df["载运率"], errors="coerce")
@@ -3390,18 +3433,18 @@ def _macro_china_freight_index() -> pd.DataFrame:
3390
3433
  "from": "0",
3391
3434
  "num": "31",
3392
3435
  "condition": "",
3393
- "_": "1601624495046",
3394
3436
  }
3395
3437
  r = requests.get(url, params=params)
3396
3438
  data_text = r.text
3397
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3439
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3398
3440
  page_num = math.ceil(int(data_json["count"]) / 31)
3399
3441
  big_df = pd.DataFrame(data_json["data"])
3442
+ tqdm = get_tqdm()
3400
3443
  for i in tqdm(range(1, page_num)):
3401
3444
  params.update({"from": i * 31})
3402
3445
  r = requests.get(url, params=params)
3403
3446
  data_text = r.text
3404
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3447
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3405
3448
  temp_df = pd.DataFrame(data_json["data"])
3406
3449
  big_df = big_df.append(temp_df, ignore_index=True)
3407
3450
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3467,18 +3510,18 @@ def macro_china_central_bank_balance() -> pd.DataFrame:
3467
3510
  "from": "0",
3468
3511
  "num": "31",
3469
3512
  "condition": "",
3470
- "_": "1601624495046",
3471
3513
  }
3472
3514
  r = requests.get(url, params=params)
3473
3515
  data_text = r.text
3474
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3516
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3475
3517
  page_num = math.ceil(int(data_json["count"]) / 31)
3476
3518
  big_df = pd.DataFrame(data_json["data"])
3519
+ tqdm = get_tqdm()
3477
3520
  for i in tqdm(range(1, page_num)):
3478
3521
  params.update({"from": i * 31})
3479
3522
  r = requests.get(url, params=params)
3480
3523
  data_text = r.text
3481
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3524
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3482
3525
  temp_df = pd.DataFrame(data_json["data"])
3483
3526
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3484
3527
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3501,18 +3544,18 @@ def macro_china_insurance() -> pd.DataFrame:
3501
3544
  "from": "0",
3502
3545
  "num": "31",
3503
3546
  "condition": "",
3504
- "_": "1601624495046",
3505
3547
  }
3506
3548
  r = requests.get(url, params=params)
3507
3549
  data_text = r.text
3508
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3550
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3509
3551
  page_num = math.ceil(int(data_json["count"]) / 31)
3510
3552
  big_df = pd.DataFrame(data_json["data"])
3553
+ tqdm = get_tqdm()
3511
3554
  for i in tqdm(range(1, page_num)):
3512
3555
  params.update({"from": i * 31})
3513
3556
  r = requests.get(url, params=params)
3514
3557
  data_text = r.text
3515
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3558
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3516
3559
  temp_df = pd.DataFrame(data_json["data"])
3517
3560
  big_df = pd.concat([big_df, temp_df], ignore_index=True)
3518
3561
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3535,20 +3578,20 @@ def macro_china_supply_of_money() -> pd.DataFrame:
3535
3578
  "from": "0",
3536
3579
  "num": "31",
3537
3580
  "condition": "",
3538
- "_": "1601624495046",
3539
3581
  }
3540
3582
  r = requests.get(url, params=params)
3541
3583
  data_text = r.text
3542
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3584
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3543
3585
  page_num = math.ceil(int(data_json["count"]) / 31)
3544
3586
  big_df = pd.DataFrame(data_json["data"])
3587
+ tqdm = get_tqdm()
3545
3588
  for i in tqdm(range(1, page_num)):
3546
3589
  params.update({"from": i * 31})
3547
3590
  r = requests.get(url, params=params)
3548
3591
  data_text = r.text
3549
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3592
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3550
3593
  temp_df = pd.DataFrame(data_json["data"])
3551
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
3594
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3552
3595
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
3553
3596
  for item in big_df.columns[1:]:
3554
3597
  big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
@@ -3569,18 +3612,18 @@ def macro_china_foreign_exchange_gold() -> pd.DataFrame:
3569
3612
  "from": "0",
3570
3613
  "num": "31",
3571
3614
  "condition": "",
3572
- "_": "1601624495046",
3573
3615
  }
3574
3616
  r = requests.get(url, params=params)
3575
3617
  data_text = r.text
3576
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3618
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3577
3619
  page_num = math.ceil(int(data_json["count"]) / 31)
3578
3620
  big_df = pd.DataFrame(data_json["data"])
3621
+ tqdm = get_tqdm()
3579
3622
  for i in tqdm(range(1, page_num), leave=False):
3580
3623
  params.update({"from": i * 31})
3581
3624
  r = requests.get(url, params=params)
3582
3625
  data_text = r.text
3583
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3626
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3584
3627
  temp_df = pd.DataFrame(data_json["data"])
3585
3628
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3586
3629
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3604,18 +3647,18 @@ def macro_china_retail_price_index() -> pd.DataFrame:
3604
3647
  "from": "0",
3605
3648
  "num": "31",
3606
3649
  "condition": "",
3607
- "_": "1601624495046",
3608
3650
  }
3609
3651
  r = requests.get(url, params=params)
3610
3652
  data_text = r.text
3611
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3653
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3612
3654
  page_num = math.ceil(int(data_json["count"]) / 31)
3613
3655
  big_df = pd.DataFrame(data_json["data"])
3656
+ tqdm = get_tqdm()
3614
3657
  for i in tqdm(range(1, page_num), leave=False):
3615
3658
  params.update({"from": i * 31})
3616
3659
  r = requests.get(url, params=params)
3617
3660
  data_text = r.text
3618
- data_json = demjson.decode(data_text[data_text.find("{") : -3])
3661
+ data_json = demjson.decode(data_text[data_text.find("{"): -3])
3619
3662
  temp_df = pd.DataFrame(data_json["data"])
3620
3663
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
3621
3664
  big_df.columns = [item[1] for item in data_json["config"]["all"]]
@@ -3635,7 +3678,8 @@ def macro_china_real_estate() -> pd.DataFrame:
3635
3678
  """
3636
3679
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
3637
3680
  headers = {
3638
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
3681
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
3682
+ "Chrome/81.0.4044.138 Safari/537.36",
3639
3683
  }
3640
3684
  params = {
3641
3685
  "sortColumns": "REPORT_DATE",
@@ -3643,7 +3687,8 @@ def macro_china_real_estate() -> pd.DataFrame:
3643
3687
  "pageSize": "1000",
3644
3688
  "pageNumber": "1",
3645
3689
  "reportName": "RPT_INDUSTRY_INDEX",
3646
- "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,CHANGERATE_2Y,CHANGERATE_3Y",
3690
+ "columns": "REPORT_DATE,INDICATOR_VALUE,CHANGE_RATE,CHANGERATE_3M,CHANGERATE_6M,CHANGERATE_1Y,"
3691
+ "CHANGERATE_2Y,CHANGERATE_3Y",
3647
3692
  "filter": '(INDICATOR_ID="EMM00121987")',
3648
3693
  "source": "WEB",
3649
3694
  "client": "WEB",
@@ -3652,6 +3697,7 @@ def macro_china_real_estate() -> pd.DataFrame:
3652
3697
  data_json = r.json()
3653
3698
  total_page = data_json["result"]["pages"]
3654
3699
  big_df = pd.DataFrame()
3700
+ tqdm = get_tqdm()
3655
3701
  for page in tqdm(range(1, total_page + 1), leave=False):
3656
3702
  params.update({"pageNumber": page})
3657
3703
  r = requests.get(url, params=params, headers=headers)
@@ -3668,15 +3714,15 @@ def macro_china_real_estate() -> pd.DataFrame:
3668
3714
  "近2年涨跌幅",
3669
3715
  "近3年涨跌幅",
3670
3716
  ]
3671
- big_df["日期"] = pd.to_datetime(big_df["日期"]).dt.date
3672
- big_df["最新值"] = pd.to_numeric(big_df["最新值"])
3673
- big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
3674
- big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"])
3675
- big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"])
3676
- big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"])
3677
- big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"])
3678
- big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"])
3679
- big_df.sort_values(["日期"], inplace=True)
3717
+ big_df["日期"] = pd.to_datetime(big_df["日期"], errors="coerce").dt.date
3718
+ big_df["最新值"] = pd.to_numeric(big_df["最新值"], errors="coerce")
3719
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
3720
+ big_df["近3月涨跌幅"] = pd.to_numeric(big_df["近3月涨跌幅"], errors="coerce")
3721
+ big_df["近6月涨跌幅"] = pd.to_numeric(big_df["近6月涨跌幅"], errors="coerce")
3722
+ big_df["近1年涨跌幅"] = pd.to_numeric(big_df["近1年涨跌幅"], errors="coerce")
3723
+ big_df["近2年涨跌幅"] = pd.to_numeric(big_df["近2年涨跌幅"], errors="coerce")
3724
+ big_df["近3年涨跌幅"] = pd.to_numeric(big_df["近3年涨跌幅"], errors="coerce")
3725
+ big_df.sort_values(by=["日期"], inplace=True)
3680
3726
  big_df.drop_duplicates(inplace=True)
3681
3727
  big_df.reset_index(inplace=True, drop=True)
3682
3728
  return big_df