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,12 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/12/29 18:00
4
+ Date: 2024/10/1 22:00
5
5
  Desc: 东方财富网-数据中心-特色数据-股东户数
6
6
  https://data.eastmoney.com/gdhs/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
11
+
10
12
  from akshare.utils.tqdm import get_tqdm
11
13
 
12
14
 
@@ -27,7 +29,9 @@ def stock_zh_a_gdhs(symbol: str = "20230930") -> pd.DataFrame:
27
29
  "pageSize": "500",
28
30
  "pageNumber": "1",
29
31
  "reportName": "RPT_HOLDERNUMLATEST",
30
- "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE",
32
+ "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,AVG_HOLD_NUM,"
33
+ "TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,PRE_HOLDER_NUM,"
34
+ "HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE",
31
35
  "quoteColumns": "f2,f3",
32
36
  "source": "WEB",
33
37
  "client": "WEB",
@@ -39,11 +43,13 @@ def stock_zh_a_gdhs(symbol: str = "20230930") -> pd.DataFrame:
39
43
  "pageSize": "500",
40
44
  "pageNumber": "1",
41
45
  "reportName": "RPT_HOLDERNUM_DET",
42
- "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE",
46
+ "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,"
47
+ "AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,"
48
+ "PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE",
43
49
  "quoteColumns": "f2,f3",
44
50
  "source": "WEB",
45
51
  "client": "WEB",
46
- 'filter': f"(END_DATE='{symbol[:4] + '-' + symbol[4:6] + '-' + symbol[6:]}')",
52
+ "filter": f"(END_DATE='{symbol[:4] + '-' + symbol[4:6] + '-' + symbol[6:]}')",
47
53
  }
48
54
  r = requests.get(url, params=params)
49
55
  data_json = r.json()
@@ -51,13 +57,15 @@ def stock_zh_a_gdhs(symbol: str = "20230930") -> pd.DataFrame:
51
57
  big_df = pd.DataFrame()
52
58
  tqdm = get_tqdm()
53
59
  for page_num in tqdm(range(1, total_page_num + 1), leave=False):
54
- params.update({
55
- "pageNumber": page_num,
56
- })
60
+ params.update(
61
+ {
62
+ "pageNumber": page_num,
63
+ }
64
+ )
57
65
  r = requests.get(url, params=params)
58
66
  data_json = r.json()
59
67
  temp_df = pd.DataFrame(data_json["result"]["data"])
60
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
68
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
61
69
  big_df.columns = [
62
70
  "代码",
63
71
  "名称",
@@ -96,20 +104,26 @@ def stock_zh_a_gdhs(symbol: str = "20230930") -> pd.DataFrame:
96
104
  "公告日期",
97
105
  ]
98
106
  ]
99
- big_df['最新价'] = pd.to_numeric(big_df['最新价'], errors="coerce")
100
- big_df['涨跌幅'] = pd.to_numeric(big_df['涨跌幅'], errors="coerce")
101
- big_df['股东户数-本次'] = pd.to_numeric(big_df['股东户数-本次'], errors="coerce")
102
- big_df['股东户数-上次'] = pd.to_numeric(big_df['股东户数-上次'], errors="coerce")
103
- big_df['股东户数-增减'] = pd.to_numeric(big_df['股东户数-增减'], errors="coerce")
104
- big_df['股东户数-增减比例'] = pd.to_numeric(big_df['股东户数-增减比例'], errors="coerce")
105
- big_df['区间涨跌幅'] = pd.to_numeric(big_df['区间涨跌幅'], errors="coerce")
106
- big_df['股东户数统计截止日-本次'] = pd.to_datetime(big_df['股东户数统计截止日-本次'], errors="coerce").dt.date
107
- big_df['股东户数统计截止日-上次'] = pd.to_datetime(big_df['股东户数统计截止日-上次'], errors="coerce").dt.date
108
- big_df['户均持股市值'] = pd.to_numeric(big_df['户均持股市值'], errors="coerce")
109
- big_df['户均持股数量'] = pd.to_numeric(big_df['户均持股数量'], errors="coerce")
110
- big_df['总市值'] = pd.to_numeric(big_df['总市值'], errors="coerce")
111
- big_df['总股本'] = pd.to_numeric(big_df['总股本'], errors="coerce")
112
- big_df['公告日期'] = pd.to_datetime(big_df['公告日期'], errors="coerce").dt.date
107
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
108
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
109
+ big_df["股东户数-本次"] = pd.to_numeric(big_df["股东户数-本次"], errors="coerce")
110
+ big_df["股东户数-上次"] = pd.to_numeric(big_df["股东户数-上次"], errors="coerce")
111
+ big_df["股东户数-增减"] = pd.to_numeric(big_df["股东户数-增减"], errors="coerce")
112
+ big_df["股东户数-增减比例"] = pd.to_numeric(
113
+ big_df["股东户数-增减比例"], errors="coerce"
114
+ )
115
+ big_df["区间涨跌幅"] = pd.to_numeric(big_df["区间涨跌幅"], errors="coerce")
116
+ big_df["股东户数统计截止日-本次"] = pd.to_datetime(
117
+ big_df["股东户数统计截止日-本次"], errors="coerce"
118
+ ).dt.date
119
+ big_df["股东户数统计截止日-上次"] = pd.to_datetime(
120
+ big_df["股东户数统计截止日-上次"], errors="coerce"
121
+ ).dt.date
122
+ big_df["户均持股市值"] = pd.to_numeric(big_df["户均持股市值"], errors="coerce")
123
+ big_df["户均持股数量"] = pd.to_numeric(big_df["户均持股数量"], errors="coerce")
124
+ big_df["总市值"] = pd.to_numeric(big_df["总市值"], errors="coerce")
125
+ big_df["总股本"] = pd.to_numeric(big_df["总股本"], errors="coerce")
126
+ big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
113
127
  return big_df
114
128
 
115
129
 
@@ -124,16 +138,18 @@ def stock_zh_a_gdhs_detail_em(symbol: str = "000001") -> pd.DataFrame:
124
138
  """
125
139
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
126
140
  params = {
127
- 'sortColumns': 'END_DATE',
128
- 'sortTypes': '-1',
129
- 'pageSize': '500',
130
- 'pageNumber': '1',
131
- 'reportName': 'RPT_HOLDERNUM_DET',
132
- 'columns': 'SECURITY_CODE,SECURITY_NAME_ABBR,CHANGE_SHARES,CHANGE_REASON,END_DATE,INTERVAL_CHRATE,AVG_MARKET_CAP,AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE',
133
- 'quoteColumns': 'f2,f3',
134
- 'filter': f'(SECURITY_CODE="{symbol}")',
135
- 'source': 'WEB',
136
- 'client': 'WEB',
141
+ "sortColumns": "END_DATE",
142
+ "sortTypes": "-1",
143
+ "pageSize": "500",
144
+ "pageNumber": "1",
145
+ "reportName": "RPT_HOLDERNUM_DET",
146
+ "columns": "SECURITY_CODE,SECURITY_NAME_ABBR,CHANGE_SHARES,CHANGE_REASON,END_DATE,INTERVAL_CHRATE,"
147
+ "AVG_MARKET_CAP,AVG_HOLD_NUM,TOTAL_MARKET_CAP,TOTAL_A_SHARES,HOLD_NOTICE_DATE,HOLDER_NUM,"
148
+ "PRE_HOLDER_NUM,HOLDER_NUM_CHANGE,HOLDER_NUM_RATIO,END_DATE,PRE_END_DATE",
149
+ "quoteColumns": "f2,f3",
150
+ "filter": f'(SECURITY_CODE="{symbol}")',
151
+ "source": "WEB",
152
+ "client": "WEB",
137
153
  }
138
154
  r = requests.get(url, params=params)
139
155
  data_json = r.json()
@@ -141,13 +157,15 @@ def stock_zh_a_gdhs_detail_em(symbol: str = "000001") -> pd.DataFrame:
141
157
  big_df = pd.DataFrame()
142
158
  tqdm = get_tqdm()
143
159
  for page_num in tqdm(range(1, total_page_num + 1), leave=False):
144
- params.update({
145
- "pageNumber": page_num,
146
- })
160
+ params.update(
161
+ {
162
+ "pageNumber": page_num,
163
+ }
164
+ )
147
165
  r = requests.get(url, params=params)
148
166
  data_json = r.json()
149
167
  temp_df = pd.DataFrame(data_json["result"]["data"])
150
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
168
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
151
169
  big_df.columns = [
152
170
  "代码",
153
171
  "名称",
@@ -187,24 +205,31 @@ def stock_zh_a_gdhs_detail_em(symbol: str = "000001") -> pd.DataFrame:
187
205
  "名称",
188
206
  ]
189
207
  ]
190
- big_df['区间涨跌幅'] = pd.to_numeric(big_df['区间涨跌幅'], errors="coerce")
191
- big_df['股东户数-本次'] = pd.to_numeric(big_df['股东户数-本次'], errors="coerce")
192
- big_df['股东户数-上次'] = pd.to_numeric(big_df['股东户数-上次'], errors="coerce")
193
- big_df['股东户数-增减'] = pd.to_numeric(big_df['股东户数-增减'], errors="coerce")
194
- big_df['股东户数-增减比例'] = pd.to_numeric(big_df['股东户数-增减比例'], errors="coerce")
195
- big_df['户均持股市值'] = pd.to_numeric(big_df['户均持股市值'], errors="coerce")
196
- big_df['户均持股数量'] = pd.to_numeric(big_df['户均持股数量'], errors="coerce")
197
- big_df['总市值'] = pd.to_numeric(big_df['总市值'], errors="coerce")
198
- big_df['总股本'] = pd.to_numeric(big_df['总股本'], errors="coerce")
199
- big_df['股本变动'] = pd.to_numeric(big_df['股本变动'], errors="coerce")
200
- big_df['股东户数统计截止日'] = pd.to_datetime(big_df['股东户数统计截止日'], errors="coerce").dt.date
201
- big_df['股东户数公告日期'] = pd.to_datetime(big_df['股东户数公告日期'], errors="coerce").dt.date
208
+ big_df["区间涨跌幅"] = pd.to_numeric(big_df["区间涨跌幅"], errors="coerce")
209
+ big_df["股东户数-本次"] = pd.to_numeric(big_df["股东户数-本次"], errors="coerce")
210
+ big_df["股东户数-上次"] = pd.to_numeric(big_df["股东户数-上次"], errors="coerce")
211
+ big_df["股东户数-增减"] = pd.to_numeric(big_df["股东户数-增减"], errors="coerce")
212
+ big_df["股东户数-增减比例"] = pd.to_numeric(
213
+ big_df["股东户数-增减比例"], errors="coerce"
214
+ )
215
+ big_df["户均持股市值"] = pd.to_numeric(big_df["户均持股市值"], errors="coerce")
216
+ big_df["户均持股数量"] = pd.to_numeric(big_df["户均持股数量"], errors="coerce")
217
+ big_df["总市值"] = pd.to_numeric(big_df["总市值"], errors="coerce")
218
+ big_df["总股本"] = pd.to_numeric(big_df["总股本"], errors="coerce")
219
+ big_df["股本变动"] = pd.to_numeric(big_df["股本变动"], errors="coerce")
220
+ big_df["股东户数统计截止日"] = pd.to_datetime(
221
+ big_df["股东户数统计截止日"], errors="coerce"
222
+ ).dt.date
223
+ big_df["股东户数公告日期"] = pd.to_datetime(
224
+ big_df["股东户数公告日期"], errors="coerce"
225
+ ).dt.date
226
+ big_df.sort_values(by=['股东户数统计截止日'], ignore_index=True, inplace=True)
202
227
  return big_df
203
228
 
204
229
 
205
230
  if __name__ == "__main__":
206
- stock_zh_a_gdhs_df = stock_zh_a_gdhs(symbol='20230930')
231
+ stock_zh_a_gdhs_df = stock_zh_a_gdhs(symbol="20230930")
207
232
  print(stock_zh_a_gdhs_df)
208
233
 
209
- stock_zh_a_gdhs_detail_em_df = stock_zh_a_gdhs_detail_em(symbol="000001")
234
+ stock_zh_a_gdhs_detail_em_df = stock_zh_a_gdhs_detail_em(symbol="002631")
210
235
  print(stock_zh_a_gdhs_detail_em_df)
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/1/28 11:03
4
+ Date: 2025/6/16 18:03
5
5
  Desc: 东方财富网-数据中心-特色数据-高管持股
6
6
  https://data.eastmoney.com/executive/gdzjc.html
7
7
  """
8
- from tqdm import tqdm
9
8
 
10
9
  import pandas as pd
11
10
  import requests
12
11
 
12
+ from akshare.utils.tqdm import get_tqdm
13
+
13
14
 
14
15
  def stock_ggcg_em(symbol: str = "全部") -> pd.DataFrame:
15
16
  """
@@ -39,11 +40,11 @@ def stock_ggcg_em(symbol: str = "全部") -> pd.DataFrame:
39
40
  "client": "WEB",
40
41
  "filter": symbol_map[symbol],
41
42
  }
42
-
43
43
  r = requests.get(url, params=params)
44
44
  data_json = r.json()
45
45
  total_page = data_json["result"]["pages"]
46
46
  big_df = pd.DataFrame()
47
+ tqdm = get_tqdm()
47
48
  for page in tqdm(range(1, total_page + 1), leave=False):
48
49
  params.update(
49
50
  {
@@ -53,7 +54,7 @@ def stock_ggcg_em(symbol: str = "全部") -> pd.DataFrame:
53
54
  r = requests.get(url, params=params)
54
55
  data_json = r.json()
55
56
  temp_df = pd.DataFrame(data_json["result"]["data"])
56
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
57
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
57
58
 
58
59
  big_df.columns = [
59
60
  "持股变动信息-变动数量",
@@ -105,12 +106,22 @@ def stock_ggcg_em(symbol: str = "全部") -> pd.DataFrame:
105
106
  big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
106
107
  big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
107
108
  big_df["持股变动信息-变动数量"] = pd.to_numeric(big_df["持股变动信息-变动数量"])
108
- big_df["持股变动信息-占总股本比例"] = pd.to_numeric(big_df["持股变动信息-占总股本比例"])
109
- big_df["持股变动信息-占流通股比例"] = pd.to_numeric(big_df["持股变动信息-占流通股比例"])
109
+ big_df["持股变动信息-占总股本比例"] = pd.to_numeric(
110
+ big_df["持股变动信息-占总股本比例"]
111
+ )
112
+ big_df["持股变动信息-占流通股比例"] = pd.to_numeric(
113
+ big_df["持股变动信息-占流通股比例"]
114
+ )
110
115
  big_df["变动后持股情况-持股总数"] = pd.to_numeric(big_df["变动后持股情况-持股总数"])
111
- big_df["变动后持股情况-占总股本比例"] = pd.to_numeric(big_df["变动后持股情况-占总股本比例"])
112
- big_df["变动后持股情况-持流通股数"] = pd.to_numeric(big_df["变动后持股情况-持流通股数"])
113
- big_df["变动后持股情况-占流通股比例"] = pd.to_numeric(big_df["变动后持股情况-占流通股比例"])
116
+ big_df["变动后持股情况-占总股本比例"] = pd.to_numeric(
117
+ big_df["变动后持股情况-占总股本比例"]
118
+ )
119
+ big_df["变动后持股情况-持流通股数"] = pd.to_numeric(
120
+ big_df["变动后持股情况-持流通股数"]
121
+ )
122
+ big_df["变动后持股情况-占流通股比例"] = pd.to_numeric(
123
+ big_df["变动后持股情况-占流通股比例"]
124
+ )
114
125
  big_df["变动开始日"] = pd.to_datetime(big_df["变动开始日"]).dt.date
115
126
  big_df["变动截止日"] = pd.to_datetime(big_df["变动截止日"]).dt.date
116
127
  big_df["公告日"] = pd.to_datetime(big_df["公告日"]).dt.date
@@ -118,5 +129,5 @@ def stock_ggcg_em(symbol: str = "全部") -> pd.DataFrame:
118
129
 
119
130
 
120
131
  if __name__ == "__main__":
121
- stock_ggcg_em_df = stock_ggcg_em(symbol="全部")
132
+ stock_ggcg_em_df = stock_ggcg_em(symbol="股东增持")
122
133
  print(stock_ggcg_em_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/2/9 11:40
4
+ Date: 2024/12/18 17:30
5
5
  Desc: 东方财富网-数据中心-特色数据-股权质押
6
6
  东方财富网-数据中心-特色数据-股权质押-股权质押市场概况: https://data.eastmoney.com/gpzy/marketProfile.aspx
7
7
  东方财富网-数据中心-特色数据-股权质押-上市公司质押比例: https://data.eastmoney.com/gpzy/pledgeRatio.aspx
@@ -10,11 +10,12 @@ Desc: 东方财富网-数据中心-特色数据-股权质押
10
10
  东方财富网-数据中心-特色数据-股权质押-质押机构分布统计-银行: https://data.eastmoney.com/gpzy/distributeStatistics.aspx
11
11
  东方财富网-数据中心-特色数据-股权质押-行业数据: https://data.eastmoney.com/gpzy/industryData.aspx
12
12
  """
13
+
13
14
  import math
14
15
 
15
16
  import pandas as pd
16
17
  import requests
17
- from tqdm import tqdm
18
+ from akshare.utils.tqdm import get_tqdm
18
19
 
19
20
 
20
21
  def stock_gpzy_profile_em() -> pd.DataFrame:
@@ -28,7 +29,7 @@ def stock_gpzy_profile_em() -> pd.DataFrame:
28
29
  params = {
29
30
  "sortColumns": "TRADE_DATE",
30
31
  "sortTypes": "-1",
31
- "pageSize": "5000",
32
+ "pageSize": "500",
32
33
  "pageNumber": "1",
33
34
  "reportName": "RPT_CSDC_STATISTICS",
34
35
  "columns": "ALL",
@@ -38,8 +39,16 @@ def stock_gpzy_profile_em() -> pd.DataFrame:
38
39
  }
39
40
  r = requests.get(url, params=params)
40
41
  data_json = r.json()
41
- temp_df = pd.DataFrame(data_json["result"]["data"])
42
- temp_df.columns = [
42
+ total_page = data_json["result"]["pages"]
43
+ big_df = pd.DataFrame()
44
+ for page in range(1, total_page + 1):
45
+ params.update({"pageNumber": page})
46
+ r = requests.get(url, params=params)
47
+ data_json = r.json()
48
+ temp_df = pd.DataFrame(data_json["result"]["data"])
49
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
50
+
51
+ big_df.columns = [
43
52
  "交易日期",
44
53
  "质押总股数",
45
54
  "质押总市值",
@@ -49,7 +58,7 @@ def stock_gpzy_profile_em() -> pd.DataFrame:
49
58
  "质押公司数量",
50
59
  "质押笔数",
51
60
  ]
52
- temp_df = temp_df[
61
+ big_df = big_df[
53
62
  [
54
63
  "交易日期",
55
64
  "A股质押总比例",
@@ -61,23 +70,22 @@ def stock_gpzy_profile_em() -> pd.DataFrame:
61
70
  "涨跌幅",
62
71
  ]
63
72
  ]
64
- temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"]).dt.date
65
- temp_df["A股质押总比例"] = pd.to_numeric(temp_df["A股质押总比例"])
66
- temp_df["质押公司数量"] = pd.to_numeric(temp_df["质押公司数量"])
67
- temp_df["质押笔数"] = pd.to_numeric(temp_df["质押笔数"])
68
- temp_df["质押总股数"] = pd.to_numeric(temp_df["质押总股数"])
69
- temp_df["质押总市值"] = pd.to_numeric(temp_df["质押总市值"])
70
- temp_df["沪深300指数"] = pd.to_numeric(temp_df["沪深300指数"])
71
- temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"])
72
-
73
- temp_df["A股质押总比例"] = temp_df["A股质押总比例"] / 100
74
-
75
- temp_df.sort_values(["交易日期"], inplace=True)
76
- temp_df.reset_index(inplace=True, drop=True)
77
- return temp_df
73
+ big_df["交易日期"] = pd.to_datetime(big_df["交易日期"], errors="coerce").dt.date
74
+ big_df["A股质押总比例"] = pd.to_numeric(big_df["A股质押总比例"], errors="coerce")
75
+ big_df["质押公司数量"] = pd.to_numeric(big_df["质押公司数量"], errors="coerce")
76
+ big_df["质押笔数"] = pd.to_numeric(big_df["质押笔数"], errors="coerce")
77
+ big_df["质押总股数"] = pd.to_numeric(big_df["质押总股数"], errors="coerce")
78
+ big_df["质押总市值"] = pd.to_numeric(big_df["质押总市值"], errors="coerce")
79
+ big_df["沪深300指数"] = pd.to_numeric(big_df["沪深300指数"], errors="coerce")
80
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
81
+ big_df["A股质押总比例"] = big_df["A股质押总比例"] / 100
82
+ big_df["A股质押总比例"] = pd.to_numeric(big_df["A股质押总比例"], errors="coerce")
83
+ big_df.sort_values(["交易日期"], inplace=True)
84
+ big_df.reset_index(inplace=True, drop=True)
85
+ return big_df
78
86
 
79
87
 
80
- def stock_gpzy_pledge_ratio_em(date: str = "20231020") -> pd.DataFrame:
88
+ def stock_gpzy_pledge_ratio_em(date: str = "20240906") -> pd.DataFrame:
81
89
  """
82
90
  东方财富网-数据中心-特色数据-股权质押-上市公司质押比例
83
91
  https://data.eastmoney.com/gpzy/pledgeRatio.aspx
@@ -104,12 +112,13 @@ def stock_gpzy_pledge_ratio_em(date: str = "20231020") -> pd.DataFrame:
104
112
  data_json = r.json()
105
113
  total_page = data_json["result"]["pages"]
106
114
  big_df = pd.DataFrame()
115
+ tqdm = get_tqdm()
107
116
  for page in tqdm(range(1, total_page + 1), leave=False):
108
117
  params.update({"pageNumber": page})
109
118
  r = requests.get(url, params=params)
110
119
  data_json = r.json()
111
120
  temp_df = pd.DataFrame(data_json["result"]["data"])
112
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
121
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
113
122
 
114
123
  big_df.reset_index(inplace=True)
115
124
  big_df["index"] = big_df.index + 1
@@ -191,6 +200,7 @@ def stock_gpzy_pledge_ratio_detail_em() -> pd.DataFrame:
191
200
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
192
201
  total_page = _get_page_num_gpzy_market_pledge_ratio_detail()
193
202
  big_df = pd.DataFrame()
203
+ tqdm = get_tqdm()
194
204
  for page in tqdm(range(1, total_page + 1), leave=False):
195
205
  params = {
196
206
  "sortColumns": "NOTICE_DATE",
@@ -278,7 +288,9 @@ def stock_gpzy_pledge_ratio_detail_em() -> pd.DataFrame:
278
288
  big_df["质押日收盘价"] = pd.to_numeric(big_df["质押日收盘价"], errors="coerce")
279
289
  big_df["预估平仓线"] = pd.to_numeric(big_df["预估平仓线"], errors="coerce")
280
290
  big_df["公告日期"] = pd.to_datetime(big_df["公告日期"], errors="coerce").dt.date
281
- big_df["质押开始日期"] = pd.to_datetime(big_df["质押开始日期"], errors="coerce").dt.date
291
+ big_df["质押开始日期"] = pd.to_datetime(
292
+ big_df["质押开始日期"], errors="coerce"
293
+ ).dt.date
282
294
  return big_df
283
295
 
284
296
 
@@ -336,12 +348,18 @@ def stock_gpzy_distribute_statistics_company_em() -> pd.DataFrame:
336
348
  "达到平仓线比例",
337
349
  ]
338
350
  ]
339
- temp_df["质押公司数量"] = pd.to_numeric(temp_df["质押公司数量"])
340
- temp_df["质押笔数"] = pd.to_numeric(temp_df["质押笔数"])
341
- temp_df["质押数量"] = pd.to_numeric(temp_df["质押数量"])
342
- temp_df["未达预警线比例"] = pd.to_numeric(temp_df["未达预警线比例"])
343
- temp_df["达到预警线未达平仓线比例"] = pd.to_numeric(temp_df["达到预警线未达平仓线比例"])
344
- temp_df["达到平仓线比例"] = pd.to_numeric(temp_df["达到平仓线比例"])
351
+ temp_df["质押公司数量"] = pd.to_numeric(temp_df["质押公司数量"], errors="coerce")
352
+ temp_df["质押笔数"] = pd.to_numeric(temp_df["质押笔数"], errors="coerce")
353
+ temp_df["质押数量"] = pd.to_numeric(temp_df["质押数量"], errors="coerce")
354
+ temp_df["未达预警线比例"] = pd.to_numeric(
355
+ temp_df["未达预警线比例"], errors="coerce"
356
+ )
357
+ temp_df["达到预警线未达平仓线比例"] = pd.to_numeric(
358
+ temp_df["达到预警线未达平仓线比例"], errors="coerce"
359
+ )
360
+ temp_df["达到平仓线比例"] = pd.to_numeric(
361
+ temp_df["达到平仓线比例"], errors="coerce"
362
+ )
345
363
  return temp_df
346
364
 
347
365
 
@@ -399,12 +417,18 @@ def stock_gpzy_distribute_statistics_bank_em() -> pd.DataFrame:
399
417
  "达到平仓线比例",
400
418
  ]
401
419
  ]
402
- temp_df["质押公司数量"] = pd.to_numeric(temp_df["质押公司数量"])
403
- temp_df["质押笔数"] = pd.to_numeric(temp_df["质押笔数"])
404
- temp_df["质押数量"] = pd.to_numeric(temp_df["质押数量"])
405
- temp_df["未达预警线比例"] = pd.to_numeric(temp_df["未达预警线比例"])
406
- temp_df["达到预警线未达平仓线比例"] = pd.to_numeric(temp_df["达到预警线未达平仓线比例"])
407
- temp_df["达到平仓线比例"] = pd.to_numeric(temp_df["达到平仓线比例"])
420
+ temp_df["质押公司数量"] = pd.to_numeric(temp_df["质押公司数量"], errors="coerce")
421
+ temp_df["质押笔数"] = pd.to_numeric(temp_df["质押笔数"], errors="coerce")
422
+ temp_df["质押数量"] = pd.to_numeric(temp_df["质押数量"], errors="coerce")
423
+ temp_df["未达预警线比例"] = pd.to_numeric(
424
+ temp_df["未达预警线比例"], errors="coerce"
425
+ )
426
+ temp_df["达到预警线未达平仓线比例"] = pd.to_numeric(
427
+ temp_df["达到预警线未达平仓线比例"], errors="coerce"
428
+ )
429
+ temp_df["达到平仓线比例"] = pd.to_numeric(
430
+ temp_df["达到平仓线比例"], errors="coerce"
431
+ )
408
432
  return temp_df
409
433
 
410
434
 
@@ -421,7 +445,8 @@ def stock_gpzy_industry_data_em() -> pd.DataFrame:
421
445
  "pageSize": "500",
422
446
  "pageNumber": "1",
423
447
  "reportName": "RPT_CSDC_INDUSTRY_STATISTICS",
424
- "columns": "INDUSTRY_CODE,INDUSTRY,TRADE_DATE,AVERAGE_PLEDGE_RATIO,ORG_NUM,PLEDGE_TOTAL_NUM,TOTAL_PLEDGE_SHARES,PLEDGE_TOTAL_MARKETCAP",
448
+ "columns": "INDUSTRY_CODE,INDUSTRY,TRADE_DATE,AVERAGE_PLEDGE_RATIO,ORG_NUM,PLEDGE_TOTAL_NUM,"
449
+ "TOTAL_PLEDGE_SHARES,PLEDGE_TOTAL_MARKETCAP",
425
450
  "quoteColumns": "",
426
451
  "source": "WEB",
427
452
  "client": "WEB",
@@ -443,16 +468,23 @@ def stock_gpzy_industry_data_em() -> pd.DataFrame:
443
468
  "最新质押市值",
444
469
  ]
445
470
  temp_df = temp_df[
446
- ["序号", "行业", "平均质押比例", "公司家数", "质押总笔数", "质押总股本", "最新质押市值", "统计时间"]
471
+ [
472
+ "序号",
473
+ "行业",
474
+ "平均质押比例",
475
+ "公司家数",
476
+ "质押总笔数",
477
+ "质押总股本",
478
+ "最新质押市值",
479
+ "统计时间",
480
+ ]
447
481
  ]
448
- temp_df["统计时间"] = pd.to_datetime(temp_df["统计时间"]).dt.date
449
-
450
- temp_df["平均质押比例"] = pd.to_numeric(temp_df["平均质押比例"])
451
- temp_df["公司家数"] = pd.to_numeric(temp_df["公司家数"])
452
- temp_df["质押总笔数"] = pd.to_numeric(temp_df["质押总笔数"])
453
- temp_df["质押总股本"] = pd.to_numeric(temp_df["质押总股本"])
454
- temp_df["最新质押市值"] = pd.to_numeric(temp_df["最新质押市值"])
455
-
482
+ temp_df["统计时间"] = pd.to_datetime(temp_df["统计时间"], errors="coerce").dt.date
483
+ temp_df["平均质押比例"] = pd.to_numeric(temp_df["平均质押比例"], errors="coerce")
484
+ temp_df["公司家数"] = pd.to_numeric(temp_df["公司家数"], errors="coerce")
485
+ temp_df["质押总笔数"] = pd.to_numeric(temp_df["质押总笔数"], errors="coerce")
486
+ temp_df["质押总股本"] = pd.to_numeric(temp_df["质押总股本"], errors="coerce")
487
+ temp_df["最新质押市值"] = pd.to_numeric(temp_df["最新质押市值"], errors="coerce")
456
488
  return temp_df
457
489
 
458
490
 
@@ -460,7 +492,7 @@ if __name__ == "__main__":
460
492
  stock_gpzy_profile_em_df = stock_gpzy_profile_em()
461
493
  print(stock_gpzy_profile_em_df)
462
494
 
463
- stock_em_gpzy_pledge_ratio_df = stock_gpzy_pledge_ratio_em(date="20230303")
495
+ stock_em_gpzy_pledge_ratio_df = stock_gpzy_pledge_ratio_em(date="20241220")
464
496
  print(stock_em_gpzy_pledge_ratio_df)
465
497
 
466
498
  stock_gpzy_pledge_ratio_detail_em_df = stock_gpzy_pledge_ratio_detail_em()
@@ -5,6 +5,7 @@ Date: 2023/4/10 16:05
5
5
  Desc: 乐咕乐股-股息率-A 股股息率
6
6
  https://legulegu.com/stockdata/guxilv
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -32,7 +33,7 @@ def stock_a_gxl_lg(symbol: str = "上证A股") -> pd.DataFrame:
32
33
  r = requests.get(
33
34
  url,
34
35
  params=params,
35
- **get_cookie_csrf(url="https://legulegu.com/stockdata/guxilv")
36
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/guxilv"),
36
37
  )
37
38
  data_json = r.json()
38
39
  temp_df = pd.DataFrame(data_json[symbol_map[symbol]])
@@ -63,7 +64,7 @@ def stock_hk_gxl_lg() -> pd.DataFrame:
63
64
  r = requests.get(
64
65
  url,
65
66
  params=params,
66
- **get_cookie_csrf(url="https://legulegu.com/stockdata/market/hk/dv/hsi")
67
+ **get_cookie_csrf(url="https://legulegu.com/stockdata/market/hk/dv/hsi"),
67
68
  )
68
69
  data_json = r.json()
69
70
  temp_df = pd.DataFrame(data_json)