akshare 1.16.7__py3-none-any.whl → 1.16.9__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_commodity.py +51 -23
- akshare/stock/stock_intraday_sina.py +2 -2
- akshare/stock/stock_summary.py +71 -401
- {akshare-1.16.7.dist-info → akshare-1.16.9.dist-info}/METADATA +1 -1
- {akshare-1.16.7.dist-info → akshare-1.16.9.dist-info}/RECORD +9 -9
- {akshare-1.16.7.dist-info → akshare-1.16.9.dist-info}/LICENSE +0 -0
- {akshare-1.16.7.dist-info → akshare-1.16.9.dist-info}/WHEEL +0 -0
- {akshare-1.16.7.dist-info → akshare-1.16.9.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
@@ -3016,9 +3016,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
3016
3016
|
1.16.5 fix: fix stock_sector_fund_flow_rank interface
|
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
|
+
1.16.8 fix: fix option_czce_daily interface
|
3020
|
+
1.16.9 fix: fix stock_sse_deal_daily interface
|
3019
3021
|
"""
|
3020
3022
|
|
3021
|
-
__version__ = "1.16.
|
3023
|
+
__version__ = "1.16.9"
|
3022
3024
|
__author__ = "AKFamily"
|
3023
3025
|
|
3024
3026
|
import sys
|
@@ -190,7 +190,7 @@ def __option_czce_daily_convert_numeric_columns(df):
|
|
190
190
|
except: # noqa: E722
|
191
191
|
return x
|
192
192
|
|
193
|
-
# 创建DataFrame的副本以避免SettingWithCopyWarning
|
193
|
+
# 创建 DataFrame 的副本以避免 SettingWithCopyWarning
|
194
194
|
df_copy = df.copy()
|
195
195
|
df_copy.columns = [item.strip() for item in df_copy]
|
196
196
|
# 应用转换
|
@@ -208,9 +208,9 @@ def option_czce_daily(
|
|
208
208
|
http://www.czce.com.cn/cn/sspz/dejbqhqq/H770227index_1.htm#tabs-2
|
209
209
|
:param trade_date: 交易日
|
210
210
|
:type trade_date: str
|
211
|
-
:param symbol: choice of {"白糖期权", "棉花期权", "甲醇期权", "PTA期权",
|
212
|
-
"
|
213
|
-
"
|
211
|
+
:param symbol: choice of {"白糖期权", "棉花期权", "甲醇期权", "PTA期权", "动力煤期权", "菜籽粕期权", "菜籽油期权",
|
212
|
+
"花生期权", "对二甲苯期权", "烧碱期权", "纯碱期权", "短纤期权", "锰硅期权", "硅铁期权", "尿素期权", "苹果期权", "红枣期权",
|
213
|
+
"玻璃期权", "瓶片期权"}
|
214
214
|
:type symbol: str
|
215
215
|
:return: 日频行情数据
|
216
216
|
:rtype: pandas.DataFrame
|
@@ -226,6 +226,24 @@ def option_czce_daily(
|
|
226
226
|
r = requests.get(url)
|
227
227
|
f = StringIO(r.text)
|
228
228
|
table_df = pd.read_table(f, encoding="utf-8", skiprows=1, sep="|")
|
229
|
+
table_df.columns = [
|
230
|
+
"合约代码",
|
231
|
+
"昨结算",
|
232
|
+
"今开盘",
|
233
|
+
"最高价",
|
234
|
+
"最低价",
|
235
|
+
"今收盘",
|
236
|
+
"今结算",
|
237
|
+
"涨跌1",
|
238
|
+
"涨跌2",
|
239
|
+
"成交量(手)",
|
240
|
+
"持仓量",
|
241
|
+
"增减量",
|
242
|
+
"成交额(万元)",
|
243
|
+
"DELTA",
|
244
|
+
"隐含波动率",
|
245
|
+
"行权量",
|
246
|
+
]
|
229
247
|
if symbol == "白糖期权":
|
230
248
|
temp_df = table_df[table_df.iloc[:, 0].str.contains("SR")]
|
231
249
|
temp_df.reset_index(inplace=True, drop=True)
|
@@ -250,14 +268,26 @@ def option_czce_daily(
|
|
250
268
|
temp_df = temp_df.iloc[:-1, :].copy()
|
251
269
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
252
270
|
return new_df
|
271
|
+
elif symbol == "动力煤期权":
|
272
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("ZC")]
|
273
|
+
temp_df.reset_index(inplace=True, drop=True)
|
274
|
+
temp_df = temp_df.iloc[:-1, :].copy()
|
275
|
+
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
276
|
+
return new_df
|
253
277
|
elif symbol == "菜籽粕期权":
|
254
278
|
temp_df = table_df[table_df.iloc[:, 0].str.contains("RM")]
|
255
279
|
temp_df.reset_index(inplace=True, drop=True)
|
256
280
|
temp_df = temp_df.iloc[:-1, :].copy()
|
257
281
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
258
282
|
return new_df
|
259
|
-
elif symbol == "
|
260
|
-
temp_df = table_df[table_df.iloc[:, 0].str.contains("
|
283
|
+
elif symbol == "菜籽油期权":
|
284
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("OI")]
|
285
|
+
temp_df.reset_index(inplace=True, drop=True)
|
286
|
+
temp_df = temp_df.iloc[:-1, :].copy()
|
287
|
+
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
288
|
+
return new_df
|
289
|
+
elif symbol == "花生期权":
|
290
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("PK")]
|
261
291
|
temp_df.reset_index(inplace=True, drop=True)
|
262
292
|
temp_df = temp_df.iloc[:-1, :].copy()
|
263
293
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
@@ -268,14 +298,14 @@ def option_czce_daily(
|
|
268
298
|
temp_df = temp_df.iloc[:-1, :].copy()
|
269
299
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
270
300
|
return new_df
|
271
|
-
elif symbol == "
|
272
|
-
temp_df = table_df[table_df.iloc[:, 0].str.contains("
|
301
|
+
elif symbol == "对二甲苯期权":
|
302
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("PX")]
|
273
303
|
temp_df.reset_index(inplace=True, drop=True)
|
274
304
|
temp_df = temp_df.iloc[:-1, :].copy()
|
275
305
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
276
306
|
return new_df
|
277
|
-
elif symbol == "
|
278
|
-
temp_df = table_df[table_df.iloc[:, 0].str.contains("
|
307
|
+
elif symbol == "烧碱期权":
|
308
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("SH")]
|
279
309
|
temp_df.reset_index(inplace=True, drop=True)
|
280
310
|
temp_df = temp_df.iloc[:-1, :].copy()
|
281
311
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
@@ -286,6 +316,12 @@ def option_czce_daily(
|
|
286
316
|
temp_df = temp_df.iloc[:-1, :].copy()
|
287
317
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
288
318
|
return new_df
|
319
|
+
elif symbol == "短纤期权":
|
320
|
+
temp_df = table_df[table_df.iloc[:, 0].str.contains("PF")]
|
321
|
+
temp_df.reset_index(inplace=True, drop=True)
|
322
|
+
temp_df = temp_df.iloc[:-1, :].copy()
|
323
|
+
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
324
|
+
return new_df
|
289
325
|
elif symbol == "锰硅期权":
|
290
326
|
temp_df = table_df[table_df.iloc[:, 0].str.contains("SM")]
|
291
327
|
temp_df.reset_index(inplace=True, drop=True)
|
@@ -316,18 +352,6 @@ def option_czce_daily(
|
|
316
352
|
temp_df = temp_df.iloc[:-1, :].copy()
|
317
353
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
318
354
|
return new_df
|
319
|
-
elif symbol == "对二甲苯期权":
|
320
|
-
temp_df = table_df[table_df.iloc[:, 0].str.contains("PX")]
|
321
|
-
temp_df.reset_index(inplace=True, drop=True)
|
322
|
-
temp_df = temp_df.iloc[:-1, :].copy()
|
323
|
-
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
324
|
-
return new_df
|
325
|
-
elif symbol == "烧碱期权":
|
326
|
-
temp_df = table_df[table_df.iloc[:, 0].str.contains("SH")]
|
327
|
-
temp_df.reset_index(inplace=True, drop=True)
|
328
|
-
temp_df = temp_df.iloc[:-1, :].copy()
|
329
|
-
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
330
|
-
return new_df
|
331
355
|
elif symbol == "玻璃期权":
|
332
356
|
temp_df = table_df[table_df.iloc[:, 0].str.contains("FG")]
|
333
357
|
temp_df.reset_index(inplace=True, drop=True)
|
@@ -340,8 +364,12 @@ def option_czce_daily(
|
|
340
364
|
temp_df = temp_df.iloc[:-1, :].copy()
|
341
365
|
new_df = __option_czce_daily_convert_numeric_columns(temp_df)
|
342
366
|
return new_df
|
367
|
+
else:
|
368
|
+
return pd.DataFrame()
|
343
369
|
except: # noqa: E722
|
344
370
|
return pd.DataFrame()
|
371
|
+
else:
|
372
|
+
return pd.DataFrame()
|
345
373
|
|
346
374
|
|
347
375
|
def option_shfe_daily(
|
@@ -607,7 +635,7 @@ def option_gfex_vol_daily(symbol: str = "碳酸锂", trade_date: str = "20230724
|
|
607
635
|
|
608
636
|
|
609
637
|
if __name__ == "__main__":
|
610
|
-
option_czce_daily_df = option_czce_daily(symbol="白糖期权", trade_date="
|
638
|
+
option_czce_daily_df = option_czce_daily(symbol="白糖期权", trade_date="20170419")
|
611
639
|
print(option_czce_daily_df)
|
612
640
|
|
613
641
|
option_dce_daily_one, option_dce_daily_two = option_dce_daily(
|
@@ -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=Flwht16-YxveFrqhWbTIm7RbwBJcIZurkUUQMmuveeM,187978
|
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
|
@@ -190,7 +190,7 @@ akshare/nlp/nlp_interface.py,sha256=PyZjT3PkuTbloop-JwLwZ2kNi22zdO-r_pRUWQ5SmgM,
|
|
190
190
|
akshare/option/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
|
191
191
|
akshare/option/cons.py,sha256=zTRZ62RFwOcAKfmso-7nZJtT3a8Dt1nQbNnEjSqgjpI,4811
|
192
192
|
akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
|
193
|
-
akshare/option/option_commodity.py,sha256=
|
193
|
+
akshare/option/option_commodity.py,sha256=KQ690k83wKnjYN5Sf3meLx0pvEYAc5dE2tOkv3AK3dk,26758
|
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
|
@@ -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.9.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
384
|
+
akshare-1.16.9.dist-info/METADATA,sha256=t3Rb5CRORzzNDSzdfrY0quIJUJ2bGHSygddHmYkGpr4,13678
|
385
|
+
akshare-1.16.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
386
|
+
akshare-1.16.9.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
387
|
+
akshare-1.16.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|