tushare 1.4.18__py3-none-any.whl → 1.4.19__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.
tushare/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  import codecs
3
3
  import os
4
4
 
5
- __version__ = '1.4.18'
5
+ __version__ = '1.4.19'
6
6
  __author__ = 'Jimmy Liu'
7
7
 
8
8
  """
tushare/stock/rtq.py CHANGED
@@ -249,146 +249,155 @@ def get_stock_all_a_dc(page_count: Optional[int] = None,
249
249
  22、60日涨跌幅:60DAY
250
250
  23、年初至今涨跌幅:1YEAR
251
251
  """
252
- url = "http://82.push2.eastmoney.com/api/qt/clist/get"
253
- params = {
254
- "pn": "1",
255
- "pz": "50000",
256
- "po": "1",
257
- "np": "1",
258
- "ut": "bd1d9ddb04089700cf9c27f6f7426281",
259
- "fltt": "2",
260
- "invt": "2",
261
- "fid": "f3",
262
- "fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048",
263
- "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
264
- "_": "1623833739532",
265
- }
266
- if page_count:
267
- params["pz"] = 20
268
- r = requests.get(url, params=params, proxies=proxies)
269
- data_json = r.json()
270
- if not data_json["data"]["diff"]:
271
- return pd.DataFrame()
272
- temp_df = pd.DataFrame(data_json["data"]["diff"])
273
- temp_df.columns = [
274
- "_",
275
- "最新价",
276
- "涨跌幅",
277
- "涨跌额",
278
- "成交量",
279
- "成交额",
280
- "振幅",
281
- "换手率",
282
- "市盈率-动态",
283
- "量比",
284
- "5分钟涨跌",
285
- "代码",
286
- "_",
287
- "名称",
288
- "最高",
289
- "最低",
290
- "今开",
291
- "昨收",
292
- "总市值",
293
- "流通市值",
294
- "涨速",
295
- "市净率",
296
- "60日涨跌幅",
297
- "年初至今涨跌幅",
298
- "-",
299
- "-",
300
- "-",
301
- "-",
302
- "-",
303
- "-",
304
- "-",
305
- ]
306
- temp_df.reset_index(inplace=True)
307
- # temp_df["index"] = temp_df.index + 1
308
- # temp_df.rename(columns={"index": "序号"}, inplace=True)
309
- temp_df = temp_df[
310
- [
311
- # "序号",
312
- "代码",
313
- "名称",
252
+ dfs = []
253
+ for page in range(1,500):
254
+ url = "http://82.push2.eastmoney.com/api/qt/clist/get"
255
+ params = {
256
+ "pn": page,
257
+ "pz": "200",
258
+ "po": "1",
259
+ "np": "1",
260
+ "ut": "bd1d9ddb04089700cf9c27f6f7426281",
261
+ "fltt": "2",
262
+ "invt": "2",
263
+ "fid": "f3",
264
+ "fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048",
265
+ "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
266
+ "_": "1623833739532",
267
+ }
268
+ if page_count:
269
+ params["pz"] = 20
270
+ r = requests.get(url, params=params, proxies=proxies)
271
+ data_json = r.json()
272
+ if not data_json["data"]:
273
+ break
274
+ # return pd.DataFrame()
275
+ temp_df = pd.DataFrame(data_json["data"]["diff"])
276
+ temp_df.columns = [
277
+ "_",
314
278
  "最新价",
315
279
  "涨跌幅",
316
280
  "涨跌额",
317
281
  "成交量",
318
282
  "成交额",
319
283
  "振幅",
284
+ "换手率",
285
+ "市盈率-动态",
286
+ "量比",
287
+ "5分钟涨跌",
288
+ "代码",
289
+ "_",
290
+ "名称",
320
291
  "最高",
321
292
  "最低",
322
293
  "今开",
323
294
  "昨收",
324
- "量比",
325
- "换手率",
326
- "市盈率-动态",
327
- "市净率",
328
295
  "总市值",
329
296
  "流通市值",
330
297
  "涨速",
331
- "5分钟涨跌",
298
+ "市净率",
332
299
  "60日涨跌幅",
333
300
  "年初至今涨跌幅",
301
+ "-",
302
+ "-",
303
+ "-",
304
+ "-",
305
+ "-",
306
+ "-",
307
+ "-",
308
+ ]
309
+ temp_df.reset_index(inplace=True)
310
+ # temp_df["index"] = temp_df.index + 1
311
+ # temp_df.rename(columns={"index": "序号"}, inplace=True)
312
+ temp_df = temp_df[
313
+ [
314
+ # "序号",
315
+ "代码",
316
+ "名称",
317
+ "最新价",
318
+ "涨跌幅",
319
+ "涨跌额",
320
+ "成交量",
321
+ "成交额",
322
+ "振幅",
323
+ "最高",
324
+ "最低",
325
+ "今开",
326
+ "昨收",
327
+ "量比",
328
+ "换手率",
329
+ "市盈率-动态",
330
+ "市净率",
331
+ "总市值",
332
+ "流通市值",
333
+ "涨速",
334
+ "5分钟涨跌",
335
+ "60日涨跌幅",
336
+ "年初至今涨跌幅",
337
+ ]
334
338
  ]
335
- ]
336
339
 
337
- temp_df["代码"] = temp_df["代码"].apply(format_stock_code)
338
- temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
339
- temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
340
- temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
341
- temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
342
- temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
343
- temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
344
- temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
345
- temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
346
- temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
347
- temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce")
348
- temp_df["量比"] = pd.to_numeric(temp_df["量比"], errors="coerce")
349
- temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
350
- temp_df["市盈率-动态"] = pd.to_numeric(temp_df["市盈率-动态"], errors="coerce")
351
- temp_df["市净率"] = pd.to_numeric(temp_df["市净率"], errors="coerce")
352
- temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
353
- temp_df["流通市值"] = pd.to_numeric(temp_df["流通市值"], errors="coerce")
354
- temp_df["涨速"] = pd.to_numeric(temp_df["涨速"], errors="coerce")
355
- temp_df["5分钟涨跌"] = pd.to_numeric(temp_df["5分钟涨跌"], errors="coerce")
356
- temp_df["60日涨跌幅"] = pd.to_numeric(temp_df["60日涨跌幅"], errors="coerce")
357
- temp_df["年初至今涨跌幅"] = pd.to_numeric(temp_df["年初至今涨跌幅"], errors="coerce")
358
- temp_df.columns = [
359
- # "RANK",
360
- "TS_CODE",
361
- "NAME",
362
- "CLOSE",
363
- "PCT_CHANGE",
364
- "CHANGE",
365
- "VOLUME",
366
- "AMOUNT",
367
- "SWING",
368
- "HIGH",
369
- "LOW",
370
- "OPEN",
371
- "PRE_CLOSE",
372
- "VOL_RATIO",
373
- "TURNOVER_RATE",
374
- "PE",
375
- "PB",
376
- "TOTAL_MV",
377
- "FLOAT_MV",
378
- "RISE",
379
- "5MIN",
380
- "60DAY",
381
- "1YEAR",
382
- ]
383
- # 指定要转换为 float 类型的列
384
- cols_to_convert = ['CLOSE', 'PCT_CHANGE', 'CHANGE', "VOLUME", "AMOUNT", "SWING",
385
- 'HIGH', "LOW", "OPEN", "PRE_CLOSE", "VOL_RATIO", "TURNOVER_RATE", "PE", "PB", "TOTAL_MV", "FLOAT_MV",
386
- "RISE", "5MIN", "60DAY", "1YEAR"
387
- ]
388
- # 使用 to_numeric() 方法将指定的列转换为 float 类型,并将非数值类型的数据转换为 NaN
389
- temp_df[cols_to_convert] = temp_df[cols_to_convert].apply(pd.to_numeric, errors='coerce')
340
+ temp_df["代码"] = temp_df["代码"].apply(format_stock_code)
341
+ temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
342
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
343
+ temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
344
+ temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
345
+ temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
346
+ temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
347
+ temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
348
+ temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
349
+ temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
350
+ temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce")
351
+ temp_df["量比"] = pd.to_numeric(temp_df["量比"], errors="coerce")
352
+ temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
353
+ temp_df["市盈率-动态"] = pd.to_numeric(temp_df["市盈率-动态"], errors="coerce")
354
+ temp_df["市净率"] = pd.to_numeric(temp_df["市净率"], errors="coerce")
355
+ temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
356
+ temp_df["流通市值"] = pd.to_numeric(temp_df["流通市值"], errors="coerce")
357
+ temp_df["涨速"] = pd.to_numeric(temp_df["涨速"], errors="coerce")
358
+ temp_df["5分钟涨跌"] = pd.to_numeric(temp_df["5分钟涨跌"], errors="coerce")
359
+ temp_df["60日涨跌幅"] = pd.to_numeric(temp_df["60日涨跌幅"], errors="coerce")
360
+ temp_df["年初至今涨跌幅"] = pd.to_numeric(temp_df["年初至今涨跌幅"], errors="coerce")
361
+ temp_df.columns = [
362
+ # "RANK",
363
+ "TS_CODE",
364
+ "NAME",
365
+ "CLOSE",
366
+ "PCT_CHANGE",
367
+ "CHANGE",
368
+ "VOLUME",
369
+ "AMOUNT",
370
+ "SWING",
371
+ "HIGH",
372
+ "LOW",
373
+ "OPEN",
374
+ "PRE_CLOSE",
375
+ "VOL_RATIO",
376
+ "TURNOVER_RATE",
377
+ "PE",
378
+ "PB",
379
+ "TOTAL_MV",
380
+ "FLOAT_MV",
381
+ "RISE",
382
+ "5MIN",
383
+ "60DAY",
384
+ "1YEAR",
385
+ ]
386
+ # 指定要转换为 float 类型的列
387
+ cols_to_convert = ['CLOSE', 'PCT_CHANGE', 'CHANGE', "VOLUME", "AMOUNT", "SWING",
388
+ 'HIGH', "LOW", "OPEN", "PRE_CLOSE", "VOL_RATIO", "TURNOVER_RATE", "PE", "PB", "TOTAL_MV", "FLOAT_MV",
389
+ "RISE", "5MIN", "60DAY", "1YEAR"
390
+ ]
391
+ # 使用 to_numeric() 方法将指定的列转换为 float 类型,并将非数值类型的数据转换为 NaN
392
+ temp_df[cols_to_convert] = temp_df[cols_to_convert].apply(pd.to_numeric, errors='coerce')
393
+ dfs.append(
394
+ temp_df
395
+ )
396
+ if page_count:
397
+ break
398
+ result_df = pd.concat(dfs, ignore_index=True)
390
399
  # 使用 fillna() 方法将 NaN 值替换为 0
391
- df_filled = temp_df.fillna(0)
400
+ df_filled = result_df.fillna(0)
392
401
  df_sorted = df_filled.sort_values(by='PCT_CHANGE', ascending=False).reset_index(drop=True)
393
402
  return df_sorted
394
403
 
@@ -636,16 +645,17 @@ def format_str_to_float(x):
636
645
 
637
646
  if __name__ == '__main__':
638
647
  # df = realtime_quote(ts_code="000688.SH,000010.SH,000012.SH,399005.SZ", src="sina")
639
- # df = realtime_list(src="sina", page_count=1)
640
- # print(df)
648
+ # df = realtime_list(src="dc", page_count=1)
649
+ df = realtime_list(src="dc")
650
+ print(df)
641
651
  # ts_code = '399005.SZ'
642
652
  # ts_code = '000001.SZ'
643
653
  # # ts_code = '836149.BJ'
644
654
  # # ts_code = '600000.SH'
645
655
  # # ts_code = '000001.SH'
646
656
  # # ts_code = '000010.SH'
647
- ts_code = '600148.SH'
648
- df = realtime_quote(src="dc", ts_code=ts_code)
649
- print(df)
657
+ # ts_code = '600148.SH'
658
+ # df = realtime_quote(src="dc", ts_code=ts_code)
659
+ # print(df)
650
660
 
651
661
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tushare
3
- Version: 1.4.18
3
+ Version: 1.4.19
4
4
  Summary: A utility for crawling historical and Real-time Quotes data of China stocks
5
5
  Home-page: https://tushare.pro
6
6
  Author: Jimmy Liu
@@ -80,6 +80,10 @@ return::
80
80
 
81
81
  Log
82
82
  --------------
83
+ 1.4.19
84
+ -------
85
+ - 修复 realtime_list 返回数据不全的问题
86
+ -------
83
87
  1.4.17
84
88
  -------
85
89
  - 修复 920 开头更改是北交所
@@ -1,4 +1,4 @@
1
- tushare/__init__.py,sha256=2L3HKsXb_jdZ_osmal0V9cG7Glc85chMkAFchG_1XeY,4778
1
+ tushare/__init__.py,sha256=1SENOQgZRlssTEGodSX6PtPoZJR3i6UOPwCegihtvRA,4778
2
2
  tushare/bond/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  tushare/bond/bonds.py,sha256=PJM0xDiWZDpOPwDtbEU9PdP0M_Gu0c599YuB1rbZ3r8,232
4
4
  tushare/coins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,7 +35,7 @@ tushare/stock/news_vars.py,sha256=CQ18hvyoeScelBCqKgF_rgAufoEALAUT8y_LERvZKHk,45
35
35
  tushare/stock/newsevent.py,sha256=STR7C8MjtZlaXTCG0QNaojBuK4-oxP_8hT7ZIvRpbiI,6944
36
36
  tushare/stock/ref_vars.py,sha256=MIxor-2rISl65I32vUzC-z7ZC_QFzG4sxOKDyjLWuU4,4449
37
37
  tushare/stock/reference.py,sha256=x_HZlrP58T-5OTZ7SLdf2Dh9THj1h7cT4wcIp42IHFI,38227
38
- tushare/stock/rtq.py,sha256=uMljEz2030OE-i_JAkeSwM1gghK4g5omTx4mC0EqTVc,23159
38
+ tushare/stock/rtq.py,sha256=EPzVDbF0R6ojVrR17neEieR8-q5-ywcargLH0bFip1U,23949
39
39
  tushare/stock/rtq_vars.py,sha256=V6LeJkSP76z8veRfP_mGiQ63V5YBHoTMaqUA5hSBWh4,4200
40
40
  tushare/stock/shibor.py,sha256=Fx9OUZ429kz6l7ZdaYSD6p_X79ud69PDM9EZogm8xCY,6422
41
41
  tushare/stock/trading.py,sha256=3bvM4pexEYW-uGGEL7g6Vkte4sqGC1iYO6dC8mGLSdM,55619
@@ -72,8 +72,8 @@ tushare/util/verify_token.py,sha256=cuV3RErWbOC318NANCYL6K1LKZ3wSAL2yMwZHA7tD3s,
72
72
  tushare/util/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  tushare/util/protobuf/funcs.py,sha256=UCdK8FxTyjPZsNzoEeXqYzqrQXUmRMvW5hua6GPA66A,779
74
74
  tushare/util/protobuf/response_pb2.py,sha256=vJH9ONkDuJlg6y-q1PvuDZoviKrK7hzNtMieQHK45DI,11347
75
- tushare-1.4.18.dist-info/LICENSE,sha256=C2j55UI0Ul-1-wA1-rn7OaY6b3vGl4YukiyvYzHsU9o,1503
76
- tushare-1.4.18.dist-info/METADATA,sha256=CVHRLIhtj6fvzzYRjivj5_Z71cZFIKuInm9IY7E1nUE,3030
77
- tushare-1.4.18.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
78
- tushare-1.4.18.dist-info/top_level.txt,sha256=HHOxMuqc31KuAIcxpE0t5dAPMKbaiRtjsjTMFd7FlXI,8
79
- tushare-1.4.18.dist-info/RECORD,,
75
+ tushare-1.4.19.dist-info/LICENSE,sha256=C2j55UI0Ul-1-wA1-rn7OaY6b3vGl4YukiyvYzHsU9o,1503
76
+ tushare-1.4.19.dist-info/METADATA,sha256=po7Jtf-7liUnFFassvlJQCrQalR5s-cLnKAjxwxWHpc,3108
77
+ tushare-1.4.19.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
78
+ tushare-1.4.19.dist-info/top_level.txt,sha256=HHOxMuqc31KuAIcxpE0t5dAPMKbaiRtjsjTMFd7FlXI,8
79
+ tushare-1.4.19.dist-info/RECORD,,