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.
- akshare/__init__.py +595 -129
- akshare/air/air_hebei.py +77 -54
- akshare/air/air_zhenqi.py +0 -4
- akshare/air/cons.py +1 -0
- akshare/air/crypto.js +1 -1
- akshare/air/outcrypto.js +1 -1
- akshare/article/cons.py +1 -0
- akshare/article/epu_index.py +4 -3
- akshare/article/ff_factor.py +19 -8
- akshare/article/fred_md.py +4 -1
- akshare/article/risk_rv.py +3 -8
- akshare/bank/bank_cbirc_2020.py +11 -11
- akshare/bank/cons.py +7 -6
- akshare/bond/bond_buy_back_em.py +228 -0
- akshare/bond/bond_cb_sina.py +1 -0
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_cbond.py +19 -14
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +1 -1
- akshare/bond/bond_convert.py +10 -9
- akshare/bond/bond_em.py +37 -17
- akshare/bond/bond_summary.py +38 -37
- akshare/bond/bond_zh_cov.py +31 -40
- akshare/bond/bond_zh_sina.py +4 -0
- akshare/bond/cons.py +14 -11
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/crypto/__init__.py +1 -1
- akshare/crypto/crypto_bitcoin_cme.py +9 -7
- akshare/crypto/crypto_hold.py +4 -2
- akshare/currency/currency.py +1 -0
- akshare/currency/currency_china_bank_sina.py +11 -6
- akshare/data/__init__.py +1 -1
- akshare/data/cninfo.js +1 -1
- akshare/datasets.py +10 -21
- akshare/economic/cons.py +10 -3
- akshare/economic/macro_australia.py +74 -69
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_canada.py +92 -81
- akshare/economic/macro_china.py +97 -105
- akshare/economic/macro_china_hk.py +0 -1
- akshare/economic/macro_euro.py +103 -56
- akshare/economic/macro_finance_ths.py +7 -5
- akshare/economic/macro_germany.py +1 -1
- akshare/economic/macro_japan.py +0 -1
- akshare/economic/macro_other.py +1 -6
- akshare/economic/macro_swiss.py +2 -3
- akshare/economic/macro_uk.py +1 -1
- akshare/economic/macro_usa.py +7 -9
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +0 -1
- akshare/energy/energy_oil_em.py +1 -2
- akshare/event/cons.py +1 -0
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/forex/__init__.py +0 -0
- akshare/forex/cons.py +192 -0
- akshare/forex/forex_em.py +149 -0
- akshare/fortune/fortune_500.py +1 -37
- akshare/fortune/fortune_bloomberg.py +6 -3
- akshare/fortune/fortune_forbes_500.py +3 -6
- akshare/fortune/fortune_hurun.py +2 -1
- akshare/fortune/fortune_xincaifu_500.py +17 -14
- akshare/fund/fund_announcement_em.py +145 -0
- akshare/fund/fund_aum_em.py +49 -35
- akshare/fund/fund_em.py +251 -220
- akshare/fund/fund_etf_em.py +44 -35
- akshare/fund/fund_etf_sina.py +75 -27
- akshare/fund/fund_etf_ths.py +2 -0
- akshare/fund/fund_fee_em.py +172 -0
- akshare/fund/fund_fhsp_em.py +42 -32
- akshare/fund/fund_init_em.py +8 -5
- akshare/fund/fund_lof_em.py +12 -19
- akshare/fund/fund_manager.py +25 -11
- akshare/fund/fund_overview_em.py +42 -0
- akshare/fund/fund_portfolio_em.py +23 -21
- akshare/fund/fund_position_lg.py +19 -8
- akshare/fund/fund_rank_em.py +2 -5
- akshare/fund/fund_rating.py +33 -12
- akshare/fund/fund_scale_em.py +24 -13
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +3 -2
- akshare/futures/cons.py +135 -39
- akshare/futures/cot.py +55 -56
- akshare/futures/futures_basis.py +49 -11
- akshare/futures/futures_comex_em.py +1 -0
- akshare/futures/futures_comm_ctp.py +1 -1
- akshare/futures/futures_contract_detail.py +59 -9
- akshare/futures/futures_daily_bar.py +66 -59
- akshare/futures/futures_foreign.py +14 -8
- akshare/futures/futures_hf_em.py +215 -61
- akshare/futures/futures_hist_em.py +191 -0
- akshare/futures/futures_hq_sina.py +5 -3
- akshare/futures/futures_index_ccidx.py +24 -82
- akshare/futures/futures_inventory_99.py +70 -272
- akshare/futures/futures_inventory_em.py +14 -11
- akshare/futures/futures_news_shmet.py +2 -2
- akshare/futures/futures_roll_yield.py +11 -24
- akshare/futures/futures_rule.py +7 -3
- akshare/futures/futures_rule_em.py +38 -0
- akshare/futures/futures_settlement_price_sgx.py +21 -6
- akshare/futures/futures_stock_js.py +0 -1
- akshare/futures/futures_to_spot.py +5 -6
- akshare/futures/futures_warehouse_receipt.py +48 -47
- akshare/futures/futures_zh_sina.py +3 -3
- akshare/futures/receipt.py +298 -165
- akshare/futures/requests_fun.py +16 -3
- akshare/futures/symbol_var.py +32 -13
- akshare/futures_derivative/cons.py +100 -103
- akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
- akshare/futures_derivative/futures_contract_info_czce.py +2 -0
- akshare/futures_derivative/futures_contract_info_dce.py +43 -17
- akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
- akshare/futures_derivative/futures_cot_sina.py +8 -6
- akshare/futures_derivative/futures_index_sina.py +25 -13
- akshare/fx/cons.py +12 -7
- akshare/fx/fx_c_swap_cm.py +62 -0
- akshare/fx/fx_quote.py +3 -2
- akshare/fx/fx_quote_baidu.py +2 -1
- akshare/hf/__init__.py +1 -1
- akshare/hf/hf_sp500.py +8 -7
- akshare/index/cons.py +132 -28
- akshare/index/index_cni.py +7 -7
- akshare/index/index_cons.py +2 -2
- akshare/index/index_csindex.py +68 -0
- akshare/index/index_cx.py +20 -20
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_eri.py +1 -0
- akshare/index/index_global_em.py +167 -0
- akshare/index/index_global_sina.py +82 -0
- akshare/index/index_kq_fz.py +17 -14
- akshare/index/index_kq_ss.py +1 -0
- akshare/index/index_option_qvix.py +351 -16
- akshare/index/index_research_sw.py +21 -21
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +5 -9
- akshare/index/index_stock_zh.py +111 -24
- akshare/index/index_stock_zh_csindex.py +3 -367
- akshare/index/index_sugar.py +18 -4
- akshare/index/index_sw.py +10 -2
- akshare/index/index_yw.py +53 -75
- akshare/index/index_zh_em.py +15 -82
- akshare/interest_rate/interbank_rate_em.py +0 -1
- akshare/movie/jm.js +0 -1
- akshare/news/__init__.py +1 -1
- akshare/news/news_baidu.py +395 -222
- akshare/news/news_stock.py +49 -16
- akshare/option/cons.py +2 -2
- akshare/option/option_commodity.py +341 -220
- akshare/option/option_commodity_sina.py +22 -26
- akshare/option/option_contract_info_ctp.py +63 -0
- akshare/option/option_current_sse.py +61 -0
- akshare/option/option_current_szse.py +84 -0
- akshare/option/option_czce.py +37 -9
- akshare/option/option_daily_stats_sse_szse.py +0 -1
- akshare/option/option_em.py +4 -8
- akshare/option/option_finance.py +60 -12
- akshare/option/option_finance_sina.py +7 -7
- akshare/option/option_lhb_em.py +0 -1
- akshare/option/option_margin.py +62 -0
- akshare/option/option_premium_analysis_em.py +58 -53
- akshare/option/option_risk_analysis_em.py +11 -8
- akshare/option/option_risk_indicator_sse.py +3 -4
- akshare/option/option_value_analysis_em.py +62 -55
- akshare/other/__init__.py +1 -1
- akshare/pro/__init__.py +0 -1
- akshare/pro/client.py +6 -4
- akshare/pro/cons.py +3 -2
- akshare/pro/data_pro.py +6 -5
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/qhkc/__init__.py +1 -6
- akshare/qhkc/qhkc_api.py +64 -22
- akshare/qhkc_web/__init__.py +1 -6
- akshare/qhkc_web/qhkc_fund.py +10 -6
- akshare/qhkc_web/qhkc_index.py +28 -14
- akshare/qhkc_web/qhkc_tool.py +62 -59
- akshare/rate/__init__.py +1 -1
- akshare/rate/repo_rate.py +36 -32
- akshare/reits/__init__.py +1 -1
- akshare/reits/reits_basic.py +149 -13
- akshare/request.py +117 -0
- akshare/spot/__init__.py +1 -1
- akshare/spot/spot_hog_soozhu.py +165 -3
- akshare/spot/spot_sge.py +70 -9
- akshare/stock/cons.py +60 -23
- akshare/stock/stock_allotment_cninfo.py +8 -8
- akshare/stock/stock_ask_bid_em.py +3 -78
- akshare/stock/stock_board_concept_em.py +160 -35
- akshare/stock/stock_board_industry_em.py +163 -70
- akshare/stock/stock_dividend_cninfo.py +31 -17
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +72 -64
- akshare/stock/stock_fund_hold.py +1 -2
- akshare/stock/stock_gsrl_em.py +1 -0
- akshare/stock/stock_hk_comparison_em.py +175 -0
- akshare/stock/stock_hk_famous.py +4 -5
- akshare/stock/stock_hk_fhpx_ths.py +2 -1
- akshare/stock/stock_hk_hot_rank_em.py +1 -0
- akshare/stock/stock_hk_sina.py +84 -36
- akshare/stock/stock_hold_control_cninfo.py +82 -0
- akshare/stock/stock_hold_control_em.py +0 -2
- akshare/stock/stock_hot_rank_em.py +4 -1
- akshare/stock/stock_hot_search_baidu.py +32 -19
- akshare/stock/stock_hot_up_em.py +4 -1
- akshare/stock/stock_hsgt_em.py +155 -0
- akshare/stock/stock_industry.py +1 -0
- akshare/stock/stock_industry_cninfo.py +1 -2
- akshare/stock/stock_info.py +6 -4
- akshare/stock/stock_info_em.py +17 -11
- akshare/stock/stock_intraday_em.py +4 -78
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +7 -7
- akshare/stock/stock_profile_em.py +302 -0
- akshare/stock/stock_rank_forecast.py +6 -5
- akshare/stock/stock_repurchase_em.py +7 -2
- akshare/stock/stock_share_changes_cninfo.py +7 -5
- akshare/stock/stock_share_hold.py +24 -20
- akshare/stock/stock_stop.py +6 -6
- akshare/stock/stock_summary.py +153 -417
- akshare/stock/stock_us_famous.py +5 -6
- akshare/stock/stock_us_js.py +3 -2
- akshare/stock/stock_us_pink.py +38 -27
- akshare/stock/stock_us_sina.py +7 -3
- akshare/stock/stock_weibo_nlp.py +18 -20
- akshare/stock/stock_xq.py +24 -22
- akshare/stock/stock_zh_a_sina.py +8 -5
- akshare/stock/stock_zh_a_special.py +240 -243
- akshare/stock/stock_zh_a_tick_tx.py +11 -3
- akshare/stock/stock_zh_ah_tx.py +23 -26
- akshare/stock/stock_zh_b_sina.py +2 -2
- akshare/stock/stock_zh_comparison_em.py +250 -0
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_a/__init__.py +0 -0
- akshare/stock_a/stock_board_concept_name_em.py +170 -0
- akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
- akshare/stock_a/stock_zh_a_spot.py +212 -0
- akshare/stock_feature/cons.py +1 -0
- akshare/stock_feature/stock_a_indicator.py +9 -54
- akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
- akshare/stock_feature/stock_account_em.py +0 -1
- akshare/stock_feature/stock_all_pb.py +2 -1
- akshare/stock_feature/stock_analyst_em.py +36 -30
- akshare/stock_feature/stock_board_concept_ths.py +328 -0
- akshare/stock_feature/stock_board_industry_ths.py +57 -2
- akshare/stock_feature/stock_buffett_index_lg.py +10 -8
- akshare/stock_feature/stock_classify_sina.py +3 -6
- akshare/stock_feature/stock_comment_em.py +81 -144
- akshare/stock_feature/stock_congestion_lg.py +2 -1
- akshare/stock_feature/stock_cyq_em.py +5 -11
- akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
- akshare/stock_feature/stock_dxsyl_em.py +121 -74
- akshare/stock_feature/stock_ebs_lg.py +5 -4
- akshare/stock_feature/stock_esg_sina.py +29 -7
- akshare/stock_feature/stock_fhps_em.py +2 -1
- akshare/stock_feature/stock_fhps_ths.py +15 -7
- akshare/stock_feature/stock_fund_flow.py +30 -22
- akshare/stock_feature/stock_gddh_em.py +19 -11
- akshare/stock_feature/stock_gdfx_em.py +226 -113
- akshare/stock_feature/stock_gdhs.py +75 -50
- akshare/stock_feature/stock_gdzjc_em.py +21 -10
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_gxl_lg.py +3 -2
- akshare/stock_feature/stock_hist_em.py +137 -234
- akshare/stock_feature/stock_hist_tx.py +13 -10
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hot_xq.py +4 -6
- akshare/stock_feature/stock_hsgt_em.py +269 -97
- akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
- akshare/stock_feature/stock_hsgt_min_em.py +13 -16
- akshare/stock_feature/stock_info.py +7 -80
- akshare/stock_feature/stock_inner_trade_xq.py +38 -31
- akshare/stock_feature/stock_jgdy_em.py +43 -40
- akshare/stock_feature/stock_lhb_em.py +119 -3
- akshare/stock_feature/stock_margin_em.py +0 -1
- akshare/stock_feature/stock_margin_sse.py +0 -2
- akshare/stock_feature/stock_pankou_em.py +71 -35
- akshare/stock_feature/stock_qsjy_em.py +13 -4
- akshare/stock_feature/stock_report_em.py +151 -7
- akshare/stock_feature/stock_research_report_em.py +55 -20
- akshare/stock_feature/stock_sy_em.py +20 -15
- akshare/stock_feature/stock_technology_ths.py +122 -77
- akshare/stock_feature/stock_tfp_em.py +2 -1
- akshare/stock_feature/stock_three_report_em.py +21 -5
- akshare/stock_feature/stock_ttm_lyr.py +18 -9
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_yjbb_em.py +58 -32
- akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
- akshare/stock_feature/stock_yjyg_em.py +1 -1
- akshare/stock_feature/stock_yzxdr_em.py +24 -22
- akshare/stock_feature/stock_zdhtmx_em.py +20 -6
- akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
- akshare/stock_feature/stock_ztb_em.py +39 -24
- akshare/stock_fundamental/__init__.py +1 -1
- akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
- akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
- akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
- akshare/stock_fundamental/stock_finance_ths.py +524 -57
- akshare/stock_fundamental/stock_finance_us_em.py +268 -0
- akshare/stock_fundamental/stock_gbjg_em.py +80 -0
- akshare/stock_fundamental/stock_hold.py +26 -17
- akshare/stock_fundamental/stock_ipo_declare.py +1 -0
- akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
- akshare/stock_fundamental/stock_kcb_sse.py +26 -25
- akshare/stock_fundamental/stock_notice.py +12 -3
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
- akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
- akshare/stock_fundamental/stock_recommend.py +20 -4
- akshare/stock_fundamental/stock_zygc.py +5 -62
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2009 -1338
- akshare/utils/func.py +49 -2
- akshare/utils/multi_decrypt.py +53 -0
- akshare/utils/token_process.py +6 -5
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
- akshare-1.17.99.dist-info/RECORD +409 -0
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
- {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fund/fund_announcement.py +0 -56
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -78
- akshare/index/index_investing.py +0 -232
- akshare/sport/__init__.py +0 -6
- akshare/sport/sport_olympic.py +0 -27
- akshare/stock_feature/stock_wencai.py +0 -104
- akshare/stock_fundamental/stock_mda_ym.py +0 -40
- akshare-1.14.49.dist-info/RECORD +0 -387
- {akshare-1.14.49.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:
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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[
|
|
100
|
-
big_df[
|
|
101
|
-
big_df[
|
|
102
|
-
big_df[
|
|
103
|
-
big_df[
|
|
104
|
-
big_df[
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
big_df[
|
|
108
|
-
big_df[
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
big_df[
|
|
112
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
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[
|
|
191
|
-
big_df[
|
|
192
|
-
big_df[
|
|
193
|
-
big_df[
|
|
194
|
-
big_df[
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
big_df[
|
|
198
|
-
big_df[
|
|
199
|
-
big_df[
|
|
200
|
-
big_df[
|
|
201
|
-
big_df[
|
|
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=
|
|
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="
|
|
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:
|
|
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(
|
|
109
|
-
|
|
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(
|
|
112
|
-
|
|
113
|
-
|
|
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/
|
|
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
|
|
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": "
|
|
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
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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 = "
|
|
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(
|
|
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(
|
|
343
|
-
|
|
344
|
-
|
|
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(
|
|
406
|
-
|
|
407
|
-
|
|
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,
|
|
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["
|
|
451
|
-
temp_df["
|
|
452
|
-
temp_df["
|
|
453
|
-
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="
|
|
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)
|