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 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.8"
3024
+ __version__ = "1.16.10"
3023
3025
  __author__ = "AKFamily"
3024
3026
 
3025
3027
  import sys
@@ -20,7 +20,7 @@ def option_current_em() -> pd.DataFrame:
20
20
  url = "https://23.push2.eastmoney.com/api/qt/clist/get"
21
21
  params = {
22
22
  "pn": "1",
23
- "pz": "200000",
23
+ "pz": "50000",
24
24
  "po": "1",
25
25
  "np": "2",
26
26
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
@@ -1,10 +1,11 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2022/1/25 10:20
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
- 'fid': 'f250',
22
- 'po': '1',
23
- 'pz': '5000',
24
- 'pn': '1',
25
- 'np': '1',
26
- 'fltt': '2',
27
- 'invt': '2',
28
- 'ut': 'b2884a393a59ad64002292a3e90d46a5',
29
- 'fields': 'f1,f2,f3,f12,f13,f14,f161,f250,f330,f331,f332,f333,f334,f335,f337,f301,f152',
30
- 'fs': 'm:10'
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: 2023/3/20 15:20
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": "5000",
24
+ "pz": "50000",
24
25
  "pn": "1",
25
- "np": "1",
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: 2022/1/24 15:41
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
- 'fid': 'f301',
22
- 'po': '1',
23
- 'pz': '5000',
24
- 'pn': '1',
25
- 'np': '1',
26
- 'fltt': '2',
27
- 'invt': '2',
28
- 'ut': 'b2884a393a59ad64002292a3e90d46a5',
29
- 'fields': 'f1,f2,f3,f12,f13,f14,f298,f299,f249,f300,f330,f331,f332,f333,f334,f335,f336,f301,f152',
30
- 'fs': 'm:10'
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: 2024/3/22 17:00
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="20240321")
67
+ stock_intraday_sina_df = stock_intraday_sina(symbol="sz000001", date="20250221")
68
68
  print(stock_intraday_sina_df)
@@ -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 = "20060712") -> pd.DataFrame:
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
- if int(date) <= 20181231:
236
- url = "http://query.sse.com.cn/commonQuery.do"
237
- params = {
238
- "searchDate": "-".join([date[:4], date[4:6], date[6:]]),
239
- "sqlId": "COMMON_SSE_SJ_GPSJ_CJGK_DAYCJGK_C",
240
- "stockType": "90",
241
- "_": "1616744620492",
242
- }
243
- headers = {
244
- "Referer": "http://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
- "-",
257
- "主板B",
258
- ]
259
- temp_df = temp_df[
260
- [
261
- "单日情况",
262
- "主板A",
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
- temp_df = temp_df[
510
- [
511
- "单日情况",
512
- "主板A",
513
- "主板B",
514
- "科创板",
515
- ]
516
- ]
517
- temp_df["单日情况"] = [
518
- "市价总值",
519
- "成交量",
520
- "平均市盈率",
521
- "换手率",
522
- "成交金额",
523
- "-",
524
- "流通市值",
525
- "流通换手率",
526
- "报告日期",
527
- "挂牌数",
528
- "-",
529
- ]
530
- temp_df = temp_df[temp_df["单日情况"] != "-"]
531
- temp_df["单日情况"] = temp_df["单日情况"].astype("category")
532
- list_custom_new = [
533
- "挂牌数",
534
- "市价总值",
535
- "流通市值",
536
- "成交金额",
537
- "成交量",
538
- "平均市盈率",
539
- "换手率",
540
- "流通换手率",
541
- ]
542
- temp_df["单日情况"].cat.set_categories(list_custom_new)
543
- temp_df.sort_values("单日情况", ascending=True, inplace=True)
544
- temp_df.reset_index(inplace=True, drop=True)
545
- temp_df["主板A"] = pd.to_numeric(temp_df["主板A"], errors="coerce")
546
- temp_df["主板B"] = pd.to_numeric(temp_df["主板B"], errors="coerce")
547
- temp_df["科创板"] = pd.to_numeric(temp_df["科创板"], errors="coerce")
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="20211221")
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,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.8
3
+ Version: 1.16.10
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=sV_ASKhc3pFmHqDb7FWagE9E5-RGGn9salWxA8UalTM,187931
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=5Y9Fqhk6VxsDLxQLJQyptkgAEAszIQiDyMl_wRfZjAg,5963
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=uL-wxwsZu3UbeUmHs5W1x3PBfk0HfVyGubx6FvkeyPg,2471
202
- akshare/option/option_risk_analysis_em.py,sha256=WYwjXzZhIr8WpwoVKXfAnFA7Ylx_vLQiFDeTxDvrnBk,2577
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=XAHbSvUvcmyuv6rr2hxxGalWcKK8EqaP2L8G7p8woko,2487
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=HMuAAO2Teu4NUrOcBvyJdxYgWx-51qJCdtcqFmFNQg8,2359
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=CkUB2Y4ZcNtNbyKb1hJZDG9KvlvqMDNvcPwLN7iO7AQ,22891
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.8.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
- akshare-1.16.8.dist-info/METADATA,sha256=EDmDzDVFOA46-cyHoLPASRP0RTBs5-XTRzE-7ewOS8o,13678
385
- akshare-1.16.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
386
- akshare-1.16.8.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
- akshare-1.16.8.dist-info/RECORD,,
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,,