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
@@ -5,6 +5,7 @@ Date: 2024/2/26 15:10
5
5
  Desc: 腾讯财经-A+H股数据, 实时行情数据和历史行情数据(后复权)
6
6
  https://stockapp.finance.qq.com/mstats/#mod=list&id=hk_ah&module=HK&type=AH&sort=3&page=3&max=20
7
7
  """
8
+
8
9
  import random
9
10
 
10
11
  import pandas as pd
@@ -31,9 +32,7 @@ def _get_zh_stock_ah_page_count() -> int:
31
32
  hk_payload_copy = hk_payload.copy()
32
33
  hk_payload_copy.update({"reqPage": 1})
33
34
  r = requests.get(hk_url, params=hk_payload_copy, headers=hk_headers)
34
- data_json = demjson.decode(
35
- r.text[r.text.find("{"): r.text.rfind("}") + 1]
36
- )
35
+ data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
37
36
  page_count = data_json["data"]["page_count"]
38
37
  return page_count
39
38
 
@@ -45,15 +44,13 @@ def stock_zh_ah_spot() -> pd.DataFrame:
45
44
  :return: 腾讯财经-港股-AH-实时行情
46
45
  :rtype: pandas.DataFrame
47
46
  """
48
- big_df = pd.DataFrame()
49
47
  page_count = _get_zh_stock_ah_page_count()
48
+ big_df = pd.DataFrame()
50
49
  tqdm = get_tqdm()
51
50
  for i in tqdm(range(0, page_count), leave=False):
52
51
  hk_payload.update({"reqPage": i})
53
52
  r = requests.get(hk_url, params=hk_payload, headers=hk_headers)
54
- data_json = demjson.decode(
55
- r.text[r.text.find("{"): r.text.rfind("}") + 1]
56
- )
53
+ data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
57
54
  big_df = pd.concat(
58
55
  objs=[
59
56
  big_df,
@@ -123,9 +120,7 @@ def stock_zh_ah_name() -> pd.DataFrame:
123
120
  for i in tqdm(range(0, page_count), leave=False):
124
121
  hk_payload.update({"reqPage": i})
125
122
  r = requests.get(hk_url, params=hk_payload, headers=hk_headers)
126
- data_json = demjson.decode(
127
- r.text[r.text.find("{"): r.text.rfind("}") + 1]
128
- )
123
+ data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
129
124
  big_df = pd.concat(
130
125
  objs=[
131
126
  big_df,
@@ -160,10 +155,10 @@ def stock_zh_ah_name() -> pd.DataFrame:
160
155
 
161
156
 
162
157
  def stock_zh_ah_daily(
163
- symbol: str = "02318",
164
- start_year: str = "2000",
165
- end_year: str = "2019",
166
- adjust: str = "",
158
+ symbol: str = "02318",
159
+ start_year: str = "2000",
160
+ end_year: str = "2019",
161
+ adjust: str = "",
167
162
  ) -> pd.DataFrame:
168
163
  """
169
164
  腾讯财经-港股-AH-股票历史行情
@@ -187,9 +182,7 @@ def stock_zh_ah_daily(
187
182
  hk_stock_payload_copy.update({"_var": f"kline_day{adjust}{year}"})
188
183
  if adjust == "":
189
184
  hk_stock_payload_copy.update(
190
- {
191
- "param": f"hk{symbol},day,{year}-01-01,{int(year) + 1}-12-31,640,"
192
- }
185
+ {"param": f"hk{symbol},day,{year}-01-01,{int(year) + 1}-12-31,640,"}
193
186
  )
194
187
  else:
195
188
  hk_stock_payload_copy.update(
@@ -221,17 +214,13 @@ def stock_zh_ah_daily(
221
214
  params=hk_stock_payload_copy,
222
215
  headers=hk_stock_headers,
223
216
  )
224
- data_json = demjson.decode(
225
- r.text[r.text.find("{"): r.text.rfind("}") + 1]
226
- )
217
+ data_json = demjson.decode(r.text[r.text.find("{") : r.text.rfind("}") + 1])
227
218
  try:
228
219
  if adjust == "":
229
220
  temp_df = pd.DataFrame(data_json["data"][f"hk{symbol}"]["day"])
230
221
  else:
231
- temp_df = pd.DataFrame(
232
- data_json["data"][f"hk{symbol}"][f"{adjust}day"]
233
- )
234
- except:
222
+ temp_df = pd.DataFrame(data_json["data"][f"hk{symbol}"][f"{adjust}day"])
223
+ except: # noqa
235
224
  continue
236
225
  if adjust != "" and not temp_df.empty:
237
226
  temp_df.columns = [
@@ -248,8 +237,16 @@ def stock_zh_ah_daily(
248
237
  temp_df = temp_df[["日期", "开盘", "收盘", "最高", "最低", "成交量"]]
249
238
  elif not temp_df.empty:
250
239
  try:
251
- temp_df.columns = ["日期", "开盘", "收盘", "最高", "最低", "成交量", "_"]
252
- except:
240
+ temp_df.columns = [
241
+ "日期",
242
+ "开盘",
243
+ "收盘",
244
+ "最高",
245
+ "最低",
246
+ "成交量",
247
+ "_",
248
+ ]
249
+ except: # noqa
253
250
  temp_df.columns = ["日期", "开盘", "收盘", "最高", "最低", "成交量"]
254
251
  temp_df = temp_df[["日期", "开盘", "收盘", "最高", "最低", "成交量"]]
255
252
  big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
@@ -136,7 +136,7 @@ def stock_zh_b_daily(
136
136
  :type end_date: str
137
137
  :param symbol: sh600000
138
138
  :type symbol: str
139
- :param adjust: 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; hfq-factor: 返回前复权因子
139
+ :param adjust: 默认为空: 返回不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; qfq-factor: 返回前复权因子
140
140
  :type adjust: str
141
141
  :return: specific data
142
142
  :rtype: pandas.DataFrame
@@ -367,7 +367,7 @@ def stock_zh_b_minute(
367
367
 
368
368
  if __name__ == "__main__":
369
369
  stock_zh_b_daily_hfq_df_one = stock_zh_b_daily(
370
- symbol="sh900901", start_date="20171103", end_date="20210908", adjust=""
370
+ symbol="sh900901", start_date="20071103", end_date="20240916", adjust=""
371
371
  )
372
372
  print(stock_zh_b_daily_hfq_df_one)
373
373
 
@@ -0,0 +1,250 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/24 15:00
5
+ Desc: 东方财富-行情中心-同行比较
6
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def stock_zh_growth_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
14
+ """
15
+ 东方财富-行情中心-同行比较-成长性比较
16
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/czxbj
17
+ :param symbol: 股票代码
18
+ :type symbol: str
19
+ :return: 成长性比较
20
+ :rtype: pandas.DataFrame
21
+ """
22
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
23
+ params = {
24
+ 'reportName': 'RPT_PCF10_INDUSTRY_GROWTH',
25
+ 'columns': 'ALL',
26
+ 'quoteColumns': '',
27
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
28
+ 'pageNumber': '',
29
+ 'pageSize': '',
30
+ 'sortTypes': '1',
31
+ 'sortColumns': 'PAIMING',
32
+ 'source': 'HSF10',
33
+ 'client': 'PC',
34
+ 'v': '02747607708067783'
35
+ }
36
+ r = requests.get(url, params=params)
37
+ data_json = r.json()
38
+
39
+ field_mapping = {
40
+ 'CORRE_SECURITY_CODE': '代码',
41
+ 'CORRE_SECURITY_NAME': '简称',
42
+ 'MGSY_3Y': '基本每股收益增长率-3年复合',
43
+ 'MGSYTB': '基本每股收益增长率-24A',
44
+ 'MGSYTTM': '基本每股收益增长率-TTM',
45
+ 'MGSY_1E': '基本每股收益增长率-25E',
46
+ 'MGSY_2E': '基本每股收益增长率-26E',
47
+ 'MGSY_3E': '基本每股收益增长率-27E',
48
+ 'YYSR_3Y': '营业收入增长率-3年复合',
49
+ 'YYSRTB': '营业收入增长率-24A',
50
+ 'YYSRTTM': '营业收入增长率-TTM',
51
+ 'YYSR_1E': '营业收入增长率-25E',
52
+ 'YYSR_2E': '营业收入增长率-26E',
53
+ 'YYSR_3E': '营业收入增长率-27E',
54
+ 'JLR_3Y': '净利润增长率-3年复合',
55
+ 'JLRTB': '净利润增长率-24A',
56
+ 'JLRTTM': '净利润增长率-TTM',
57
+ 'JLR_1E': '净利润增长率-25E',
58
+ 'JLR_2E': '净利润增长率-26E',
59
+ 'JLR_3E': '净利润增长率-27E',
60
+ 'PAIMING': '基本每股收益增长率-3年复合排名',
61
+ }
62
+
63
+ temp_df = pd.DataFrame(columns=field_mapping.values())
64
+ if data_json['result'] is not None:
65
+ temp_df = pd.DataFrame(data_json['result']['data'])
66
+ temp_df.rename(columns=field_mapping, inplace=True)
67
+ temp_df = temp_df[field_mapping.values()]
68
+
69
+ return temp_df
70
+
71
+
72
+ def stock_zh_valuation_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
73
+ """
74
+ 东方财富-行情中心-同行比较-估值比较
75
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/gzbj
76
+ :param symbol: 股票代码
77
+ :type symbol: str
78
+ :return: 估值比较
79
+ :rtype: pandas.DataFrame
80
+ """
81
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
82
+ params = {
83
+ 'reportName': 'RPT_PCF10_INDUSTRY_CVALUE',
84
+ 'columns': 'ALL',
85
+ 'quoteColumns': '',
86
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
87
+ 'pageNumber': '',
88
+ 'pageSize': '',
89
+ 'sortTypes': '1',
90
+ 'sortColumns': 'PAIMING',
91
+ 'source': 'HSF10',
92
+ 'client': 'PC',
93
+ 'v': '07552428957995401'
94
+ }
95
+ r = requests.get(url, params=params)
96
+ data_json = r.json()
97
+
98
+ field_mapping = {
99
+ 'CORRE_SECURITY_CODE': '代码',
100
+ 'CORRE_SECURITY_NAME': '简称',
101
+ 'PEG': 'PEG',
102
+ 'PE': '市盈率-24A',
103
+ 'PE_TTM': '市盈率-TTM',
104
+ 'PE_1Y': '市盈率-25E',
105
+ 'PE_2Y': '市盈率-26E',
106
+ 'PE_3Y': '市盈率-27E',
107
+ 'PS': '市销率-24A',
108
+ 'PS_TTM': '市销率-TTM',
109
+ 'PS_1Y': '市销率-25E',
110
+ 'PS_2Y': '市销率-26E',
111
+ 'PS_3Y': '市销率-27E',
112
+ 'PB': '市净率-24A',
113
+ 'PB_MRQ': '市净率-MRQ',
114
+ 'PCE': '市现率PCE-24A',
115
+ 'PCE_TTM': '市现率PCE-TTM',
116
+ 'PCF': '市现率PCF-24A',
117
+ 'PCF_TTM': '市现率PCF-TTM',
118
+ 'QYBS': 'EV/EBITDA-24A',
119
+ 'PAIMING': 'PEG排名',
120
+ }
121
+
122
+ temp_df = pd.DataFrame(columns=field_mapping.values())
123
+ if data_json['result'] is not None:
124
+ temp_df = pd.DataFrame(data_json['result']['data'])
125
+ temp_df.rename(columns=field_mapping, inplace=True)
126
+ temp_df = temp_df[field_mapping.values()]
127
+
128
+ return temp_df
129
+
130
+
131
+ def stock_zh_dupont_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
132
+ """
133
+ 东方财富-行情中心-同行比较-杜邦分析比较
134
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/dbfxbj
135
+ :param symbol: 股票代码
136
+ :type symbol: str
137
+ :return: 杜邦分析比较
138
+ :rtype: pandas.DataFrame
139
+ """
140
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
141
+ params = {
142
+ 'reportName': 'RPT_PCF10_INDUSTRY_DBFX',
143
+ 'columns': 'ALL',
144
+ 'quoteColumns': '',
145
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")',
146
+ 'pageNumber': '',
147
+ 'pageSize': '',
148
+ 'sortTypes': '1',
149
+ 'sortColumns': 'PAIMING',
150
+ 'source': 'HSF10',
151
+ 'client': 'PC',
152
+ 'v': '05086361194054821'
153
+ }
154
+ r = requests.get(url, params=params)
155
+ data_json = r.json()
156
+
157
+ field_mapping = {
158
+ 'CORRE_SECURITY_CODE': '代码',
159
+ 'CORRE_SECURITY_NAME': '简称',
160
+ 'ROE_AVG': 'ROE-3年平均',
161
+ 'ROEPJ_L3': 'ROE-22A',
162
+ 'ROEPJ_L2': 'ROE-23A',
163
+ 'ROEPJ_L1': 'ROE-24A',
164
+ 'XSJLL_AVG': '净利率-3年平均',
165
+ 'XSJLL_L3': '净利率-22A',
166
+ 'XSJLL_L2': '净利率-23A',
167
+ 'XSJLL_L1': '净利率-24A',
168
+ 'TOAZZL_AVG': '总资产周转率-3年平均',
169
+ 'TOAZZL_L3': '总资产周转率-22A',
170
+ 'TOAZZL_L2': '总资产周转率-23A',
171
+ 'TOAZZL_L1': '总资产周转率-24A',
172
+ 'QYCS_AVG': '权益乘数-3年平均',
173
+ 'QYCS_L3': '权益乘数-22A',
174
+ 'QYCS_L2': '权益乘数-23A',
175
+ 'QYCS_L1': '权益乘数-24A',
176
+ 'PAIMING': 'ROE-3年平均排名',
177
+ }
178
+
179
+ temp_df = pd.DataFrame(columns=field_mapping.values())
180
+ if data_json['result'] is not None:
181
+ temp_df = pd.DataFrame(data_json['result']['data'])
182
+ temp_df.rename(columns=field_mapping, inplace=True)
183
+ temp_df = temp_df[field_mapping.values()]
184
+
185
+ return temp_df
186
+
187
+
188
+ def stock_zh_scale_comparison_em(symbol: str = "SZ000895") -> pd.DataFrame:
189
+ """
190
+ 东方财富-行情中心-同行比较-公司规模
191
+ https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code=000895&color=b#/thbj/gsgm
192
+ :type symbol: str
193
+ :return: 公司规模
194
+ :rtype: pandas.DataFrame
195
+ """
196
+ url = 'https://datacenter.eastmoney.com/securities/api/data/v1/get'
197
+ params = {
198
+ 'reportName': 'RPT_PCF10_INDUSTRY_MARKET',
199
+ 'columns': 'SECUCODE,SECURITY_CODE,SECURITY_NAME_ABBR,ORG_CODE,'
200
+ 'CORRE_SECUCODE,CORRE_SECURITY_CODE,CORRE_SECURITY_NAME,'
201
+ 'CORRE_ORG_CODE,TOTAL_CAP,FREECAP,TOTAL_OPERATEINCOME,'
202
+ 'NETPROFIT,REPORT_TYPE,TOTAL_CAP_RANK,FREECAP_RANK,'
203
+ 'TOTAL_OPERATEINCOME_RANK,NETPROFIT_RANK',
204
+ 'quoteColumns': '',
205
+ 'filter': f'(SECUCODE="{symbol[2:]}.{symbol[:2]}")(CORRE_SECUCODE="{symbol[2:]}.{symbol[:2]}")',
206
+ 'pageNumber': '1',
207
+ 'pageSize': '5',
208
+ 'sortTypes': '-1',
209
+ 'sortColumns': 'TOTAL_CAP',
210
+ 'source': 'HSF10',
211
+ 'client': 'PC',
212
+ 'v': '005391946600478148'
213
+ }
214
+ r = requests.get(url, params=params)
215
+ data_json = r.json()
216
+
217
+ field_mapping = {
218
+ 'CORRE_SECURITY_CODE': '代码',
219
+ 'CORRE_SECURITY_NAME': '简称',
220
+ 'TOTAL_CAP': '总市值',
221
+ 'TOTAL_CAP_RANK': '总市值排名',
222
+ 'FREECAP': '流通市值',
223
+ 'FREECAP_RANK': '流通市值排名',
224
+ 'TOTAL_OPERATEINCOME': '营业收入',
225
+ 'TOTAL_OPERATEINCOME_RANK': '营业收入排名',
226
+ 'NETPROFIT': '净利润',
227
+ 'NETPROFIT_RANK': '净利润排名',
228
+ }
229
+
230
+ temp_df = pd.DataFrame(columns=field_mapping.values())
231
+ if data_json['result'] is not None:
232
+ temp_df = pd.DataFrame(data_json['result']['data'])
233
+ temp_df.rename(columns=field_mapping, inplace=True)
234
+ temp_df = temp_df[field_mapping.values()]
235
+
236
+ return temp_df
237
+
238
+
239
+ if __name__ == "__main__":
240
+ stock_zh_growth_comparison_em_df = stock_zh_growth_comparison_em(symbol="SZ000895")
241
+ print(stock_zh_growth_comparison_em_df)
242
+
243
+ stock_zh_valuation_comparison_em_df = stock_zh_valuation_comparison_em(symbol="SZ000895")
244
+ print(stock_zh_valuation_comparison_em_df)
245
+
246
+ stock_zh_dupont_comparison_em_df = stock_zh_dupont_comparison_em(symbol="SZ000895")
247
+ print(stock_zh_dupont_comparison_em_df)
248
+
249
+ stock_zh_scale_comparison_em_df = stock_zh_scale_comparison_em(symbol="SZ000895")
250
+ print(stock_zh_scale_comparison_em_df)
@@ -4,6 +4,7 @@
4
4
  Date: 2023/7/6 19:28
5
5
  Desc: 新浪财经-科创板-实时行情数据和历史行情数据(包含前复权和后复权因子)
6
6
  """
7
+
7
8
  import datetime
8
9
  import re
9
10
 
@@ -61,59 +62,61 @@ def stock_zh_kcb_spot() -> pd.DataFrame:
61
62
  "最新价",
62
63
  "涨跌额",
63
64
  "涨跌幅",
64
- '买入',
65
- '卖出',
66
- '昨收',
67
- '今开',
68
- '最高',
69
- '最低',
70
- '成交量',
71
- '成交额',
72
- '时点',
73
- '市盈率',
74
- '市净率',
75
- '流通市值',
76
- '总市值',
77
- '换手率',
65
+ "买入",
66
+ "卖出",
67
+ "昨收",
68
+ "今开",
69
+ "最高",
70
+ "最低",
71
+ "成交量",
72
+ "成交额",
73
+ "时点",
74
+ "市盈率",
75
+ "市净率",
76
+ "流通市值",
77
+ "总市值",
78
+ "换手率",
79
+ ]
80
+ big_df = big_df[
81
+ [
82
+ "代码",
83
+ "名称",
84
+ "最新价",
85
+ "涨跌额",
86
+ "涨跌幅",
87
+ "买入",
88
+ "卖出",
89
+ "昨收",
90
+ "今开",
91
+ "最高",
92
+ "最低",
93
+ "成交量",
94
+ "成交额",
95
+ "时点",
96
+ "市盈率",
97
+ "市净率",
98
+ "流通市值",
99
+ "总市值",
100
+ "换手率",
101
+ ]
78
102
  ]
79
- big_df = big_df[[
80
- "代码",
81
- "名称",
82
- "最新价",
83
- "涨跌额",
84
- "涨跌幅",
85
- '买入',
86
- '卖出',
87
- '昨收',
88
- '今开',
89
- '最高',
90
- '最低',
91
- '成交量',
92
- '成交额',
93
- '时点',
94
- '市盈率',
95
- '市净率',
96
- '流通市值',
97
- '总市值',
98
- '换手率',
99
- ]]
100
103
 
101
- big_df['最新价'] = pd.to_numeric(big_df['最新价'])
102
- big_df['涨跌额'] = pd.to_numeric(big_df['涨跌额'])
103
- big_df['涨跌幅'] = pd.to_numeric(big_df['涨跌幅'])
104
- big_df['买入'] = pd.to_numeric(big_df['买入'])
105
- big_df['卖出'] = pd.to_numeric(big_df['卖出'])
106
- big_df['昨收'] = pd.to_numeric(big_df['昨收'])
107
- big_df['今开'] = pd.to_numeric(big_df['今开'])
108
- big_df['最高'] = pd.to_numeric(big_df['最高'])
109
- big_df['最低'] = pd.to_numeric(big_df['最低'])
110
- 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['市净率'])
114
- big_df['流通市值'] = pd.to_numeric(big_df['流通市值'])
115
- big_df['总市值'] = pd.to_numeric(big_df['总市值'])
116
- big_df['换手率'] = pd.to_numeric(big_df['换手率'])
104
+ big_df["最新价"] = pd.to_numeric(big_df["最新价"])
105
+ big_df["涨跌额"] = pd.to_numeric(big_df["涨跌额"])
106
+ big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"])
107
+ big_df["买入"] = pd.to_numeric(big_df["买入"])
108
+ big_df["卖出"] = pd.to_numeric(big_df["卖出"])
109
+ big_df["昨收"] = pd.to_numeric(big_df["昨收"])
110
+ 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["成交量"])
114
+ big_df["成交额"] = pd.to_numeric(big_df["成交额"])
115
+ big_df["市盈率"] = pd.to_numeric(big_df["市盈率"])
116
+ big_df["市净率"] = pd.to_numeric(big_df["市净率"])
117
+ big_df["流通市值"] = pd.to_numeric(big_df["流通市值"])
118
+ big_df["总市值"] = pd.to_numeric(big_df["总市值"])
119
+ big_df["换手率"] = pd.to_numeric(big_df["换手率"])
117
120
  return big_df
118
121
 
119
122
 
@@ -123,7 +126,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
123
126
  https://finance.sina.com.cn/realstock/company/sh688005/nc.shtml
124
127
  :param symbol: 股票代码; 带市场标识的股票代码
125
128
  :type symbol: str
126
- :param adjust: 默认不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; hfq-factor: 返回前复权因子
129
+ :param adjust: 默认不复权的数据; qfq: 返回前复权后的数据; hfq: 返回后复权后的数据; hfq-factor: 返回后复权因子; qfq-factor: 返回前复权因子
127
130
  :type adjust: str
128
131
  :return: 科创板股票的历史行情数据
129
132
  :rtype: pandas.DataFrame
@@ -150,12 +153,12 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
150
153
  try:
151
154
  # try for pandas >= 2.1.0
152
155
  temp_df.ffill(inplace=True)
153
- except Exception as e:
156
+ except Exception:
154
157
  try:
155
- # try for pandas < 2.1.0
158
+ # try for pandas < 2.1.0
156
159
  temp_df.fillna(method="ffill", inplace=True)
157
160
  except Exception as e:
158
- print("Error:", e)
161
+ print("Error:", e)
159
162
  temp_df = temp_df.astype(float)
160
163
  temp_df["amount"] = temp_df["amount"] * 10000
161
164
  temp_df["turnover"] = temp_df["v"] / temp_df["amount"]
@@ -173,7 +176,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
173
176
 
174
177
  if not adjust:
175
178
  temp_df.reset_index(inplace=True)
176
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
179
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
177
180
  return temp_df
178
181
 
179
182
  if adjust == "hfq":
@@ -191,9 +194,9 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
191
194
  try:
192
195
  # try for pandas >= 2.1.0
193
196
  temp_df.ffill(inplace=True)
194
- except Exception as e:
197
+ except Exception:
195
198
  try:
196
- # try for pandas < 2.1.0
199
+ # try for pandas < 2.1.0
197
200
  temp_df.fillna(method="ffill", inplace=True)
198
201
  except Exception as e:
199
202
  print("Error:", e)
@@ -204,7 +207,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
204
207
  temp_df["low"] = temp_df["low"] * temp_df["hfq_factor"]
205
208
  temp_df = temp_df.iloc[:, :-1]
206
209
  temp_df.reset_index(inplace=True)
207
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
210
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
208
211
  return temp_df
209
212
 
210
213
  if adjust == "qfq":
@@ -222,9 +225,9 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
222
225
  try:
223
226
  # try for pandas >= 2.1.0
224
227
  temp_df.ffill(inplace=True)
225
- except Exception as e:
228
+ except Exception:
226
229
  try:
227
- # try for pandas < 2.1.0
230
+ # try for pandas < 2.1.0
228
231
  temp_df.fillna(method="ffill", inplace=True)
229
232
  except Exception as e:
230
233
  print("Error:", e)
@@ -235,7 +238,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
235
238
  temp_df["low"] = temp_df["low"] / temp_df["qfq_factor"]
236
239
  temp_df = temp_df.iloc[:, :-1]
237
240
  temp_df.reset_index(inplace=True)
238
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
241
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
239
242
  return temp_df
240
243
 
241
244
  if adjust == "hfq-factor":
@@ -247,7 +250,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
247
250
  hfq_factor_df.index = pd.to_datetime(hfq_factor_df.date)
248
251
  del hfq_factor_df["date"]
249
252
  hfq_factor_df.reset_index(inplace=True)
250
- hfq_factor_df['date'] = pd.to_datetime(hfq_factor_df['date']).dt.date
253
+ hfq_factor_df["date"] = pd.to_datetime(hfq_factor_df["date"]).dt.date
251
254
  return hfq_factor_df
252
255
 
253
256
  if adjust == "qfq-factor":
@@ -259,7 +262,7 @@ def stock_zh_kcb_daily(symbol: str = "sh688399", adjust: str = "") -> pd.DataFra
259
262
  qfq_factor_df.index = pd.to_datetime(qfq_factor_df.date)
260
263
  del qfq_factor_df["date"]
261
264
  qfq_factor_df.reset_index(inplace=True)
262
- qfq_factor_df['date'] = pd.to_datetime(qfq_factor_df['date']).dt.date
265
+ qfq_factor_df["date"] = pd.to_datetime(qfq_factor_df["date"]).dt.date
263
266
  return qfq_factor_df
264
267
 
265
268
 
File without changes