akshare 1.14.49__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 (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2022/5/16 15:31
4
+ Date: 2025/1/13 22:30
5
5
  Desc: 东方财富网-数据中心-大宗交易-市场统计
6
- http://data.eastmoney.com/dzjy/dzjy_sctj.aspx
6
+ https://data.eastmoney.com/dzjy/
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -12,33 +13,34 @@ import requests
12
13
  def stock_dzjy_sctj() -> pd.DataFrame:
13
14
  """
14
15
  东方财富网-数据中心-大宗交易-市场统计
15
- http://data.eastmoney.com/dzjy/dzjy_sctj.aspx
16
+ https://data.eastmoney.com/dzjy/dzjy_sctj.html
16
17
  :return: 市场统计表
17
18
  :rtype: pandas.DataFrame
18
19
  """
19
20
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
20
21
  params = {
21
- 'sortColumns': 'TRADE_DATE',
22
- 'sortTypes': '-1',
23
- 'pageSize': '500',
24
- 'pageNumber': '1',
25
- 'reportName': 'PRT_BLOCKTRADE_MARKET_STA',
26
- 'columns': 'TRADE_DATE,SZ_INDEX,SZ_CHANGE_RATE,BLOCKTRADE_DEAL_AMT,PREMIUM_DEAL_AMT,PREMIUM_RATIO,DISCOUNT_DEAL_AMT,DISCOUNT_RATIO',
27
- 'source': 'WEB',
28
- 'client': 'WEB',
22
+ "sortColumns": "TRADE_DATE",
23
+ "sortTypes": "-1",
24
+ "pageSize": "500",
25
+ "pageNumber": "1",
26
+ "reportName": "PRT_BLOCKTRADE_MARKET_STA",
27
+ "columns": "TRADE_DATE,SZ_INDEX,SZ_CHANGE_RATE,BLOCKTRADE_DEAL_AMT,PREMIUM_DEAL_AMT,"
28
+ "PREMIUM_RATIO,DISCOUNT_DEAL_AMT,DISCOUNT_RATIO",
29
+ "source": "WEB",
30
+ "client": "WEB",
29
31
  }
30
32
  r = requests.get(url, params=params)
31
33
  data_json = r.json()
32
- total_page = int(data_json['result']["pages"])
34
+ total_page = int(data_json["result"]["pages"])
33
35
  big_df = pd.DataFrame()
34
- for page in range(1, total_page+1):
35
- params.update({'pageNumber': page})
36
+ for page in range(1, total_page + 1):
37
+ params.update({"pageNumber": page})
36
38
  r = requests.get(url, params=params)
37
39
  data_json = r.json()
38
- temp_df = pd.DataFrame(data_json['result']["data"])
39
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
40
+ temp_df = pd.DataFrame(data_json["result"]["data"])
41
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
40
42
  big_df.reset_index(inplace=True)
41
- big_df['index'] = big_df['index'] + 1
43
+ big_df["index"] = big_df["index"] + 1
42
44
  big_df.columns = [
43
45
  "序号",
44
46
  "交易日期",
@@ -50,21 +52,29 @@ def stock_dzjy_sctj() -> pd.DataFrame:
50
52
  "折价成交总额",
51
53
  "折价成交总额占比",
52
54
  ]
53
- big_df["交易日期"] = pd.to_datetime(big_df["交易日期"]).dt.date
54
- big_df["上证指数"] = pd.to_numeric(big_df["上证指数"])
55
- big_df["上证指数涨跌幅"] = pd.to_numeric(big_df["上证指数涨跌幅"])
56
- big_df["大宗交易成交总额"] = pd.to_numeric(big_df["大宗交易成交总额"])
57
- big_df["溢价成交总额"] = pd.to_numeric(big_df["溢价成交总额"])
58
- big_df["溢价成交总额占比"] = pd.to_numeric(big_df["溢价成交总额占比"])
59
- big_df["折价成交总额"] = pd.to_numeric(big_df["折价成交总额"])
60
- big_df["折价成交总额占比"] = pd.to_numeric(big_df["折价成交总额占比"])
55
+ big_df["交易日期"] = pd.to_datetime(big_df["交易日期"], errors="coerce").dt.date
56
+ big_df["上证指数"] = pd.to_numeric(big_df["上证指数"], errors="coerce")
57
+ big_df["上证指数涨跌幅"] = pd.to_numeric(big_df["上证指数涨跌幅"], errors="coerce")
58
+ big_df["大宗交易成交总额"] = pd.to_numeric(
59
+ big_df["大宗交易成交总额"], errors="coerce"
60
+ )
61
+ big_df["溢价成交总额"] = pd.to_numeric(big_df["溢价成交总额"], errors="coerce")
62
+ big_df["溢价成交总额占比"] = pd.to_numeric(
63
+ big_df["溢价成交总额占比"], errors="coerce"
64
+ )
65
+ big_df["折价成交总额"] = pd.to_numeric(big_df["折价成交总额"], errors="coerce")
66
+ big_df["折价成交总额占比"] = pd.to_numeric(
67
+ big_df["折价成交总额占比"], errors="coerce"
68
+ )
61
69
  return big_df
62
70
 
63
71
 
64
- def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_date: str = '20220104') -> pd.DataFrame:
72
+ def stock_dzjy_mrmx(
73
+ symbol: str = "基金", start_date: str = "20220104", end_date: str = "20220104"
74
+ ) -> pd.DataFrame:
65
75
  """
66
76
  东方财富网-数据中心-大宗交易-每日明细
67
- http://data.eastmoney.com/dzjy/dzjy_mrmxa.aspx
77
+ https://data.eastmoney.com/dzjy/dzjy_mrmx.html
68
78
  :param symbol: choice of {'A股', 'B股', '基金', '债券'}
69
79
  :type symbol: str
70
80
  :param start_date: 开始日期
@@ -75,31 +85,35 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
75
85
  :rtype: pandas.DataFrame
76
86
  """
77
87
  symbol_map = {
78
- 'A股': '1',
79
- 'B股': '2',
80
- '基金': '3',
81
- '债券': '4',
88
+ "A股": "1",
89
+ "B股": "2",
90
+ "基金": "3",
91
+ "债券": "4",
82
92
  }
83
93
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
84
94
  params = {
85
- 'sortColumns': 'SECURITY_CODE',
86
- 'sortTypes': '1',
87
- 'pageSize': '5000',
88
- 'pageNumber': '1',
89
- 'reportName': 'RPT_DATA_BLOCKTRADE',
90
- 'columns': 'TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,CLOSE_PRICE,DEAL_PRICE,PREMIUM_RATIO,DEAL_VOLUME,DEAL_AMT,TURNOVER_RATE,BUYER_NAME,SELLER_NAME,CHANGE_RATE_1DAYS,CHANGE_RATE_5DAYS,CHANGE_RATE_10DAYS,CHANGE_RATE_20DAYS,BUYER_CODE,SELLER_CODE',
91
- 'source': 'WEB',
92
- 'client': 'WEB',
93
- 'filter': f"""(SECURITY_TYPE_WEB={symbol_map[symbol]})(TRADE_DATE>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<='{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')"""
95
+ "sortColumns": "SECURITY_CODE",
96
+ "sortTypes": "1",
97
+ "pageSize": "5000",
98
+ "pageNumber": "1",
99
+ "reportName": "RPT_DATA_BLOCKTRADE",
100
+ "columns": "TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,CLOSE_PRICE,"
101
+ "DEAL_PRICE,PREMIUM_RATIO,DEAL_VOLUME,DEAL_AMT,TURNOVER_RATE,BUYER_NAME,SELLER_NAME,"
102
+ "CHANGE_RATE_1DAYS,CHANGE_RATE_5DAYS,CHANGE_RATE_10DAYS,CHANGE_RATE_20DAYS,BUYER_CODE,SELLER_CODE",
103
+ "source": "WEB",
104
+ "client": "WEB",
105
+ "filter": f"""(SECURITY_TYPE_WEB={symbol_map[symbol]})(TRADE_DATE>=
106
+ '{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<=
107
+ '{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')""",
94
108
  }
95
109
  r = requests.get(url, params=params)
96
110
  data_json = r.json()
97
- if not data_json['result']["data"]:
111
+ if not data_json["result"]["data"]:
98
112
  return pd.DataFrame()
99
- temp_df = pd.DataFrame(data_json['result']["data"])
113
+ temp_df = pd.DataFrame(data_json["result"]["data"])
100
114
  temp_df.reset_index(inplace=True)
101
- temp_df['index'] = temp_df.index + 1
102
- if symbol in {'A股'}:
115
+ temp_df["index"] = temp_df.index + 1
116
+ if symbol in {"A股"}:
103
117
  temp_df.columns = [
104
118
  "序号",
105
119
  "交易日期",
@@ -122,30 +136,36 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
122
136
  "_",
123
137
  "_",
124
138
  ]
125
- temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"]).dt.date
126
- temp_df = temp_df[[
127
- "序号",
128
- "交易日期",
129
- "证券代码",
130
- "证券简称",
131
- "涨跌幅",
132
- "收盘价",
133
- "成交价",
134
- "折溢率",
135
- "成交量",
136
- "成交额",
137
- "成交额/流通市值",
138
- "买方营业部",
139
- "卖方营业部",
140
- ]]
141
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'])
142
- temp_df['收盘价'] = pd.to_numeric(temp_df['收盘价'])
143
- temp_df['成交价'] = pd.to_numeric(temp_df['成交价'])
144
- temp_df['折溢率'] = pd.to_numeric(temp_df['折溢率'])
145
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'])
146
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'])
147
- temp_df['成交额/流通市值'] = pd.to_numeric(temp_df['成交额/流通市值'])
148
- if symbol in {'B股', '基金', '债券'}:
139
+ temp_df["交易日期"] = pd.to_datetime(
140
+ temp_df["交易日期"], errors="coerce"
141
+ ).dt.date
142
+ temp_df = temp_df[
143
+ [
144
+ "序号",
145
+ "交易日期",
146
+ "证券代码",
147
+ "证券简称",
148
+ "涨跌幅",
149
+ "收盘价",
150
+ "成交价",
151
+ "折溢率",
152
+ "成交量",
153
+ "成交额",
154
+ "成交额/流通市值",
155
+ "买方营业部",
156
+ "卖方营业部",
157
+ ]
158
+ ]
159
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
160
+ temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
161
+ temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
162
+ temp_df["折溢率"] = pd.to_numeric(temp_df["折溢率"], errors="coerce")
163
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
164
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
165
+ temp_df["成交额/流通市值"] = pd.to_numeric(
166
+ temp_df["成交额/流通市值"], errors="coerce"
167
+ )
168
+ if symbol in {"B股", "基金", "债券"}:
149
169
  temp_df.columns = [
150
170
  "序号",
151
171
  "交易日期",
@@ -168,28 +188,34 @@ def stock_dzjy_mrmx(symbol: str = '基金', start_date: str = '20220104', end_da
168
188
  "_",
169
189
  "_",
170
190
  ]
171
- temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"]).dt.date
172
- temp_df = temp_df[[
173
- "序号",
174
- "交易日期",
175
- "证券代码",
176
- "证券简称",
177
- "成交价",
178
- "成交量",
179
- "成交额",
180
- "买方营业部",
181
- "卖方营业部",
182
- ]]
183
- temp_df['成交价'] = pd.to_numeric(temp_df['成交价'])
184
- temp_df['成交量'] = pd.to_numeric(temp_df['成交量'])
185
- temp_df['成交额'] = pd.to_numeric(temp_df['成交额'])
191
+ temp_df["交易日期"] = pd.to_datetime(
192
+ temp_df["交易日期"], errors="coerce"
193
+ ).dt.date
194
+ temp_df = temp_df[
195
+ [
196
+ "序号",
197
+ "交易日期",
198
+ "证券代码",
199
+ "证券简称",
200
+ "成交价",
201
+ "成交量",
202
+ "成交额",
203
+ "买方营业部",
204
+ "卖方营业部",
205
+ ]
206
+ ]
207
+ temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
208
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
209
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
186
210
  return temp_df
187
211
 
188
212
 
189
- def stock_dzjy_mrtj(start_date: str = '20220105', end_date: str = '20220105') -> pd.DataFrame:
213
+ def stock_dzjy_mrtj(
214
+ start_date: str = "20220105", end_date: str = "20220105"
215
+ ) -> pd.DataFrame:
190
216
  """
191
217
  东方财富网-数据中心-大宗交易-每日统计
192
- http://data.eastmoney.com/dzjy/dzjy_mrtj.aspx
218
+ https://data.eastmoney.com/dzjy/dzjy_mrtj.html
193
219
  :param start_date: 开始日期
194
220
  :type start_date: str
195
221
  :param end_date: 结束日期
@@ -199,21 +225,24 @@ def stock_dzjy_mrtj(start_date: str = '20220105', end_date: str = '20220105') ->
199
225
  """
200
226
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
201
227
  params = {
202
- 'sortColumns': 'TURNOVERRATE',
203
- 'sortTypes': '-1',
204
- 'pageSize': '5000',
205
- 'pageNumber': '1',
206
- 'reportName': 'RPT_BLOCKTRADE_STA',
207
- 'columns': 'TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,CLOSE_PRICE,AVERAGE_PRICE,PREMIUM_RATIO,DEAL_NUM,VOLUME,DEAL_AMT,TURNOVERRATE,D1_CLOSE_ADJCHRATE,D5_CLOSE_ADJCHRATE,D10_CLOSE_ADJCHRATE,D20_CLOSE_ADJCHRATE',
208
- 'source': 'WEB',
209
- 'client': 'WEB',
210
- 'filter': f"(TRADE_DATE>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<='{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')"
228
+ "sortColumns": "TURNOVERRATE",
229
+ "sortTypes": "-1",
230
+ "pageSize": "5000",
231
+ "pageNumber": "1",
232
+ "reportName": "RPT_BLOCKTRADE_STA",
233
+ "columns": "TRADE_DATE,SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CHANGE_RATE,"
234
+ "CLOSE_PRICE,AVERAGE_PRICE,PREMIUM_RATIO,DEAL_NUM,VOLUME,DEAL_AMT,"
235
+ "TURNOVERRATE,D1_CLOSE_ADJCHRATE,D5_CLOSE_ADJCHRATE,D10_CLOSE_ADJCHRATE,D20_CLOSE_ADJCHRATE",
236
+ "source": "WEB",
237
+ "client": "WEB",
238
+ "filter": f"(TRADE_DATE>='{'-'.join([start_date[:4], start_date[4:6], start_date[6:]])}')(TRADE_DATE<="
239
+ f"'{'-'.join([end_date[:4], end_date[4:6], end_date[6:]])}')",
211
240
  }
212
241
  r = requests.get(url, params=params)
213
242
  data_json = r.json()
214
- temp_df = pd.DataFrame(data_json['result']["data"])
243
+ temp_df = pd.DataFrame(data_json["result"]["data"])
215
244
  temp_df.reset_index(inplace=True)
216
- temp_df['index'] = temp_df.index + 1
245
+ temp_df["index"] = temp_df.index + 1
217
246
  temp_df.columns = [
218
247
  "序号",
219
248
  "交易日期",
@@ -233,71 +262,77 @@ def stock_dzjy_mrtj(start_date: str = '20220105', end_date: str = '20220105') ->
233
262
  "_",
234
263
  "_",
235
264
  ]
236
- temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"]).dt.date
237
- temp_df = temp_df[[
238
- "序号",
239
- "交易日期",
240
- "证券代码",
241
- "证券简称",
242
- "涨跌幅",
243
- "收盘价",
244
- "成交价",
245
- "折溢率",
246
- "成交笔数",
247
- "成交总量",
248
- "成交总额",
249
- "成交总额/流通市值",
250
- ]]
251
- temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'])
252
- temp_df['收盘价'] = pd.to_numeric(temp_df['收盘价'])
253
- temp_df['成交价'] = pd.to_numeric(temp_df['成交价'])
254
- temp_df['折溢率'] = pd.to_numeric(temp_df['折溢率'])
255
- temp_df['成交笔数'] = pd.to_numeric(temp_df['成交笔数'])
256
- temp_df['成交总量'] = pd.to_numeric(temp_df['成交总量'])
257
- temp_df['成交总额'] = pd.to_numeric(temp_df['成交总额'])
258
- temp_df['成交总额/流通市值'] = pd.to_numeric(temp_df['成交总额/流通市值'])
265
+ temp_df["交易日期"] = pd.to_datetime(temp_df["交易日期"], errors="coerce").dt.date
266
+ temp_df = temp_df[
267
+ [
268
+ "序号",
269
+ "交易日期",
270
+ "证券代码",
271
+ "证券简称",
272
+ "涨跌幅",
273
+ "收盘价",
274
+ "成交价",
275
+ "折溢率",
276
+ "成交笔数",
277
+ "成交总量",
278
+ "成交总额",
279
+ "成交总额/流通市值",
280
+ ]
281
+ ]
282
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
283
+ temp_df["收盘价"] = pd.to_numeric(temp_df["收盘价"], errors="coerce")
284
+ temp_df["成交价"] = pd.to_numeric(temp_df["成交价"], errors="coerce")
285
+ temp_df["折溢率"] = pd.to_numeric(temp_df["折溢率"], errors="coerce")
286
+ temp_df["成交笔数"] = pd.to_numeric(temp_df["成交笔数"], errors="coerce")
287
+ temp_df["成交总量"] = pd.to_numeric(temp_df["成交总量"], errors="coerce")
288
+ temp_df["成交总额"] = pd.to_numeric(temp_df["成交总额"], errors="coerce")
289
+ temp_df["成交总额/流通市值"] = pd.to_numeric(
290
+ temp_df["成交总额/流通市值"], errors="coerce"
291
+ )
259
292
  return temp_df
260
293
 
261
294
 
262
- def stock_dzjy_hygtj(symbol: str = '近三月') -> pd.DataFrame:
295
+ def stock_dzjy_hygtj(symbol: str = "近三月") -> pd.DataFrame:
263
296
  """
264
297
  东方财富网-数据中心-大宗交易-活跃 A 股统计
265
- http://data.eastmoney.com/dzjy/dzjy_hygtj.aspx
298
+ https://data.eastmoney.com/dzjy/dzjy_hygtj.html
266
299
  :param symbol: choice of {'近一月', '近三月', '近六月', '近一年'}
267
300
  :type symbol: str
268
301
  :return: 活跃 A 股统计
269
302
  :rtype: pandas.DataFrame
270
303
  """
271
304
  period_map = {
272
- '近一月': '1',
273
- '近三月': '3',
274
- '近六月': '6',
275
- '近一年': '12',
305
+ "近一月": "1",
306
+ "近三月": "3",
307
+ "近六月": "6",
308
+ "近一年": "12",
276
309
  }
277
310
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
278
311
  params = {
279
- 'sortColumns': 'DEAL_NUM,SECURITY_CODE',
280
- 'sortTypes': '-1,-1',
281
- 'pageSize': '5000',
282
- 'pageNumber': '1',
283
- 'reportName': 'RPT_BLOCKTRADE_ACSTA',
284
- 'columns': 'SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CLOSE_PRICE,CHANGE_RATE,TRADE_DATE,DEAL_AMT,PREMIUM_RATIO,SUM_TURNOVERRATE,DEAL_NUM,PREMIUM_TIMES,DISCOUNT_TIMES,D1_AVG_ADJCHRATE,D5_AVG_ADJCHRATE,D10_AVG_ADJCHRATE,D20_AVG_ADJCHRATE,DATE_TYPE_CODE',
285
- 'source': 'WEB',
286
- 'client': 'WEB',
287
- 'filter': f'(DATE_TYPE_CODE={period_map[symbol]})',
312
+ "sortColumns": "DEAL_NUM,SECURITY_CODE",
313
+ "sortTypes": "-1,-1",
314
+ "pageSize": "5000",
315
+ "pageNumber": "1",
316
+ "reportName": "RPT_BLOCKTRADE_ACSTA",
317
+ "columns": "SECURITY_CODE,SECUCODE,SECURITY_NAME_ABBR,CLOSE_PRICE,CHANGE_RATE,TRADE_DATE,"
318
+ "DEAL_AMT,PREMIUM_RATIO,SUM_TURNOVERRATE,DEAL_NUM,PREMIUM_TIMES,DISCOUNT_TIMES,"
319
+ "D1_AVG_ADJCHRATE,D5_AVG_ADJCHRATE,D10_AVG_ADJCHRATE,D20_AVG_ADJCHRATE,DATE_TYPE_CODE",
320
+ "source": "WEB",
321
+ "client": "WEB",
322
+ "filter": f"(DATE_TYPE_CODE={period_map[symbol]})",
288
323
  }
289
324
  r = requests.get(url, params=params)
290
325
  data_json = r.json()
291
- total_page = data_json['result']["pages"]
326
+ total_page = data_json["result"]["pages"]
292
327
  big_df = pd.DataFrame()
293
- for page in range(1, int(total_page)+1):
328
+ for page in range(1, int(total_page) + 1):
294
329
  params.update({"pageNumber": page})
295
330
  r = requests.get(url, params=params)
296
331
  data_json = r.json()
297
- temp_df = pd.DataFrame(data_json['result']["data"])
298
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
332
+ temp_df = pd.DataFrame(data_json["result"]["data"])
333
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
299
334
  big_df.reset_index(inplace=True)
300
- big_df['index'] = big_df.index + 1
335
+ big_df["index"] = big_df.index + 1
301
336
  big_df.columns = [
302
337
  "序号",
303
338
  "证券代码",
@@ -318,41 +353,53 @@ def stock_dzjy_hygtj(symbol: str = '近三月') -> pd.DataFrame:
318
353
  "上榜日后平均涨跌幅-20日",
319
354
  "_",
320
355
  ]
321
- big_df = big_df[[
322
- "序号",
323
- "证券代码",
324
- "证券简称",
325
- "最新价",
326
- "涨跌幅",
327
- "最近上榜日",
328
- "上榜次数-总计",
329
- "上榜次数-溢价",
330
- "上榜次数-折价",
331
- "总成交额",
332
- "折溢率",
333
- "成交总额/流通市值",
334
- "上榜日后平均涨跌幅-1日",
335
- "上榜日后平均涨跌幅-5日",
336
- "上榜日后平均涨跌幅-10日",
337
- "上榜日后平均涨跌幅-20日",
338
- ]]
339
- big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"]).dt.date
340
- big_df["最新价"] = pd.to_numeric(big_df["最新价"])
341
- big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
342
- big_df["上榜次数-总计"] = pd.to_numeric(big_df["上榜次数-总计"])
343
- big_df["上榜次数-溢价"] = pd.to_numeric(big_df["上榜次数-溢价"])
344
- big_df["上榜次数-折价"] = pd.to_numeric(big_df["上榜次数-折价"])
345
- big_df["总成交额"] = pd.to_numeric(big_df["总成交额"])
346
- big_df["折溢率"] = pd.to_numeric(big_df["折溢率"])
347
- big_df["成交总额/流通市值"] = pd.to_numeric(big_df["成交总额/流通市值"])
348
- big_df["上榜日后平均涨跌幅-1日"] = pd.to_numeric(big_df["上榜日后平均涨跌幅-1日"])
349
- big_df["上榜日后平均涨跌幅-5日"] = pd.to_numeric(big_df["上榜日后平均涨跌幅-5日"])
350
- big_df["上榜日后平均涨跌幅-10日"] = pd.to_numeric(big_df["上榜日后平均涨跌幅-10日"])
351
- big_df["上榜日后平均涨跌幅-20日"] = pd.to_numeric(big_df["上榜日后平均涨跌幅-20日"])
356
+ big_df = big_df[
357
+ [
358
+ "序号",
359
+ "证券代码",
360
+ "证券简称",
361
+ "最新价",
362
+ "涨跌幅",
363
+ "最近上榜日",
364
+ "上榜次数-总计",
365
+ "上榜次数-溢价",
366
+ "上榜次数-折价",
367
+ "总成交额",
368
+ "折溢率",
369
+ "成交总额/流通市值",
370
+ "上榜日后平均涨跌幅-1日",
371
+ "上榜日后平均涨跌幅-5日",
372
+ "上榜日后平均涨跌幅-10日",
373
+ "上榜日后平均涨跌幅-20日",
374
+ ]
375
+ ]
376
+ big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"], errors="coerce").dt.date
377
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"], errors="coerce")
378
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"], errors="coerce")
379
+ big_df["上榜次数-总计"] = pd.to_numeric(big_df["上榜次数-总计"], errors="coerce")
380
+ big_df["上榜次数-溢价"] = pd.to_numeric(big_df["上榜次数-溢价"], errors="coerce")
381
+ big_df["上榜次数-折价"] = pd.to_numeric(big_df["上榜次数-折价"], errors="coerce")
382
+ big_df["总成交额"] = pd.to_numeric(big_df["总成交额"], errors="coerce")
383
+ big_df["折溢率"] = pd.to_numeric(big_df["折溢率"], errors="coerce")
384
+ big_df["成交总额/流通市值"] = pd.to_numeric(
385
+ big_df["成交总额/流通市值"], errors="coerce"
386
+ )
387
+ big_df["上榜日后平均涨跌幅-1日"] = pd.to_numeric(
388
+ big_df["上榜日后平均涨跌幅-1日"], errors="coerce"
389
+ )
390
+ big_df["上榜日后平均涨跌幅-5日"] = pd.to_numeric(
391
+ big_df["上榜日后平均涨跌幅-5日"], errors="coerce"
392
+ )
393
+ big_df["上榜日后平均涨跌幅-10日"] = pd.to_numeric(
394
+ big_df["上榜日后平均涨跌幅-10日"], errors="coerce"
395
+ )
396
+ big_df["上榜日后平均涨跌幅-20日"] = pd.to_numeric(
397
+ big_df["上榜日后平均涨跌幅-20日"], errors="coerce"
398
+ )
352
399
  return big_df
353
400
 
354
401
 
355
- def stock_dzjy_hyyybtj(symbol: str = '近3日') -> pd.DataFrame:
402
+ def stock_dzjy_hyyybtj(symbol: str = "近3日") -> pd.DataFrame:
356
403
  """
357
404
  东方财富网-数据中心-大宗交易-活跃营业部统计
358
405
  https://data.eastmoney.com/dzjy/dzjy_hyyybtj.html
@@ -362,36 +409,37 @@ def stock_dzjy_hyyybtj(symbol: str = '近3日') -> pd.DataFrame:
362
409
  :rtype: pandas.DataFrame
363
410
  """
364
411
  period_map = {
365
- '当前交易日': '1',
366
- '近3日': '3',
367
- '近5日': '5',
368
- '近10日': '10',
369
- '近30日': '30',
412
+ "当前交易日": "1",
413
+ "近3日": "3",
414
+ "近5日": "5",
415
+ "近10日": "10",
416
+ "近30日": "30",
370
417
  }
371
418
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
372
419
  params = {
373
- 'sortColumns': 'BUYER_NUM,TOTAL_BUYAMT',
374
- 'sortTypes': '-1,-1',
375
- 'pageSize': '5000',
376
- 'pageNumber': '1',
377
- 'reportName': 'RPT_BLOCKTRADE_OPERATEDEPTSTATISTICS',
378
- 'columns': 'OPERATEDEPT_CODE,OPERATEDEPT_NAME,ONLIST_DATE,STOCK_DETAILS,BUYER_NUM,SELLER_NUM,TOTAL_BUYAMT,TOTAL_SELLAMT,TOTAL_NETAMT,N_DATE',
379
- 'source': 'WEB',
380
- 'client': 'WEB',
381
- 'filter': f'(N_DATE=-{period_map[symbol]})',
420
+ "sortColumns": "BUYER_NUM,TOTAL_BUYAMT",
421
+ "sortTypes": "-1,-1",
422
+ "pageSize": "5000",
423
+ "pageNumber": "1",
424
+ "reportName": "RPT_BLOCKTRADE_OPERATEDEPTSTATISTICS",
425
+ "columns": "OPERATEDEPT_CODE,OPERATEDEPT_NAME,ONLIST_DATE,STOCK_DETAILS,"
426
+ "BUYER_NUM,SELLER_NUM,TOTAL_BUYAMT,TOTAL_SELLAMT,TOTAL_NETAMT,N_DATE",
427
+ "source": "WEB",
428
+ "client": "WEB",
429
+ "filter": f"(N_DATE=-{period_map[symbol]})",
382
430
  }
383
431
  r = requests.get(url, params=params)
384
432
  data_json = r.json()
385
- total_page = data_json['result']["pages"]
433
+ total_page = data_json["result"]["pages"]
386
434
  big_df = pd.DataFrame()
387
- for page in range(1, int(total_page)+1):
435
+ for page in range(1, int(total_page) + 1):
388
436
  params.update({"pageNumber": page})
389
437
  r = requests.get(url, params=params)
390
438
  data_json = r.json()
391
- temp_df = pd.DataFrame(data_json['result']["data"])
392
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
439
+ temp_df = pd.DataFrame(data_json["result"]["data"])
440
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
393
441
  big_df.reset_index(inplace=True)
394
- big_df['index'] = big_df.index + 1
442
+ big_df["index"] = big_df.index + 1
395
443
  big_df.columns = [
396
444
  "序号",
397
445
  "_",
@@ -405,66 +453,77 @@ def stock_dzjy_hyyybtj(symbol: str = '近3日') -> pd.DataFrame:
405
453
  "成交金额统计-净买入额",
406
454
  "_",
407
455
  ]
408
- big_df = big_df[[
409
- "序号",
410
- "最近上榜日",
411
- "营业部名称",
412
- "次数总计-买入",
413
- "次数总计-卖出",
414
- "成交金额统计-买入",
415
- "成交金额统计-卖出",
416
- "成交金额统计-净买入额",
417
- "买入的股票",
418
- ]]
419
- big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"]).dt.date
420
- big_df["次数总计-买入"] = pd.to_numeric(big_df["次数总计-买入"])
421
- big_df["次数总计-卖出"] = pd.to_numeric(big_df["次数总计-卖出"])
422
- big_df["成交金额统计-买入"] = pd.to_numeric(big_df["成交金额统计-买入"])
423
- big_df["成交金额统计-卖出"] = pd.to_numeric(big_df["成交金额统计-卖出"])
424
- big_df["成交金额统计-净买入额"] = pd.to_numeric(big_df["成交金额统计-净买入额"])
456
+ big_df = big_df[
457
+ [
458
+ "序号",
459
+ "最近上榜日",
460
+ "营业部名称",
461
+ "次数总计-买入",
462
+ "次数总计-卖出",
463
+ "成交金额统计-买入",
464
+ "成交金额统计-卖出",
465
+ "成交金额统计-净买入额",
466
+ "买入的股票",
467
+ ]
468
+ ]
469
+ big_df["最近上榜日"] = pd.to_datetime(big_df["最近上榜日"], errors="coerce").dt.date
470
+ big_df["次数总计-买入"] = pd.to_numeric(big_df["次数总计-买入"], errors="coerce")
471
+ big_df["次数总计-卖出"] = pd.to_numeric(big_df["次数总计-卖出"], errors="coerce")
472
+ big_df["成交金额统计-买入"] = pd.to_numeric(
473
+ big_df["成交金额统计-买入"], errors="coerce"
474
+ )
475
+ big_df["成交金额统计-卖出"] = pd.to_numeric(
476
+ big_df["成交金额统计-卖出"], errors="coerce"
477
+ )
478
+ big_df["成交金额统计-净买入额"] = pd.to_numeric(
479
+ big_df["成交金额统计-净买入额"], errors="coerce"
480
+ )
425
481
  return big_df
426
482
 
427
483
 
428
- def stock_dzjy_yybph(symbol: str = '近三月') -> pd.DataFrame:
484
+ def stock_dzjy_yybph(symbol: str = "近三月") -> pd.DataFrame:
429
485
  """
430
486
  东方财富网-数据中心-大宗交易-营业部排行
431
- http://data.eastmoney.com/dzjy/dzjy_yybph.aspx
487
+ https://data.eastmoney.com/dzjy/dzjy_yybph.html
432
488
  :param symbol: choice of {'近一月', '近三月', '近六月', '近一年'}
433
489
  :type symbol: str
434
490
  :return: 营业部排行
435
491
  :rtype: pandas.DataFrame
436
492
  """
437
493
  period_map = {
438
- '近一月': '30',
439
- '近三月': '90',
440
- '近六月': '120',
441
- '近一年': '360',
494
+ "近一月": "30",
495
+ "近三月": "90",
496
+ "近六月": "180",
497
+ "近一年": "360",
442
498
  }
443
499
  url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
444
500
  params = {
445
- 'sortColumns': 'D5_BUYER_NUM,D1_AVERAGE_INCREASE',
446
- 'sortTypes': '-1,-1',
447
- 'pageSize': '5000',
448
- 'pageNumber': '1',
449
- 'reportName': 'RPT_BLOCKTRADE_OPERATEDEPT_RANK',
450
- 'columns': 'OPERATEDEPT_CODE,OPERATEDEPT_NAME,D1_BUYER_NUM,D1_AVERAGE_INCREASE,D1_RISE_PROBABILITY,D5_BUYER_NUM,D5_AVERAGE_INCREASE,D5_RISE_PROBABILITY,D10_BUYER_NUM,D10_AVERAGE_INCREASE,D10_RISE_PROBABILITY,D20_BUYER_NUM,D20_AVERAGE_INCREASE,D20_RISE_PROBABILITY,N_DATE,RELATED_ORG_CODE',
451
- 'source': 'WEB',
452
- 'client': 'WEB',
453
- 'filter': f'(N_DATE=-{period_map[symbol]})',
501
+ "sortColumns": "D5_BUYER_NUM,D1_AVERAGE_INCREASE",
502
+ "sortTypes": "-1,-1",
503
+ "pageSize": "5000",
504
+ "pageNumber": "1",
505
+ "reportName": "RPT_BLOCKTRADE_OPERATEDEPT_RANK",
506
+ "columns": "OPERATEDEPT_CODE,OPERATEDEPT_NAME,D1_BUYER_NUM,D1_AVERAGE_INCREASE,"
507
+ "D1_RISE_PROBABILITY,D5_BUYER_NUM,D5_AVERAGE_INCREASE,D5_RISE_PROBABILITY,"
508
+ "D10_BUYER_NUM,D10_AVERAGE_INCREASE,D10_RISE_PROBABILITY,D20_BUYER_NUM,"
509
+ "D20_AVERAGE_INCREASE,D20_RISE_PROBABILITY,N_DATE,RELATED_ORG_CODE",
510
+ "source": "WEB",
511
+ "client": "WEB",
512
+ "filter": f"(N_DATE=-{period_map[symbol]})",
454
513
  }
455
514
  r = requests.get(url, params=params)
456
515
  data_json = r.json()
457
- total_page = data_json['result']["pages"]
516
+ total_page = data_json["result"]["pages"]
458
517
  big_df = pd.DataFrame()
459
- for page in range(1, int(total_page)+1):
518
+ for page in range(1, int(total_page) + 1):
460
519
  params.update({"pageNumber": page})
461
520
  r = requests.get(url, params=params)
462
521
  data_json = r.json()
463
- temp_df = pd.DataFrame(data_json['result']["data"])
464
- big_df = pd.concat([big_df, temp_df], ignore_index=True)
522
+ temp_df = pd.DataFrame(data_json["result"]["data"])
523
+ big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
465
524
 
466
525
  big_df.reset_index(inplace=True)
467
- big_df['index'] = big_df.index + 1
526
+ big_df["index"] = big_df.index + 1
468
527
  big_df.columns = [
469
528
  "序号",
470
529
  "_",
@@ -484,34 +543,60 @@ def stock_dzjy_yybph(symbol: str = '近三月') -> pd.DataFrame:
484
543
  "_",
485
544
  "_",
486
545
  ]
487
- big_df = big_df[[
488
- "序号",
489
- "营业部名称",
490
- "上榜后1天-买入次数",
491
- "上榜后1天-平均涨幅",
492
- "上榜后1天-上涨概率",
493
- "上榜后5天-买入次数",
494
- "上榜后5天-平均涨幅",
495
- "上榜后5天-上涨概率",
496
- "上榜后10天-买入次数",
497
- "上榜后10天-平均涨幅",
498
- "上榜后10天-上涨概率",
499
- "上榜后20天-买入次数",
500
- "上榜后20天-平均涨幅",
501
- "上榜后20天-上涨概率",
502
- ]]
503
- big_df['上榜后1天-买入次数'] = pd.to_numeric(big_df['上榜后1天-买入次数'])
504
- big_df['上榜后1天-平均涨幅'] = pd.to_numeric(big_df['上榜后1天-平均涨幅'])
505
- big_df['上榜后1天-上涨概率'] = pd.to_numeric(big_df['上榜后1天-上涨概率'])
506
- big_df['上榜后5天-买入次数'] = pd.to_numeric(big_df['上榜后5天-买入次数'])
507
- big_df['上榜后5天-平均涨幅'] = pd.to_numeric(big_df['上榜后5天-平均涨幅'])
508
- big_df['上榜后5天-上涨概率'] = pd.to_numeric(big_df['上榜后5天-上涨概率'])
509
- big_df['上榜后10天-买入次数'] = pd.to_numeric(big_df['上榜后10天-买入次数'])
510
- big_df['上榜后10天-平均涨幅'] = pd.to_numeric(big_df['上榜后10天-平均涨幅'])
511
- big_df['上榜后10天-上涨概率'] = pd.to_numeric(big_df['上榜后10天-上涨概率'])
512
- big_df['上榜后20天-买入次数'] = pd.to_numeric(big_df['上榜后20天-买入次数'])
513
- big_df['上榜后20天-平均涨幅'] = pd.to_numeric(big_df['上榜后20天-平均涨幅'])
514
- big_df['上榜后20天-上涨概率'] = pd.to_numeric(big_df['上榜后20天-上涨概率'])
546
+ big_df = big_df[
547
+ [
548
+ "序号",
549
+ "营业部名称",
550
+ "上榜后1天-买入次数",
551
+ "上榜后1天-平均涨幅",
552
+ "上榜后1天-上涨概率",
553
+ "上榜后5天-买入次数",
554
+ "上榜后5天-平均涨幅",
555
+ "上榜后5天-上涨概率",
556
+ "上榜后10天-买入次数",
557
+ "上榜后10天-平均涨幅",
558
+ "上榜后10天-上涨概率",
559
+ "上榜后20天-买入次数",
560
+ "上榜后20天-平均涨幅",
561
+ "上榜后20天-上涨概率",
562
+ ]
563
+ ]
564
+ big_df["上榜后1天-买入次数"] = pd.to_numeric(
565
+ big_df["上榜后1天-买入次数"], errors="coerce"
566
+ )
567
+ big_df["上榜后1天-平均涨幅"] = pd.to_numeric(
568
+ big_df["上榜后1天-平均涨幅"], errors="coerce"
569
+ )
570
+ big_df["上榜后1天-上涨概率"] = pd.to_numeric(
571
+ big_df["上榜后1天-上涨概率"], errors="coerce"
572
+ )
573
+ big_df["上榜后5天-买入次数"] = pd.to_numeric(
574
+ big_df["上榜后5天-买入次数"], errors="coerce"
575
+ )
576
+ big_df["上榜后5天-平均涨幅"] = pd.to_numeric(
577
+ big_df["上榜后5天-平均涨幅"], errors="coerce"
578
+ )
579
+ big_df["上榜后5天-上涨概率"] = pd.to_numeric(
580
+ big_df["上榜后5天-上涨概率"], errors="coerce"
581
+ )
582
+ big_df["上榜后10天-买入次数"] = pd.to_numeric(
583
+ big_df["上榜后10天-买入次数"], errors="coerce"
584
+ )
585
+ big_df["上榜后10天-平均涨幅"] = pd.to_numeric(
586
+ big_df["上榜后10天-平均涨幅"], errors="coerce"
587
+ )
588
+ big_df["上榜后10天-上涨概率"] = pd.to_numeric(
589
+ big_df["上榜后10天-上涨概率"], errors="coerce"
590
+ )
591
+ big_df["上榜后20天-买入次数"] = pd.to_numeric(
592
+ big_df["上榜后20天-买入次数"], errors="coerce"
593
+ )
594
+ big_df["上榜后20天-平均涨幅"] = pd.to_numeric(
595
+ big_df["上榜后20天-平均涨幅"], errors="coerce"
596
+ )
597
+ big_df["上榜后20天-上涨概率"] = pd.to_numeric(
598
+ big_df["上榜后20天-上涨概率"], errors="coerce"
599
+ )
515
600
  return big_df
516
601
 
517
602
 
@@ -519,17 +604,19 @@ if __name__ == "__main__":
519
604
  stock_dzjy_sctj_df = stock_dzjy_sctj()
520
605
  print(stock_dzjy_sctj_df)
521
606
 
522
- stock_dzjy_mrmx_df = stock_dzjy_mrmx(symbol='债券', start_date='20201204', end_date='20201204')
607
+ stock_dzjy_mrmx_df = stock_dzjy_mrmx(
608
+ symbol="债券", start_date="20220104", end_date="20220104"
609
+ )
523
610
  print(stock_dzjy_mrmx_df)
524
611
 
525
- stock_dzjy_mrtj_df = stock_dzjy_mrtj(start_date='20201204', end_date='20201204')
612
+ stock_dzjy_mrtj_df = stock_dzjy_mrtj(start_date="20220105", end_date="20220105")
526
613
  print(stock_dzjy_mrtj_df)
527
614
 
528
- stock_dzjy_hygtj_df = stock_dzjy_hygtj(symbol='近三月')
615
+ stock_dzjy_hygtj_df = stock_dzjy_hygtj(symbol="近三月")
529
616
  print(stock_dzjy_hygtj_df)
530
617
 
531
- stock_dzjy_hyyybtj_df = stock_dzjy_hyyybtj(symbol='近3日')
618
+ stock_dzjy_hyyybtj_df = stock_dzjy_hyyybtj(symbol="近3日")
532
619
  print(stock_dzjy_hyyybtj_df)
533
620
 
534
- stock_dzjy_yybph_df = stock_dzjy_yybph(symbol='近三月')
621
+ stock_dzjy_yybph_df = stock_dzjy_yybph(symbol="近三月")
535
622
  print(stock_dzjy_yybph_df)