akshare 1.16.8__py3-none-any.whl → 1.16.10__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 +3 -1
- akshare/option/option_em.py +1 -1
- akshare/option/option_premium_analysis_em.py +53 -50
- akshare/option/option_risk_analysis_em.py +5 -4
- akshare/option/option_value_analysis_em.py +59 -52
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_summary.py +71 -401
- {akshare-1.16.8.dist-info → akshare-1.16.10.dist-info}/METADATA +1 -1
- {akshare-1.16.8.dist-info → akshare-1.16.10.dist-info}/RECORD +12 -12
- {akshare-1.16.8.dist-info → akshare-1.16.10.dist-info}/LICENSE +0 -0
- {akshare-1.16.8.dist-info → akshare-1.16.10.dist-info}/WHEEL +0 -0
- {akshare-1.16.8.dist-info → akshare-1.16.10.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3017,9 +3017,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3017
3017
|
1.16.6 fix: fix stock_sgt_reference_exchange_rate_sse interface
|
3018
3018
|
1.16.7 fix: fix fund_lof_hist_em interface
|
3019
3019
|
1.16.8 fix: fix option_czce_daily interface
|
3020
|
+
1.16.9 fix: fix stock_sse_deal_daily interface
|
3021
|
+
1.16.10 fix: fix option_risk_analysis_em interface
|
3020
3022
|
"""
|
3021
3023
|
|
3022
|
-
__version__ = "1.16.
|
3024
|
+
__version__ = "1.16.10"
|
3023
3025
|
__author__ = "AKFamily"
|
3024
3026
|
|
3025
3027
|
import sys
|
akshare/option/option_em.py
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权折溢价
|
6
6
|
https://data.eastmoney.com/other/premium.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -18,60 +19,62 @@ def option_premium_analysis_em() -> pd.DataFrame:
|
|
18
19
|
"""
|
19
20
|
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
20
21
|
params = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
"fid": "f250",
|
23
|
+
"po": "1",
|
24
|
+
"pz": "50000",
|
25
|
+
"pn": "1",
|
26
|
+
"np": "2",
|
27
|
+
"fltt": "2",
|
28
|
+
"invt": "2",
|
29
|
+
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
30
|
+
"fields": "f1,f2,f3,f12,f13,f14,f161,f250,f330,f331,f332,f333,f334,f335,f337,f301,f152",
|
31
|
+
"fs": "m:10",
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
37
|
+
"-",
|
38
|
+
"最新价",
|
39
|
+
"涨跌幅",
|
40
|
+
"期权代码",
|
41
|
+
"-",
|
42
|
+
"期权名称",
|
43
|
+
"-",
|
44
|
+
"行权价",
|
45
|
+
"折溢价率",
|
46
|
+
"到期日",
|
47
|
+
"-",
|
48
|
+
"-",
|
49
|
+
"-",
|
50
|
+
"标的名称",
|
51
|
+
"标的最新价",
|
52
|
+
"标的涨跌幅",
|
53
|
+
"盈亏平衡价",
|
54
|
+
]
|
55
|
+
temp_df = temp_df[
|
56
|
+
[
|
57
|
+
"期权代码",
|
58
|
+
"期权名称",
|
59
|
+
"最新价",
|
60
|
+
"涨跌幅",
|
61
|
+
"行权价",
|
62
|
+
"折溢价率",
|
63
|
+
"标的名称",
|
64
|
+
"标的最新价",
|
65
|
+
"标的涨跌幅",
|
66
|
+
"盈亏平衡价",
|
67
|
+
"到期日",
|
68
|
+
]
|
53
69
|
]
|
54
|
-
temp_df = temp_df[
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
'标的最新价',
|
63
|
-
'标的涨跌幅',
|
64
|
-
'盈亏平衡价',
|
65
|
-
'到期日',
|
66
|
-
]]
|
67
|
-
temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
|
68
|
-
temp_df['涨跌幅'] = pd.to_numeric(temp_df['涨跌幅'], errors="coerce")
|
69
|
-
temp_df['行权价'] = pd.to_numeric(temp_df['行权价'], errors="coerce")
|
70
|
-
temp_df['折溢价率'] = pd.to_numeric(temp_df['折溢价率'], errors="coerce")
|
71
|
-
temp_df['标的最新价'] = pd.to_numeric(temp_df['标的最新价'], errors="coerce")
|
72
|
-
temp_df['标的涨跌幅'] = pd.to_numeric(temp_df['标的涨跌幅'], errors="coerce")
|
73
|
-
temp_df['盈亏平衡价'] = pd.to_numeric(temp_df['盈亏平衡价'], errors="coerce")
|
74
|
-
temp_df['到期日'] = pd.to_datetime(temp_df['到期日'].astype(str)).dt.date
|
70
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
71
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
72
|
+
temp_df["行权价"] = pd.to_numeric(temp_df["行权价"], errors="coerce")
|
73
|
+
temp_df["折溢价率"] = pd.to_numeric(temp_df["折溢价率"], errors="coerce")
|
74
|
+
temp_df["标的最新价"] = pd.to_numeric(temp_df["标的最新价"], errors="coerce")
|
75
|
+
temp_df["标的涨跌幅"] = pd.to_numeric(temp_df["标的涨跌幅"], errors="coerce")
|
76
|
+
temp_df["盈亏平衡价"] = pd.to_numeric(temp_df["盈亏平衡价"], errors="coerce")
|
77
|
+
temp_df["到期日"] = pd.to_datetime(temp_df["到期日"].astype(str)).dt.date
|
75
78
|
return temp_df
|
76
79
|
|
77
80
|
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权风险分析
|
6
6
|
https://data.eastmoney.com/other/riskanal.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -20,9 +21,9 @@ def option_risk_analysis_em() -> pd.DataFrame:
|
|
20
21
|
params = {
|
21
22
|
"fid": "f3",
|
22
23
|
"po": "1",
|
23
|
-
"pz": "
|
24
|
+
"pz": "50000",
|
24
25
|
"pn": "1",
|
25
|
-
"np": "
|
26
|
+
"np": "2",
|
26
27
|
"fltt": "2",
|
27
28
|
"invt": "2",
|
28
29
|
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
@@ -31,7 +32,7 @@ def option_risk_analysis_em() -> pd.DataFrame:
|
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
37
|
"-",
|
37
38
|
"最新价",
|
@@ -1,10 +1,11 @@
|
|
1
1
|
# -*- coding:utf-8 -*-
|
2
2
|
# !/usr/bin/env python
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/22 21:00
|
5
5
|
Desc: 东方财富网-数据中心-特色数据-期权价值分析
|
6
6
|
https://data.eastmoney.com/other/valueAnal.html
|
7
7
|
"""
|
8
|
+
|
8
9
|
import requests
|
9
10
|
import pandas as pd
|
10
11
|
|
@@ -18,62 +19,68 @@ def option_value_analysis_em() -> pd.DataFrame:
|
|
18
19
|
"""
|
19
20
|
url = "https://push2.eastmoney.com/api/qt/clist/get"
|
20
21
|
params = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
"fid": "f301",
|
23
|
+
"po": "1",
|
24
|
+
"pz": "50000",
|
25
|
+
"pn": "1",
|
26
|
+
"np": "2",
|
27
|
+
"fltt": "2",
|
28
|
+
"invt": "2",
|
29
|
+
"ut": "b2884a393a59ad64002292a3e90d46a5",
|
30
|
+
"fields": "f1,f2,f3,f12,f13,f14,f298,f299,f249,f300,f330,f331,f332,f333,f334,f335,f336,f301,f152",
|
31
|
+
"fs": "m:10",
|
31
32
|
}
|
32
33
|
r = requests.get(url, params=params)
|
33
34
|
data_json = r.json()
|
34
|
-
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
35
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"]).T
|
35
36
|
temp_df.columns = [
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
37
|
+
"-",
|
38
|
+
"最新价",
|
39
|
+
"-",
|
40
|
+
"期权代码",
|
41
|
+
"-",
|
42
|
+
"期权名称",
|
43
|
+
"-",
|
44
|
+
"隐含波动率",
|
45
|
+
"时间价值",
|
46
|
+
"内在价值",
|
47
|
+
"理论价格",
|
48
|
+
"到期日",
|
49
|
+
"-",
|
50
|
+
"-",
|
51
|
+
"-",
|
52
|
+
"标的名称",
|
53
|
+
"标的最新价",
|
54
|
+
"-",
|
55
|
+
"标的近一年波动率",
|
56
|
+
]
|
57
|
+
temp_df = temp_df[
|
58
|
+
[
|
59
|
+
"期权代码",
|
60
|
+
"期权名称",
|
61
|
+
"最新价",
|
62
|
+
"时间价值",
|
63
|
+
"内在价值",
|
64
|
+
"隐含波动率",
|
65
|
+
"理论价格",
|
66
|
+
"标的名称",
|
67
|
+
"标的最新价",
|
68
|
+
"标的近一年波动率",
|
69
|
+
"到期日",
|
70
|
+
]
|
55
71
|
]
|
56
|
-
temp_df = temp_df[
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
]]
|
69
|
-
temp_df['最新价'] = pd.to_numeric(temp_df['最新价'], errors="coerce")
|
70
|
-
temp_df['时间价值'] = pd.to_numeric(temp_df['时间价值'])
|
71
|
-
temp_df['内在价值'] = pd.to_numeric(temp_df['内在价值'])
|
72
|
-
temp_df['隐含波动率'] = pd.to_numeric(temp_df['隐含波动率'])
|
73
|
-
temp_df['理论价格'] = pd.to_numeric(temp_df['理论价格'], errors="coerce")
|
74
|
-
temp_df['标的最新价'] = pd.to_numeric(temp_df['标的最新价'])
|
75
|
-
temp_df['标的近一年波动率'] = pd.to_numeric(temp_df['标的近一年波动率'])
|
76
|
-
temp_df['到期日'] = pd.to_datetime(temp_df['到期日'].astype(str)).dt.date
|
72
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
73
|
+
temp_df["时间价值"] = pd.to_numeric(temp_df["时间价值"], errors="coerce")
|
74
|
+
temp_df["内在价值"] = pd.to_numeric(temp_df["内在价值"], errors="coerce")
|
75
|
+
temp_df["隐含波动率"] = pd.to_numeric(temp_df["隐含波动率"], errors="coerce")
|
76
|
+
temp_df["理论价格"] = pd.to_numeric(temp_df["理论价格"], errors="coerce")
|
77
|
+
temp_df["标的最新价"] = pd.to_numeric(temp_df["标的最新价"], errors="coerce")
|
78
|
+
temp_df["标的近一年波动率"] = pd.to_numeric(
|
79
|
+
temp_df["标的近一年波动率"], errors="coerce"
|
80
|
+
)
|
81
|
+
temp_df["到期日"] = pd.to_datetime(
|
82
|
+
temp_df["到期日"].astype(str), errors="coerce"
|
83
|
+
).dt.date
|
77
84
|
return temp_df
|
78
85
|
|
79
86
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding:utf-8 -*-
|
3
3
|
"""
|
4
|
-
Date:
|
4
|
+
Date: 2025/2/21 18:00
|
5
5
|
Desc: 新浪财经-日内分时数据
|
6
6
|
https://quote.eastmoney.com/f1.html?newcode=0.000001
|
7
7
|
"""
|
@@ -64,5 +64,5 @@ def stock_intraday_sina(
|
|
64
64
|
|
65
65
|
|
66
66
|
if __name__ == "__main__":
|
67
|
-
stock_intraday_sina_df = stock_intraday_sina(symbol="sz000001", date="
|
67
|
+
stock_intraday_sina_df = stock_intraday_sina(symbol="sz000001", date="20250221")
|
68
68
|
print(stock_intraday_sina_df)
|
akshare/stock/stock_summary.py
CHANGED
@@ -225,408 +225,87 @@ def stock_sse_summary() -> pd.DataFrame:
|
|
225
225
|
return temp_df
|
226
226
|
|
227
227
|
|
228
|
-
def stock_sse_deal_daily(date: str = "
|
228
|
+
def stock_sse_deal_daily(date: str = "20241216") -> pd.DataFrame:
|
229
229
|
"""
|
230
230
|
上海证券交易所-数据-股票数据-成交概况-股票成交概况-每日股票情况
|
231
231
|
https://www.sse.com.cn/market/stockdata/overview/day/
|
232
232
|
:return: 每日股票情况
|
233
233
|
:rtype: pandas.DataFrame
|
234
234
|
"""
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
"主板B",
|
264
|
-
]
|
265
|
-
]
|
266
|
-
temp_df["单日情况"] = [
|
267
|
-
"流通市值",
|
268
|
-
"流通换手率",
|
269
|
-
"平均市盈率",
|
270
|
-
"_",
|
271
|
-
"市价总值",
|
272
|
-
"_",
|
273
|
-
"换手率",
|
274
|
-
"_",
|
275
|
-
"挂牌数",
|
276
|
-
"_",
|
277
|
-
"_",
|
278
|
-
"_",
|
279
|
-
"_",
|
280
|
-
"_",
|
281
|
-
"成交笔数",
|
282
|
-
"成交金额",
|
283
|
-
"成交量",
|
284
|
-
"次新股换手率",
|
285
|
-
"_",
|
286
|
-
"_",
|
287
|
-
]
|
288
|
-
temp_df = temp_df[temp_df["单日情况"] != "_"]
|
289
|
-
temp_df["单日情况"] = temp_df["单日情况"].astype("category")
|
290
|
-
list_custom_new = [
|
291
|
-
"挂牌数",
|
292
|
-
"市价总值",
|
293
|
-
"流通市值",
|
294
|
-
"成交金额",
|
295
|
-
"成交量",
|
296
|
-
"成交笔数",
|
297
|
-
"平均市盈率",
|
298
|
-
"换手率",
|
299
|
-
"次新股换手率",
|
300
|
-
"流通换手率",
|
301
|
-
]
|
302
|
-
temp_df["单日情况"].cat.set_categories(list_custom_new)
|
303
|
-
temp_df.sort_values("单日情况", ascending=True, inplace=True)
|
304
|
-
temp_df.reset_index(drop=True, inplace=True)
|
305
|
-
# 构建空
|
306
|
-
temp_df["股票"] = "-"
|
307
|
-
temp_df["科创板"] = "-"
|
308
|
-
temp_df["股票回购"] = "-"
|
309
|
-
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
310
|
-
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
311
|
-
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
312
|
-
temp_df["科创板"] = pd.to_numeric("-", errors="coerce") # 默认位空
|
313
|
-
temp_df["股票回购"] = pd.to_numeric(temp_df["股票回购"], errors="coerce")
|
314
|
-
temp_df = temp_df[
|
315
|
-
[
|
316
|
-
"单日情况",
|
317
|
-
"股票",
|
318
|
-
"主板A",
|
319
|
-
"主板B",
|
320
|
-
"科创板",
|
321
|
-
"股票回购",
|
322
|
-
]
|
323
|
-
]
|
324
|
-
return temp_df
|
325
|
-
if int(date) <= 20211224:
|
326
|
-
url = "http://query.sse.com.cn/commonQuery.do"
|
327
|
-
params = {
|
328
|
-
"searchDate": "-".join([date[:4], date[4:6], date[6:]]),
|
329
|
-
"sqlId": "COMMON_SSE_SJ_GPSJ_CJGK_DAYCJGK_C",
|
330
|
-
"stockType": "90",
|
331
|
-
"_": "1616744620492",
|
332
|
-
}
|
333
|
-
headers = {
|
334
|
-
"Referer": "http://www.sse.com.cn/",
|
335
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
336
|
-
"Chrome/89.0.4389.90 Safari/537.36",
|
337
|
-
}
|
338
|
-
r = requests.get(url, params=params, headers=headers)
|
339
|
-
data_json = r.json()
|
340
|
-
temp_df = pd.DataFrame(data_json["result"])
|
341
|
-
temp_df = temp_df.T
|
342
|
-
temp_df.reset_index(inplace=True)
|
343
|
-
if len(temp_df.columns) == 6:
|
344
|
-
temp_df.columns = [
|
345
|
-
"单日情况",
|
346
|
-
"-",
|
347
|
-
"股票",
|
348
|
-
"主板B",
|
349
|
-
"主板A",
|
350
|
-
"股票回购",
|
351
|
-
]
|
352
|
-
temp_df = temp_df[
|
353
|
-
[
|
354
|
-
"单日情况",
|
355
|
-
"股票",
|
356
|
-
"主板A",
|
357
|
-
"主板B",
|
358
|
-
"股票回购",
|
359
|
-
]
|
360
|
-
]
|
361
|
-
temp_df["单日情况"] = [
|
362
|
-
"流通市值",
|
363
|
-
"流通换手率",
|
364
|
-
"平均市盈率",
|
365
|
-
"_",
|
366
|
-
"市价总值",
|
367
|
-
"_",
|
368
|
-
"换手率",
|
369
|
-
"_",
|
370
|
-
"挂牌数",
|
371
|
-
"_",
|
372
|
-
"_",
|
373
|
-
"_",
|
374
|
-
"_",
|
375
|
-
"_",
|
376
|
-
"成交笔数",
|
377
|
-
"成交金额",
|
378
|
-
"成交量",
|
379
|
-
"次新股换手率",
|
380
|
-
"_",
|
381
|
-
"_",
|
382
|
-
]
|
383
|
-
temp_df = temp_df[temp_df["单日情况"] != "_"]
|
384
|
-
temp_df["单日情况"] = temp_df["单日情况"].astype("category")
|
385
|
-
list_custom_new = [
|
386
|
-
"挂牌数",
|
387
|
-
"市价总值",
|
388
|
-
"流通市值",
|
389
|
-
"成交金额",
|
390
|
-
"成交量",
|
391
|
-
"成交笔数",
|
392
|
-
"平均市盈率",
|
393
|
-
"换手率",
|
394
|
-
"次新股换手率",
|
395
|
-
"流通换手率",
|
396
|
-
]
|
397
|
-
temp_df["单日情况"].cat.set_categories(list_custom_new)
|
398
|
-
temp_df.sort_values("单日情况", ascending=True, inplace=True)
|
399
|
-
temp_df.reset_index(drop=True, inplace=True)
|
400
|
-
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
401
|
-
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
402
|
-
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
403
|
-
temp_df["科创板"] = pd.to_numeric("-", errors="coerce") # 默认位空
|
404
|
-
temp_df["股票回购"] = pd.to_numeric(temp_df["股票回购"], errors="coerce")
|
405
|
-
temp_df = temp_df[
|
406
|
-
[
|
407
|
-
"单日情况",
|
408
|
-
"股票",
|
409
|
-
"主板A",
|
410
|
-
"主板B",
|
411
|
-
"科创板",
|
412
|
-
"股票回购",
|
413
|
-
]
|
414
|
-
]
|
415
|
-
return temp_df
|
416
|
-
else:
|
417
|
-
temp_df.columns = [
|
418
|
-
"单日情况",
|
419
|
-
"主板A",
|
420
|
-
"股票",
|
421
|
-
"主板B",
|
422
|
-
"_",
|
423
|
-
"股票回购",
|
424
|
-
"科创板",
|
425
|
-
]
|
426
|
-
temp_df = temp_df[
|
427
|
-
[
|
428
|
-
"单日情况",
|
429
|
-
"股票",
|
430
|
-
"主板A",
|
431
|
-
"主板B",
|
432
|
-
"科创板",
|
433
|
-
"股票回购",
|
434
|
-
]
|
435
|
-
]
|
436
|
-
temp_df["单日情况"] = [
|
437
|
-
"流通市值",
|
438
|
-
"流通换手率",
|
439
|
-
"平均市盈率",
|
440
|
-
"_",
|
441
|
-
"市价总值",
|
442
|
-
"_",
|
443
|
-
"换手率",
|
444
|
-
"_",
|
445
|
-
"挂牌数",
|
446
|
-
"_",
|
447
|
-
"_",
|
448
|
-
"_",
|
449
|
-
"_",
|
450
|
-
"_",
|
451
|
-
"成交笔数",
|
452
|
-
"成交金额",
|
453
|
-
"成交量",
|
454
|
-
"次新股换手率",
|
455
|
-
"_",
|
456
|
-
"_",
|
457
|
-
]
|
458
|
-
temp_df = temp_df[temp_df["单日情况"] != "_"]
|
459
|
-
temp_df["单日情况"] = temp_df["单日情况"].astype("category")
|
460
|
-
list_custom_new = [
|
461
|
-
"挂牌数",
|
462
|
-
"市价总值",
|
463
|
-
"流通市值",
|
464
|
-
"成交金额",
|
465
|
-
"成交量",
|
466
|
-
"成交笔数",
|
467
|
-
"平均市盈率",
|
468
|
-
"换手率",
|
469
|
-
"次新股换手率",
|
470
|
-
"流通换手率",
|
471
|
-
]
|
472
|
-
temp_df["单日情况"].cat.set_categories(list_custom_new)
|
473
|
-
temp_df.sort_values("单日情况", ascending=True, inplace=True)
|
474
|
-
temp_df.reset_index(drop=True, inplace=True)
|
475
|
-
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
476
|
-
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
477
|
-
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
478
|
-
temp_df["科创板"] = pd.to_numeric(temp_df["科创板"], errors="coerce")
|
479
|
-
temp_df["股票回购"] = pd.to_numeric(temp_df["股票回购"], errors="coerce")
|
480
|
-
return temp_df
|
481
|
-
elif int(date) <= 20220224:
|
482
|
-
url = "http://query.sse.com.cn/commonQuery.do"
|
483
|
-
params = {
|
484
|
-
"sqlId": "COMMON_SSE_SJ_GPSJ_CJGK_MRGK_C",
|
485
|
-
"SEARCH_DATE": "-".join([date[:4], date[4:6], date[6:]]),
|
486
|
-
"_": "1640836561673",
|
487
|
-
}
|
488
|
-
headers = {
|
489
|
-
"Referer": "http://www.sse.com.cn/",
|
490
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
491
|
-
"Chrome/89.0.4389.90 Safari/537.36",
|
492
|
-
}
|
493
|
-
r = requests.get(url, params=params, headers=headers)
|
494
|
-
data_json = r.json()
|
495
|
-
temp_df = pd.DataFrame(data_json["result"])
|
496
|
-
temp_df = temp_df.T
|
497
|
-
temp_df.reset_index(inplace=True)
|
498
|
-
temp_df.columns = [
|
235
|
+
url = "https://query.sse.com.cn/commonQuery.do"
|
236
|
+
params = {
|
237
|
+
"sqlId": "COMMON_SSE_SJ_GPSJ_CJGK_MRGK_C",
|
238
|
+
"PRODUCT_CODE": "01,02,03,11,17",
|
239
|
+
"type": "inParams",
|
240
|
+
"SEARCH_DATE": "-".join([date[:4], date[4:6], date[6:]]),
|
241
|
+
"_": "1640836561673",
|
242
|
+
}
|
243
|
+
headers = {
|
244
|
+
"Referer": "https://www.sse.com.cn/",
|
245
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
246
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
247
|
+
}
|
248
|
+
r = requests.get(url, params=params, headers=headers)
|
249
|
+
data_json = r.json()
|
250
|
+
temp_df = pd.DataFrame(data_json["result"])
|
251
|
+
temp_df = temp_df.T
|
252
|
+
temp_df.reset_index(inplace=True)
|
253
|
+
temp_df.columns = [
|
254
|
+
"单日情况",
|
255
|
+
"主板A",
|
256
|
+
"主板B",
|
257
|
+
"科创板",
|
258
|
+
"股票回购",
|
259
|
+
"股票",
|
260
|
+
]
|
261
|
+
temp_df = temp_df[
|
262
|
+
[
|
499
263
|
"单日情况",
|
264
|
+
"股票",
|
500
265
|
"主板A",
|
501
266
|
"主板B",
|
502
267
|
"科创板",
|
503
|
-
"
|
504
|
-
"-",
|
505
|
-
"-",
|
506
|
-
"-",
|
507
|
-
"-",
|
268
|
+
"股票回购",
|
508
269
|
]
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
return temp_df
|
549
|
-
else:
|
550
|
-
url = "http://query.sse.com.cn/commonQuery.do"
|
551
|
-
params = {
|
552
|
-
"sqlId": "COMMON_SSE_SJ_GPSJ_CJGK_MRGK_C",
|
553
|
-
"PRODUCT_CODE": "01,02,03,11,17",
|
554
|
-
"type": "inParams",
|
555
|
-
"SEARCH_DATE": "-".join([date[:4], date[4:6], date[6:]]),
|
556
|
-
"_": "1640836561673",
|
557
|
-
}
|
558
|
-
headers = {
|
559
|
-
"Referer": "http://www.sse.com.cn/",
|
560
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
561
|
-
"Chrome/89.0.4389.90 Safari/537.36",
|
562
|
-
}
|
563
|
-
r = requests.get(url, params=params, headers=headers)
|
564
|
-
data_json = r.json()
|
565
|
-
temp_df = pd.DataFrame(data_json["result"])
|
566
|
-
temp_df = temp_df.T
|
567
|
-
temp_df.reset_index(inplace=True)
|
568
|
-
if len(temp_df.T) == 5:
|
569
|
-
temp_df.columns = [
|
570
|
-
"单日情况",
|
571
|
-
"主板A",
|
572
|
-
"主板B",
|
573
|
-
"科创板",
|
574
|
-
"股票",
|
575
|
-
]
|
576
|
-
temp_df["股票回购"] = "-"
|
577
|
-
else:
|
578
|
-
temp_df.columns = [
|
579
|
-
"单日情况",
|
580
|
-
"主板A",
|
581
|
-
"主板B",
|
582
|
-
"科创板",
|
583
|
-
"股票回购",
|
584
|
-
"股票",
|
585
|
-
]
|
586
|
-
temp_df = temp_df[
|
587
|
-
[
|
588
|
-
"单日情况",
|
589
|
-
"股票",
|
590
|
-
"主板A",
|
591
|
-
"主板B",
|
592
|
-
"科创板",
|
593
|
-
"股票回购",
|
594
|
-
]
|
595
|
-
]
|
596
|
-
temp_df["单日情况"] = [
|
597
|
-
"市价总值",
|
598
|
-
"成交量",
|
599
|
-
"平均市盈率",
|
600
|
-
"换手率",
|
601
|
-
"成交金额",
|
602
|
-
"-",
|
603
|
-
"流通市值",
|
604
|
-
"流通换手率",
|
605
|
-
"报告日期",
|
606
|
-
"挂牌数",
|
607
|
-
"-",
|
608
|
-
]
|
609
|
-
temp_df = temp_df[temp_df["单日情况"] != "-"]
|
610
|
-
temp_df["单日情况"] = temp_df["单日情况"].astype("category")
|
611
|
-
list_custom_new = [
|
612
|
-
"挂牌数",
|
613
|
-
"市价总值",
|
614
|
-
"流通市值",
|
615
|
-
"成交金额",
|
616
|
-
"成交量",
|
617
|
-
"平均市盈率",
|
618
|
-
"换手率",
|
619
|
-
"流通换手率",
|
620
|
-
]
|
621
|
-
temp_df["单日情况"].cat.set_categories(list_custom_new)
|
622
|
-
temp_df.sort_values("单日情况", ascending=True, inplace=True)
|
623
|
-
temp_df.reset_index(inplace=True, drop=True)
|
624
|
-
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
625
|
-
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
626
|
-
temp_df["科创板"] = pd.to_numeric(temp_df["科创板"], errors="coerce")
|
627
|
-
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
628
|
-
temp_df["股票回购"] = pd.to_numeric(temp_df["股票回购"], errors="coerce")
|
629
|
-
return temp_df
|
270
|
+
]
|
271
|
+
temp_df["单日情况"] = [
|
272
|
+
"市价总值",
|
273
|
+
"成交量",
|
274
|
+
"平均市盈率",
|
275
|
+
"换手率",
|
276
|
+
"成交金额",
|
277
|
+
"-",
|
278
|
+
"流通市值",
|
279
|
+
"流通换手率",
|
280
|
+
"报告日期",
|
281
|
+
"挂牌数",
|
282
|
+
"-",
|
283
|
+
]
|
284
|
+
temp_df = temp_df[temp_df["单日情况"] != "-"]
|
285
|
+
temp_df = temp_df[temp_df["单日情况"] != "报告日期"]
|
286
|
+
# 定义期望的指标顺序
|
287
|
+
desired_order = [
|
288
|
+
"挂牌数",
|
289
|
+
"市价总值",
|
290
|
+
"流通市值",
|
291
|
+
"成交金额",
|
292
|
+
"成交量",
|
293
|
+
"平均市盈率",
|
294
|
+
"换手率",
|
295
|
+
"流通换手率",
|
296
|
+
]
|
297
|
+
# 使用 categorical 类型重新排序
|
298
|
+
temp_df["单日情况"] = pd.Categorical(
|
299
|
+
temp_df["单日情况"], categories=desired_order, ordered=True
|
300
|
+
)
|
301
|
+
# 按照指标排序
|
302
|
+
temp_df.sort_values("单日情况", ignore_index=True, inplace=True)
|
303
|
+
temp_df["股票"] = pd.to_numeric(temp_df["股票"], errors="coerce")
|
304
|
+
temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
|
305
|
+
temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
|
306
|
+
temp_df["科创板"] = pd.to_numeric(temp_df["科创板"], errors="coerce")
|
307
|
+
temp_df["股票回购"] = pd.to_numeric(temp_df["股票回购"], errors="coerce")
|
308
|
+
return temp_df
|
630
309
|
|
631
310
|
|
632
311
|
if __name__ == "__main__":
|
@@ -644,14 +323,5 @@ if __name__ == "__main__":
|
|
644
323
|
stock_sse_summary_df = stock_sse_summary()
|
645
324
|
print(stock_sse_summary_df)
|
646
325
|
|
647
|
-
stock_sse_deal_daily_df = stock_sse_deal_daily(date="
|
648
|
-
print(stock_sse_deal_daily_df)
|
649
|
-
|
650
|
-
stock_sse_deal_daily_df = stock_sse_deal_daily(date="20211227")
|
651
|
-
print(stock_sse_deal_daily_df)
|
652
|
-
|
653
|
-
stock_sse_deal_daily_df = stock_sse_deal_daily(date="20190613")
|
654
|
-
print(stock_sse_deal_daily_df)
|
655
|
-
|
656
|
-
stock_sse_deal_daily_df = stock_sse_deal_daily(date="20080131")
|
326
|
+
stock_sse_deal_daily_df = stock_sse_deal_daily(date="20250221")
|
657
327
|
print(stock_sse_deal_daily_df)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
akshare/__init__.py,sha256=
|
1
|
+
akshare/__init__.py,sha256=GnoafSM2cc42DZ931gdHom1GoGpZWs1LX-bEvD8w1A0,188030
|
2
2
|
akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
|
3
3
|
akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
|
4
4
|
akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
|
@@ -194,14 +194,14 @@ akshare/option/option_commodity.py,sha256=KQ690k83wKnjYN5Sf3meLx0pvEYAc5dE2tOkv3
|
|
194
194
|
akshare/option/option_commodity_sina.py,sha256=r6qK_K7w3A6Uqp5ZtBb4pW7vH04oMyeCEZLLGqi0jpA,7776
|
195
195
|
akshare/option/option_czce.py,sha256=L4i7TVKcOns5ZKoqq-mrSykdx3SGwu6OL4eI77-A_lc,1812
|
196
196
|
akshare/option/option_daily_stats_sse_szse.py,sha256=Ip_vE81qbEGt4ocbtWfUT7XGu0HWU0zKkzauZeq9RJA,4962
|
197
|
-
akshare/option/option_em.py,sha256=
|
197
|
+
akshare/option/option_em.py,sha256=M5mWE-YRQOywC9MY4CNgNwjLNl2AF32P4CHSF6zvK4k,5962
|
198
198
|
akshare/option/option_finance.py,sha256=7rnEeHo-7Sddrs36Q4c99CXL_9m8IJzw9S1Aqh3Bw90,12568
|
199
199
|
akshare/option/option_finance_sina.py,sha256=Pzsrl_NKN99nWPSAirq7ushGwSfd738ISVYeCHxMZXE,37843
|
200
200
|
akshare/option/option_lhb_em.py,sha256=VHrV2BWAPE7tj8q7J5Crjm-sey8QarYd1lgxKbkX2CQ,9090
|
201
|
-
akshare/option/option_premium_analysis_em.py,sha256=
|
202
|
-
akshare/option/option_risk_analysis_em.py,sha256=
|
201
|
+
akshare/option/option_premium_analysis_em.py,sha256=vPOndT5I7j_bS0rIsJpmu0QbCec7TQinON8OAdE06vc,2538
|
202
|
+
akshare/option/option_risk_analysis_em.py,sha256=3IlE-OxJprB8MOmSXd2Ym4y8xM01zHCML9lUQxJFa0g,2581
|
203
203
|
akshare/option/option_risk_indicator_sse.py,sha256=W1_mGrk8M9pbbadzSAy5euWMEGn4-cVWBc8Jk_I2WmI,2484
|
204
|
-
akshare/option/option_value_analysis_em.py,sha256=
|
204
|
+
akshare/option/option_value_analysis_em.py,sha256=lueBvtDelpYPccEYH0LSUvgUQqOGloVFqZFSyT2J2_0,2684
|
205
205
|
akshare/other/__init__.py,sha256=guH4GLhFcE_5iaMHOHtgK7QKa0i7esYdmZFfJMG6E10,82
|
206
206
|
akshare/other/other_car_cpca.py,sha256=hCBNUrCI2l3OCP3Gqgr_4zpyzhO99XCBoiwkIhUM3r0,34987
|
207
207
|
akshare/other/other_car_gasgoo.py,sha256=KaCMVPydiGJvhJN9eZEvObygYquCsSgsZkQRB0J6srk,3046
|
@@ -258,7 +258,7 @@ akshare/stock/stock_industry_sw.py,sha256=C0FjDg976EA0EksRS3sChbmJOZmOPEOzKCrHVs
|
|
258
258
|
akshare/stock/stock_info.py,sha256=AqzLzsTlYTSExBtyrZZBjI-D-VROj9e7Sq37WKHJ7XQ,16314
|
259
259
|
akshare/stock/stock_info_em.py,sha256=F-K8ZzWW70KTzShP82semh8RKklUEot2zxuzNDum20I,2615
|
260
260
|
akshare/stock/stock_intraday_em.py,sha256=cm0qKVeCOqmjqd3WxqwjMCoa1uMA2zb98f6HX9_pIPQ,5905
|
261
|
-
akshare/stock/stock_intraday_sina.py,sha256=
|
261
|
+
akshare/stock/stock_intraday_sina.py,sha256=7LzXRwjdPo-BHwvs8244-MFiGriPUCFBJqRW-r9iVB4,2359
|
262
262
|
akshare/stock/stock_ipo_summary_cninfo.py,sha256=Ma-54GsOOhRWxilLH-Qmm0VVbpJQGf2XWKaJ8NBSgAY,3847
|
263
263
|
akshare/stock/stock_new_cninfo.py,sha256=EOuZowDLQSSHyPAwXcuPXbQkqhbz2nRBZsM7o2ZWILE,5725
|
264
264
|
akshare/stock/stock_news_cx.py,sha256=aaAD-HTqAX0tOSD-0-Zus9pftvOdD3Y608GKYB1OMPE,1097
|
@@ -268,7 +268,7 @@ akshare/stock/stock_repurchase_em.py,sha256=XVAUD_yd48wqxbMbfU0Ne2SNFOSG9NBklUhf
|
|
268
268
|
akshare/stock/stock_share_changes_cninfo.py,sha256=siy4PiZgYuNQn5jUUg2G7CyZ_yvuXNi3MVUDFhe5npY,4923
|
269
269
|
akshare/stock/stock_share_hold.py,sha256=sKiWH69n8_MQohi0qZ3Br-WQRq9I7S0USrb-tMVinb0,11028
|
270
270
|
akshare/stock/stock_stop.py,sha256=8HyazJAFj-s12ujUtrxO8VPXyA5bF9-3eNEj0qzGwMg,1185
|
271
|
-
akshare/stock/stock_summary.py,sha256=
|
271
|
+
akshare/stock/stock_summary.py,sha256=rtJImzACxpGRqYGe9-yNTzsSZDlsG1Uns18sDIgunZY,11204
|
272
272
|
akshare/stock/stock_us_famous.py,sha256=enx_-EzEJWAhrMVQZaN83ETY_YEWO2xEStRm6z3upO0,3655
|
273
273
|
akshare/stock/stock_us_js.py,sha256=wwZpRvVHqjxwd0cb2O5vtRW8Zw90Kdl5O4XNwoevN64,2502
|
274
274
|
akshare/stock/stock_us_pink.py,sha256=BX7-tG4Zs0k2vSYGxHH0Yob-moD6AAu2a-ytZpxgIRQ,3065
|
@@ -380,8 +380,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
380
380
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
381
381
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
382
382
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
383
|
-
akshare-1.16.
|
384
|
-
akshare-1.16.
|
385
|
-
akshare-1.16.
|
386
|
-
akshare-1.16.
|
387
|
-
akshare-1.16.
|
383
|
+
akshare-1.16.10.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
384
|
+
akshare-1.16.10.dist-info/METADATA,sha256=RNN700E4_9n33dSVXHfX6Upk4psd4Dbq2nYwi-jLTSQ,13679
|
385
|
+
akshare-1.16.10.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
386
|
+
akshare-1.16.10.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
387
|
+
akshare-1.16.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|