akshare 1.12.99__py3-none-any.whl → 1.15.73__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.
Potentially problematic release.
This version of akshare might be problematic. Click here for more details.
- akshare/__init__.py +442 -138
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/bond_zh_cov.py +1 -1
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +16 -15
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +5 -5
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +6 -4
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +55 -23
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/METADATA +52 -69
- akshare-1.15.73.dist-info/RECORD +385 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/WHEEL +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/fortune/fortune_it_juzi.py +0 -123
- 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 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.99.dist-info/RECORD +0 -374
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/LICENSE +0 -0
- {akshare-1.12.99.dist-info → akshare-1.15.73.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
4
|
+
Date: 2024/8/15 18:00
|
|
5
5
|
Desc: 同花顺-数据中心-资金流向
|
|
6
6
|
同花顺-数据中心-资金流向-个股资金流
|
|
7
7
|
https://data.10jqka.com.cn/funds/ggzjl/#refCountId=data_55f13c2c_254
|
|
@@ -12,12 +12,13 @@ https://data.10jqka.com.cn/funds/hyzjl/#refCountId=data_55f13c2c_254
|
|
|
12
12
|
同花顺-数据中心-资金流向-打单追踪
|
|
13
13
|
https://data.10jqka.com.cn/funds/ddzz/#refCountId=data_55f13c2c_254
|
|
14
14
|
"""
|
|
15
|
+
|
|
15
16
|
from io import StringIO
|
|
16
17
|
|
|
17
18
|
import pandas as pd
|
|
18
19
|
import requests
|
|
19
20
|
from bs4 import BeautifulSoup
|
|
20
|
-
|
|
21
|
+
import py_mini_racer
|
|
21
22
|
from akshare.utils.tqdm import get_tqdm
|
|
22
23
|
|
|
23
24
|
from akshare.datasets import get_ths_js
|
|
@@ -32,7 +33,7 @@ def _get_file_content_ths(file: str = "ths.js") -> str:
|
|
|
32
33
|
:rtype: str
|
|
33
34
|
"""
|
|
34
35
|
setting_file_path = get_ths_js(file)
|
|
35
|
-
with open(setting_file_path) as f:
|
|
36
|
+
with open(setting_file_path, encoding="utf-8") as f:
|
|
36
37
|
file_data = f.read()
|
|
37
38
|
return file_data
|
|
38
39
|
|
|
@@ -60,13 +61,14 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
|
|
|
60
61
|
"Host": "data.10jqka.com.cn",
|
|
61
62
|
"Pragma": "no-cache",
|
|
62
63
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
63
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
64
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
65
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
64
66
|
"X-Requested-With": "XMLHttpRequest",
|
|
65
67
|
}
|
|
66
68
|
url = "http://data.10jqka.com.cn/funds/ggzjl/field/code/order/desc/ajax/1/free/1/"
|
|
67
69
|
r = requests.get(url, headers=headers)
|
|
68
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
69
|
-
raw_page = soup.find("span", attrs={"class": "page_info"}).text
|
|
70
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
71
|
+
raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
70
72
|
page_num = raw_page.split("/")[1]
|
|
71
73
|
if symbol == "3日排行":
|
|
72
74
|
url = "http://data.10jqka.com.cn/funds/ggzjl/board/3/field/zdf/order/desc/page/{}/ajax/1/free/1/"
|
|
@@ -95,12 +97,13 @@ def stock_fund_flow_individual(symbol: str = "即时") -> pd.DataFrame:
|
|
|
95
97
|
"Host": "data.10jqka.com.cn",
|
|
96
98
|
"Pragma": "no-cache",
|
|
97
99
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
98
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
100
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
101
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
99
102
|
"X-Requested-With": "XMLHttpRequest",
|
|
100
103
|
}
|
|
101
104
|
r = requests.get(url.format(page), headers=headers)
|
|
102
105
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
103
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
106
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
104
107
|
|
|
105
108
|
del big_df["序号"]
|
|
106
109
|
big_df.reset_index(inplace=True)
|
|
@@ -154,15 +157,16 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
|
|
|
154
157
|
"Host": "data.10jqka.com.cn",
|
|
155
158
|
"Pragma": "no-cache",
|
|
156
159
|
"Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
|
|
157
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
160
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
161
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
158
162
|
"X-Requested-With": "XMLHttpRequest",
|
|
159
163
|
}
|
|
160
164
|
url = (
|
|
161
165
|
"http://data.10jqka.com.cn/funds/gnzjl/field/tradezdf/order/desc/ajax/1/free/1/"
|
|
162
166
|
)
|
|
163
167
|
r = requests.get(url, headers=headers)
|
|
164
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
165
|
-
raw_page = soup.find("span", attrs={"class": "page_info"}).text
|
|
168
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
169
|
+
raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
166
170
|
page_num = raw_page.split("/")[1]
|
|
167
171
|
if symbol == "3日排行":
|
|
168
172
|
url = "http://data.10jqka.com.cn/funds/gnzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
|
|
@@ -191,12 +195,13 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
|
|
|
191
195
|
"Host": "data.10jqka.com.cn",
|
|
192
196
|
"Pragma": "no-cache",
|
|
193
197
|
"Referer": "http://data.10jqka.com.cn/funds/gnzjl/",
|
|
194
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
198
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
199
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
195
200
|
"X-Requested-With": "XMLHttpRequest",
|
|
196
201
|
}
|
|
197
202
|
r = requests.get(url.format(page), headers=headers)
|
|
198
203
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
199
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
204
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
200
205
|
|
|
201
206
|
del big_df["序号"]
|
|
202
207
|
big_df.reset_index(inplace=True)
|
|
@@ -218,7 +223,9 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
|
|
|
218
223
|
big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
|
|
219
224
|
big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
|
|
220
225
|
big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
|
|
221
|
-
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
226
|
+
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
227
|
+
big_df["领涨股-涨跌幅"], errors="coerce"
|
|
228
|
+
)
|
|
222
229
|
else:
|
|
223
230
|
big_df.columns = [
|
|
224
231
|
"序号",
|
|
@@ -256,15 +263,16 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
|
|
|
256
263
|
"Host": "data.10jqka.com.cn",
|
|
257
264
|
"Pragma": "no-cache",
|
|
258
265
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
259
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
266
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
267
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
260
268
|
"X-Requested-With": "XMLHttpRequest",
|
|
261
269
|
}
|
|
262
270
|
url = (
|
|
263
271
|
"http://data.10jqka.com.cn/funds/hyzjl/field/tradezdf/order/desc/ajax/1/free/1/"
|
|
264
272
|
)
|
|
265
273
|
r = requests.get(url, headers=headers)
|
|
266
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
267
|
-
raw_page = soup.find("span", attrs={"class": "page_info"}).text
|
|
274
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
275
|
+
raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
268
276
|
page_num = raw_page.split("/")[1]
|
|
269
277
|
if symbol == "3日排行":
|
|
270
278
|
url = "http://data.10jqka.com.cn/funds/hyzjl/board/3/field/tradezdf/order/desc/page/{}/ajax/1/free/1/"
|
|
@@ -293,12 +301,13 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
|
|
|
293
301
|
"Host": "data.10jqka.com.cn",
|
|
294
302
|
"Pragma": "no-cache",
|
|
295
303
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
296
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
304
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
305
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
297
306
|
"X-Requested-With": "XMLHttpRequest",
|
|
298
307
|
}
|
|
299
308
|
r = requests.get(url.format(page), headers=headers)
|
|
300
309
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
301
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
310
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
302
311
|
|
|
303
312
|
del big_df["序号"]
|
|
304
313
|
big_df.reset_index(inplace=True)
|
|
@@ -320,7 +329,9 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
|
|
|
320
329
|
big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
|
|
321
330
|
big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
|
|
322
331
|
big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
|
|
323
|
-
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
332
|
+
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
333
|
+
big_df["领涨股-涨跌幅"], errors="coerce"
|
|
334
|
+
)
|
|
324
335
|
else:
|
|
325
336
|
big_df.columns = [
|
|
326
337
|
"序号",
|
|
@@ -356,13 +367,14 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
|
|
|
356
367
|
"Host": "data.10jqka.com.cn",
|
|
357
368
|
"Pragma": "no-cache",
|
|
358
369
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
359
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
370
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
371
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
360
372
|
"X-Requested-With": "XMLHttpRequest",
|
|
361
373
|
}
|
|
362
374
|
url = "http://data.10jqka.com.cn/funds/ddzz/order/desc/ajax/1/free/1/"
|
|
363
375
|
r = requests.get(url, headers=headers)
|
|
364
|
-
soup = BeautifulSoup(r.text, "lxml")
|
|
365
|
-
raw_page = soup.find("span", attrs={"class": "page_info"}).text
|
|
376
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
377
|
+
raw_page = soup.find(name="span", attrs={"class": "page_info"}).text
|
|
366
378
|
page_num = raw_page.split("/")[1]
|
|
367
379
|
url = "http://data.10jqka.com.cn/funds/ddzz/order/asc/page/{}/ajax/1/free/1/"
|
|
368
380
|
big_df = pd.DataFrame()
|
|
@@ -382,12 +394,13 @@ def stock_fund_flow_big_deal() -> pd.DataFrame:
|
|
|
382
394
|
"Host": "data.10jqka.com.cn",
|
|
383
395
|
"Pragma": "no-cache",
|
|
384
396
|
"Referer": "http://data.10jqka.com.cn/funds/hyzjl/",
|
|
385
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
|
|
397
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
398
|
+
"Chrome/90.0.4430.85 Safari/537.36",
|
|
386
399
|
"X-Requested-With": "XMLHttpRequest",
|
|
387
400
|
}
|
|
388
401
|
r = requests.get(url.format(page), headers=headers)
|
|
389
402
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
390
|
-
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
403
|
+
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
|
|
391
404
|
|
|
392
405
|
big_df.columns = [
|
|
393
406
|
"成交时间",
|
|
@@ -5,13 +5,14 @@ Date: 2023/11/27 18:00
|
|
|
5
5
|
Desc: 东方财富网-数据中心-股东分析
|
|
6
6
|
https://data.eastmoney.com/gdfx/
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import pandas as pd
|
|
9
10
|
import requests
|
|
10
11
|
from tqdm import tqdm
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
def stock_gdfx_free_holding_statistics_em(
|
|
14
|
-
|
|
15
|
+
date: str = "20210630",
|
|
15
16
|
) -> pd.DataFrame:
|
|
16
17
|
"""
|
|
17
18
|
东方财富网-数据中心-股东分析-股东持股统计-十大流通股东
|
|
@@ -83,15 +84,33 @@ def stock_gdfx_free_holding_statistics_em(
|
|
|
83
84
|
]
|
|
84
85
|
]
|
|
85
86
|
big_df["统计次数"] = pd.to_numeric(big_df["统计次数"])
|
|
86
|
-
big_df["公告日后涨幅统计-10个交易日-平均涨幅"] = pd.to_numeric(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
big_df["公告日后涨幅统计-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
big_df["公告日后涨幅统计-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
big_df["公告日后涨幅统计-10个交易日-平均涨幅"] = pd.to_numeric(
|
|
88
|
+
big_df["公告日后涨幅统计-10个交易日-平均涨幅"]
|
|
89
|
+
)
|
|
90
|
+
big_df["公告日后涨幅统计-10个交易日-最大涨幅"] = pd.to_numeric(
|
|
91
|
+
big_df["公告日后涨幅统计-10个交易日-最大涨幅"]
|
|
92
|
+
)
|
|
93
|
+
big_df["公告日后涨幅统计-10个交易日-最小涨幅"] = pd.to_numeric(
|
|
94
|
+
big_df["公告日后涨幅统计-10个交易日-最小涨幅"]
|
|
95
|
+
)
|
|
96
|
+
big_df["公告日后涨幅统计-30个交易日-平均涨幅"] = pd.to_numeric(
|
|
97
|
+
big_df["公告日后涨幅统计-30个交易日-平均涨幅"]
|
|
98
|
+
)
|
|
99
|
+
big_df["公告日后涨幅统计-30个交易日-最大涨幅"] = pd.to_numeric(
|
|
100
|
+
big_df["公告日后涨幅统计-30个交易日-最大涨幅"]
|
|
101
|
+
)
|
|
102
|
+
big_df["公告日后涨幅统计-30个交易日-最小涨幅"] = pd.to_numeric(
|
|
103
|
+
big_df["公告日后涨幅统计-30个交易日-最小涨幅"]
|
|
104
|
+
)
|
|
105
|
+
big_df["公告日后涨幅统计-60个交易日-平均涨幅"] = pd.to_numeric(
|
|
106
|
+
big_df["公告日后涨幅统计-60个交易日-平均涨幅"]
|
|
107
|
+
)
|
|
108
|
+
big_df["公告日后涨幅统计-60个交易日-最大涨幅"] = pd.to_numeric(
|
|
109
|
+
big_df["公告日后涨幅统计-60个交易日-最大涨幅"]
|
|
110
|
+
)
|
|
111
|
+
big_df["公告日后涨幅统计-60个交易日-最小涨幅"] = pd.to_numeric(
|
|
112
|
+
big_df["公告日后涨幅统计-60个交易日-最小涨幅"]
|
|
113
|
+
)
|
|
95
114
|
return big_df
|
|
96
115
|
|
|
97
116
|
|
|
@@ -167,15 +186,33 @@ def stock_gdfx_holding_statistics_em(date: str = "20210930") -> pd.DataFrame:
|
|
|
167
186
|
]
|
|
168
187
|
]
|
|
169
188
|
big_df["统计次数"] = pd.to_numeric(big_df["统计次数"])
|
|
170
|
-
big_df["公告日后涨幅统计-10个交易日-平均涨幅"] = pd.to_numeric(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
big_df["公告日后涨幅统计-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
big_df["公告日后涨幅统计-
|
|
177
|
-
|
|
178
|
-
|
|
189
|
+
big_df["公告日后涨幅统计-10个交易日-平均涨幅"] = pd.to_numeric(
|
|
190
|
+
big_df["公告日后涨幅统计-10个交易日-平均涨幅"]
|
|
191
|
+
)
|
|
192
|
+
big_df["公告日后涨幅统计-10个交易日-最大涨幅"] = pd.to_numeric(
|
|
193
|
+
big_df["公告日后涨幅统计-10个交易日-最大涨幅"]
|
|
194
|
+
)
|
|
195
|
+
big_df["公告日后涨幅统计-10个交易日-最小涨幅"] = pd.to_numeric(
|
|
196
|
+
big_df["公告日后涨幅统计-10个交易日-最小涨幅"]
|
|
197
|
+
)
|
|
198
|
+
big_df["公告日后涨幅统计-30个交易日-平均涨幅"] = pd.to_numeric(
|
|
199
|
+
big_df["公告日后涨幅统计-30个交易日-平均涨幅"]
|
|
200
|
+
)
|
|
201
|
+
big_df["公告日后涨幅统计-30个交易日-最大涨幅"] = pd.to_numeric(
|
|
202
|
+
big_df["公告日后涨幅统计-30个交易日-最大涨幅"]
|
|
203
|
+
)
|
|
204
|
+
big_df["公告日后涨幅统计-30个交易日-最小涨幅"] = pd.to_numeric(
|
|
205
|
+
big_df["公告日后涨幅统计-30个交易日-最小涨幅"]
|
|
206
|
+
)
|
|
207
|
+
big_df["公告日后涨幅统计-60个交易日-平均涨幅"] = pd.to_numeric(
|
|
208
|
+
big_df["公告日后涨幅统计-60个交易日-平均涨幅"]
|
|
209
|
+
)
|
|
210
|
+
big_df["公告日后涨幅统计-60个交易日-最大涨幅"] = pd.to_numeric(
|
|
211
|
+
big_df["公告日后涨幅统计-60个交易日-最大涨幅"]
|
|
212
|
+
)
|
|
213
|
+
big_df["公告日后涨幅统计-60个交易日-最小涨幅"] = pd.to_numeric(
|
|
214
|
+
big_df["公告日后涨幅统计-60个交易日-最小涨幅"]
|
|
215
|
+
)
|
|
179
216
|
return big_df
|
|
180
217
|
|
|
181
218
|
|
|
@@ -334,7 +371,7 @@ def stock_gdfx_holding_change_em(date: str = "20210930") -> pd.DataFrame:
|
|
|
334
371
|
|
|
335
372
|
|
|
336
373
|
def stock_gdfx_free_top_10_em(
|
|
337
|
-
|
|
374
|
+
symbol: str = "sh688686", date: str = "20240930"
|
|
338
375
|
) -> pd.DataFrame:
|
|
339
376
|
"""
|
|
340
377
|
东方财富网-个股-十大流通股东
|
|
@@ -384,14 +421,16 @@ def stock_gdfx_free_top_10_em(
|
|
|
384
421
|
"变动比率",
|
|
385
422
|
]
|
|
386
423
|
]
|
|
387
|
-
temp_df["持股数"] = pd.to_numeric(temp_df["持股数"])
|
|
388
|
-
temp_df["占总流通股本持股比例"] = pd.to_numeric(
|
|
389
|
-
|
|
424
|
+
temp_df["持股数"] = pd.to_numeric(temp_df["持股数"], errors="coerce")
|
|
425
|
+
temp_df["占总流通股本持股比例"] = pd.to_numeric(
|
|
426
|
+
temp_df["占总流通股本持股比例"], errors="coerce"
|
|
427
|
+
)
|
|
428
|
+
temp_df["变动比率"] = pd.to_numeric(temp_df["变动比率"], errors="coerce")
|
|
390
429
|
return temp_df
|
|
391
430
|
|
|
392
431
|
|
|
393
432
|
def stock_gdfx_top_10_em(
|
|
394
|
-
|
|
433
|
+
symbol: str = "sh688686", date: str = "20210630"
|
|
395
434
|
) -> pd.DataFrame:
|
|
396
435
|
"""
|
|
397
436
|
东方财富网-个股-十大股东
|
|
@@ -477,24 +516,27 @@ def stock_gdfx_free_holding_detail_em(date: str = "20210930") -> pd.DataFrame:
|
|
|
477
516
|
|
|
478
517
|
big_df.reset_index(inplace=True)
|
|
479
518
|
big_df["index"] = big_df.index + 1
|
|
480
|
-
big_df.rename(
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
519
|
+
big_df.rename(
|
|
520
|
+
columns={
|
|
521
|
+
"index": "序号",
|
|
522
|
+
"HOLDER_NAME": "股东名称",
|
|
523
|
+
"HOLDER_TYPE": "股东类型",
|
|
524
|
+
"SHARES_TYPE": "股份类型",
|
|
525
|
+
"HOLDER_RANK": "股东排名",
|
|
526
|
+
"SECURITY_CODE": "股票代码",
|
|
527
|
+
"SECURITY_NAME_ABBR": "股票简称",
|
|
528
|
+
"HOLD_NUM": "期末持股-数量",
|
|
529
|
+
"FREE_HOLDNUM_RATIO": "期末持股-持股占流通股比",
|
|
530
|
+
"XZCHANGE": "期末持股-数量变化",
|
|
531
|
+
"CHANGE_RATIO": "期末持股-数量变化比例",
|
|
532
|
+
"HOLDNUM_CHANGE_NAME": "期末持股-持股变动",
|
|
533
|
+
"HOLDER_MARKET_CAP": "期末持股-流通市值",
|
|
534
|
+
"END_DATE": "报告期",
|
|
535
|
+
"UPDATE_DATE": "公告日",
|
|
536
|
+
"REPORT_DATE_NAME": "报告名称",
|
|
537
|
+
},
|
|
538
|
+
inplace=True,
|
|
539
|
+
)
|
|
498
540
|
|
|
499
541
|
big_df = big_df[
|
|
500
542
|
[
|
|
@@ -515,13 +557,21 @@ def stock_gdfx_free_holding_detail_em(date: str = "20210930") -> pd.DataFrame:
|
|
|
515
557
|
big_df["报告期"] = pd.to_datetime(big_df["报告期"], errors="coerce").dt.date
|
|
516
558
|
big_df["公告日"] = pd.to_datetime(big_df["公告日"], errors="coerce").dt.date
|
|
517
559
|
big_df["期末持股-数量"] = pd.to_numeric(big_df["期末持股-数量"], errors="coerce")
|
|
518
|
-
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
519
|
-
|
|
520
|
-
|
|
560
|
+
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
561
|
+
big_df["期末持股-数量变化"], errors="coerce"
|
|
562
|
+
)
|
|
563
|
+
big_df["期末持股-数量变化比例"] = pd.to_numeric(
|
|
564
|
+
big_df["期末持股-数量变化比例"], errors="coerce"
|
|
565
|
+
)
|
|
566
|
+
big_df["期末持股-流通市值"] = pd.to_numeric(
|
|
567
|
+
big_df["期末持股-流通市值"], errors="coerce"
|
|
568
|
+
)
|
|
521
569
|
return big_df
|
|
522
570
|
|
|
523
571
|
|
|
524
|
-
def stock_gdfx_holding_detail_em(
|
|
572
|
+
def stock_gdfx_holding_detail_em(
|
|
573
|
+
date: str = "20230331", indicator: str = "个人", symbol: str = "新进"
|
|
574
|
+
) -> pd.DataFrame:
|
|
525
575
|
"""
|
|
526
576
|
东方财富网-数据中心-股东分析-股东持股明细-十大股东
|
|
527
577
|
https://data.eastmoney.com/gdfx/HoldingAnalyse.html
|
|
@@ -559,22 +609,24 @@ def stock_gdfx_holding_detail_em(date: str = "20230331", indicator: str = "个
|
|
|
559
609
|
|
|
560
610
|
big_df.reset_index(inplace=True)
|
|
561
611
|
big_df["index"] = big_df.index + 1
|
|
562
|
-
big_df.rename(
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
612
|
+
big_df.rename(
|
|
613
|
+
columns={
|
|
614
|
+
"index": "序号",
|
|
615
|
+
"HOLDER_NAME": "股东名称",
|
|
616
|
+
"HOLDER_NEWTYPE": "股东类型",
|
|
617
|
+
"RANK": "股东排名",
|
|
618
|
+
"SECURITY_CODE": "股票代码",
|
|
619
|
+
"SECURITY_NAME_ABBR": "股票简称",
|
|
620
|
+
"END_DATE": "报告期",
|
|
621
|
+
"HOLD_NUM": "期末持股-数量",
|
|
622
|
+
"HOLD_NUM_CHANGE": "期末持股-数量变化",
|
|
623
|
+
"HOLD_RATIO_CHANGE": "期末持股-数量变化比例",
|
|
624
|
+
"HOLDNUM_CHANGE_NAME": "期末持股-持股变动",
|
|
625
|
+
"HOLDER_MARKET_CAP": "期末持股-流通市值",
|
|
626
|
+
"NOTICE_DATE": "公告日",
|
|
627
|
+
},
|
|
628
|
+
inplace=True,
|
|
629
|
+
)
|
|
578
630
|
|
|
579
631
|
big_df = big_df[
|
|
580
632
|
[
|
|
@@ -596,9 +648,15 @@ def stock_gdfx_holding_detail_em(date: str = "20230331", indicator: str = "个
|
|
|
596
648
|
big_df["报告期"] = pd.to_datetime(big_df["报告期"], errors="coerce").dt.date
|
|
597
649
|
big_df["公告日"] = pd.to_datetime(big_df["公告日"], errors="coerce").dt.date
|
|
598
650
|
big_df["期末持股-数量"] = pd.to_numeric(big_df["期末持股-数量"], errors="coerce")
|
|
599
|
-
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
600
|
-
|
|
601
|
-
|
|
651
|
+
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
652
|
+
big_df["期末持股-数量变化"], errors="coerce"
|
|
653
|
+
)
|
|
654
|
+
big_df["期末持股-数量变化比例"] = pd.to_numeric(
|
|
655
|
+
big_df["期末持股-数量变化比例"], errors="coerce"
|
|
656
|
+
)
|
|
657
|
+
big_df["期末持股-流通市值"] = pd.to_numeric(
|
|
658
|
+
big_df["期末持股-流通市值"], errors="coerce"
|
|
659
|
+
)
|
|
602
660
|
big_df["股东排名"] = pd.to_numeric(big_df["股东排名"], errors="coerce")
|
|
603
661
|
return big_df
|
|
604
662
|
|
|
@@ -637,23 +695,26 @@ def stock_gdfx_free_holding_analyse_em(date: str = "20230930") -> pd.DataFrame:
|
|
|
637
695
|
|
|
638
696
|
big_df.reset_index(inplace=True)
|
|
639
697
|
big_df["index"] = big_df.index + 1
|
|
640
|
-
big_df.rename(
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
698
|
+
big_df.rename(
|
|
699
|
+
columns={
|
|
700
|
+
"index": "序号",
|
|
701
|
+
"HOLDER_NAME": "股东名称",
|
|
702
|
+
"HOLDER_TYPE": "股东类型",
|
|
703
|
+
"SECURITY_CODE": "股票代码",
|
|
704
|
+
"SECURITY_NAME_ABBR": "股票简称",
|
|
705
|
+
"END_DATE": "报告期",
|
|
706
|
+
"HOLD_NUM": "期末持股-数量",
|
|
707
|
+
"XZCHANGE": "期末持股-数量变化",
|
|
708
|
+
"HOLD_RATIO_CHANGE": "期末持股-数量变化比例",
|
|
709
|
+
"HOLDNUM_CHANGE_NAME": "期末持股-持股变动",
|
|
710
|
+
"HOLDER_MARKET_CAP": "期末持股-流通市值",
|
|
711
|
+
"UPDATE_DATE": "公告日",
|
|
712
|
+
"D10_ADJCHRATE": "公告日后涨跌幅-10个交易日",
|
|
713
|
+
"D30_ADJCHRATE": "公告日后涨跌幅-30个交易日",
|
|
714
|
+
"D60_ADJCHRATE": "公告日后涨跌幅-60个交易日",
|
|
715
|
+
},
|
|
716
|
+
inplace=True,
|
|
717
|
+
)
|
|
657
718
|
big_df = big_df[
|
|
658
719
|
[
|
|
659
720
|
"序号",
|
|
@@ -676,12 +737,24 @@ def stock_gdfx_free_holding_analyse_em(date: str = "20230930") -> pd.DataFrame:
|
|
|
676
737
|
big_df["报告期"] = pd.to_datetime(big_df["报告期"], errors="coerce").dt.date
|
|
677
738
|
big_df["公告日"] = pd.to_datetime(big_df["公告日"], errors="coerce").dt.date
|
|
678
739
|
big_df["期末持股-数量"] = pd.to_numeric(big_df["期末持股-数量"], errors="coerce")
|
|
679
|
-
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
big_df["
|
|
683
|
-
|
|
684
|
-
|
|
740
|
+
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
741
|
+
big_df["期末持股-数量变化"], errors="coerce"
|
|
742
|
+
)
|
|
743
|
+
big_df["期末持股-数量变化比例"] = pd.to_numeric(
|
|
744
|
+
big_df["期末持股-数量变化比例"], errors="coerce"
|
|
745
|
+
)
|
|
746
|
+
big_df["期末持股-流通市值"] = pd.to_numeric(
|
|
747
|
+
big_df["期末持股-流通市值"], errors="coerce"
|
|
748
|
+
)
|
|
749
|
+
big_df["公告日后涨跌幅-10个交易日"] = pd.to_numeric(
|
|
750
|
+
big_df["公告日后涨跌幅-10个交易日"], errors="coerce"
|
|
751
|
+
)
|
|
752
|
+
big_df["公告日后涨跌幅-30个交易日"] = pd.to_numeric(
|
|
753
|
+
big_df["公告日后涨跌幅-30个交易日"], errors="coerce"
|
|
754
|
+
)
|
|
755
|
+
big_df["公告日后涨跌幅-60个交易日"] = pd.to_numeric(
|
|
756
|
+
big_df["公告日后涨跌幅-60个交易日"], errors="coerce"
|
|
757
|
+
)
|
|
685
758
|
return big_df
|
|
686
759
|
|
|
687
760
|
|
|
@@ -718,7 +791,7 @@ def stock_gdfx_holding_analyse_em(date: str = "20230331") -> pd.DataFrame:
|
|
|
718
791
|
big_df = pd.concat([big_df, temp_df], ignore_index=True)
|
|
719
792
|
|
|
720
793
|
big_df.reset_index(inplace=True)
|
|
721
|
-
big_df[
|
|
794
|
+
big_df["index"] = big_df["index"] + 1
|
|
722
795
|
big_df.rename(
|
|
723
796
|
columns={
|
|
724
797
|
"index": "序号",
|
|
@@ -766,12 +839,24 @@ def stock_gdfx_holding_analyse_em(date: str = "20230331") -> pd.DataFrame:
|
|
|
766
839
|
big_df["公告日"] = pd.to_datetime(big_df["公告日"]).dt.date
|
|
767
840
|
big_df["报告期"] = pd.to_datetime(big_df["报告期"]).dt.date
|
|
768
841
|
big_df["期末持股-数量"] = pd.to_numeric(big_df["期末持股-数量"], errors="coerce")
|
|
769
|
-
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
big_df["
|
|
773
|
-
|
|
774
|
-
|
|
842
|
+
big_df["期末持股-数量变化"] = pd.to_numeric(
|
|
843
|
+
big_df["期末持股-数量变化"], errors="coerce"
|
|
844
|
+
)
|
|
845
|
+
big_df["期末持股-数量变化比例"] = pd.to_numeric(
|
|
846
|
+
big_df["期末持股-数量变化比例"], errors="coerce"
|
|
847
|
+
)
|
|
848
|
+
big_df["期末持股-流通市值"] = pd.to_numeric(
|
|
849
|
+
big_df["期末持股-流通市值"], errors="coerce"
|
|
850
|
+
)
|
|
851
|
+
big_df["公告日后涨跌幅-10个交易日"] = pd.to_numeric(
|
|
852
|
+
big_df["公告日后涨跌幅-10个交易日"], errors="coerce"
|
|
853
|
+
)
|
|
854
|
+
big_df["公告日后涨跌幅-30个交易日"] = pd.to_numeric(
|
|
855
|
+
big_df["公告日后涨跌幅-30个交易日"], errors="coerce"
|
|
856
|
+
)
|
|
857
|
+
big_df["公告日后涨跌幅-60个交易日"] = pd.to_numeric(
|
|
858
|
+
big_df["公告日后涨跌幅-60个交易日"], errors="coerce"
|
|
859
|
+
)
|
|
775
860
|
return big_df
|
|
776
861
|
|
|
777
862
|
|