Tushare财经数据包安装与使用

一.Tushare介绍

Tushare是一个免费开源的python财经数据接口包。主要实现对股票数据等从数据采集、清晰加工和数据存储的过程。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然也可以通过Tushare的数据存储功能将数据保存到本地后用excel或关系数据库分析。

二.安装Tushare

版本升级

  • pip install tushare --upgrade

查看当前版本的方法:

import tushare
print(tushare.__version__)

可以通过https://tushare.pro/register?reg=352648注册,在个人中心中获取token值,在IDLE上输入:(PS:换电脑后把以上操作一遍即可)

token=‘你复制下来的token’
ts.set_token(token)
pro=ts.pro_api()

三.简单使用

(1)获取上证指数历史行情数据

在python的IDLE上我们调取相应的上证数据:

import tushare as ts
import pandas as pd

# 设置token,只需要在第一次调用或者token失效时设置
# 设置完成后,之后就不再需要这一个命令了
# ts.set_token('*******')

pro = ts.pro_api()
df_daily = pro.index_daily(ts_code="000001.SH")
df_daily.head()
pd.set_option('display.width',None)
print(df_daily)

一开始没有加上pd.set_option('display.width',None)时显示的结果如下图,

        ts_code trade_date      close  ...  pct_chg          vol        amount
0     000001.SH   20200228  2880.3038  ...  -3.7116  401216914.0  4.326578e+08
1     000001.SH   20200227  2991.3288  ...   0.1138  350523658.0  3.959556e+08
2     000001.SH   20200226  2987.9287  ...  -0.8338  469049552.0  4.953414e+08
3     000001.SH   20200225  3013.0501  ...  -0.5999  441622762.0  5.131286e+08
4     000001.SH   20200224  3031.2333  ...  -0.2775  370430044.0  4.516014e+08
...         ...        ...        ...  ...      ...          ...           ...
7131  000001.SH   19901225   120.2500  ...   4.9760         15.0  6.510000e+00
7132  000001.SH   19901224   114.5500  ...   4.9666         32.0  3.106300e+01
7133  000001.SH   19901221   109.1300  ...   4.5407         28.0  1.609600e+01
7134  000001.SH   19901220   104.3900  ...   4.4109        197.0  8.499200e+01
7135  000001.SH   19901219    99.9800  ...  -0.0200       1260.0  4.943110e+02

[7136 rows x 11 columns]

由于列数太多默认显示省略号,所以要加上那一句才能显示如下:

注意如果是行与行之间的省略则要添加 pd.set_option('display.max_rows', None) 注意学习官方文档http://pandas.pydata.org/pandas-docs/stable/options.html 。

        ts_code trade_date      close       open       high        low  pre_close    change  pct_chg          vol        amount
0     000001.SH   20200228  2880.3038  2924.6407  2948.1261  2878.5443  2991.3288 -111.0250  -3.7116  401216914.0  4.326578e+08
1     000001.SH   20200227  2991.3288  2992.4919  3009.4575  2980.4774  2987.9287    3.4001   0.1138  350523658.0  3.959556e+08
2     000001.SH   20200226  2987.9287  2978.4195  3028.7788  2974.9423  3013.0501  -25.1214  -0.8338  469049552.0  4.953414e+08
3     000001.SH   20200225  3013.0501  2982.0696  3016.9458  2943.7168  3031.2333  -18.1832  -0.5999  441622762.0  5.131286e+08
4     000001.SH   20200224  3031.2333  3027.8925  3042.1821  3007.3557  3039.6692   -8.4359  -0.2775  370430044.0  4.516014e+08
...         ...        ...        ...        ...        ...        ...        ...       ...      ...          ...           ...
7131  000001.SH   19901225   120.2500   120.0900   120.2500   114.5500   114.5500    5.7000   4.9760         15.0  6.510000e+00
7132  000001.SH   19901224   114.5500   113.5700   114.5500   109.1300   109.1300    5.4200   4.9666         32.0  3.106300e+01
7133  000001.SH   19901221   109.1300   109.0700   109.1300   103.7300   104.3900    4.7400   4.5407         28.0  1.609600e+01
7134  000001.SH   19901220   104.3900   104.3000   104.3900    99.9800    99.9800    4.4100   4.4109        197.0  8.499200e+01
7135  000001.SH   19901219    99.9800    96.0500    99.9800    95.7900   100.0000   -0.0200  -0.0200       1260.0  4.943110e+02

[7136 rows x 11 columns]

由上结果可以看出 收盘价、开盘价、最高价、最低价、昨日收盘价、涨幅、百分比涨幅、成交量和成交额

(2)处理日期

在刚才获取的数据中时间格式时20200228这种,而pandas对于时间序列处理提供了良好的支持。我们可以先把日期对象转换为datetime对象,以方便后续的使用。同时我们将时间设置为index。

df_daily.index = pd.to_datetime(df_daily['trade_date'])
df_daily.index[:5]

输出为

              ts_code trade_date      close       open       high        low  pre_close    change  pct_chg          vol        amount
trade_date                                                                                                                           
2020-02-28  000001.SH   20200228  2880.3038  2924.6407  2948.1261  2878.5443  2991.3288 -111.0250  -3.7116  401216914.0  4.326578e+08
2020-02-27  000001.SH   20200227  2991.3288  2992.4919  3009.4575  2980.4774  2987.9287    3.4001   0.1138  350523658.0  3.959556e+08
2020-02-26  000001.SH   20200226  2987.9287  2978.4195  3028.7788  2974.9423  3013.0501  -25.1214  -0.8338  469049552.0  4.953414e+08
2020-02-25  000001.SH   20200225  3013.0501  2982.0696  3016.9458  2943.7168  3031.2333  -18.1832  -0.5999  441622762.0  5.131286e+08
2020-02-24  000001.SH   20200224  3031.2333  3027.8925  3042.1821  3007.3557  3039.6692   -8.4359  -0.2775  370430044.0  4.516014e+08
...               ...        ...        ...        ...        ...        ...        ...       ...      ...          ...           ...
1990-12-25  000001.SH   19901225   120.2500   120.0900   120.2500   114.5500   114.5500    5.7000   4.9760         15.0  6.510000e+00
1990-12-24  000001.SH   19901224   114.5500   113.5700   114.5500   109.1300   109.1300    5.4200   4.9666         32.0  3.106300e+01
1990-12-21  000001.SH   19901221   109.1300   109.0700   109.1300   103.7300   104.3900    4.7400   4.5407         28.0  1.609600e+01
1990-12-20  000001.SH   19901220   104.3900   104.3000   104.3900    99.9800    99.9800    4.4100   4.4109        197.0  8.499200e+01
1990-12-19  000001.SH   19901219    99.9800    96.0500    99.9800    95.7900   100.0000   -0.0200  -0.0200       1260.0  4.943110e+02

(3)绘制历史收盘价曲线

import seaborn as sns
import matplotlib.pyplot as plt

# 设置为seaborn的样式,更美观
sns.set()

# 绘制收盘价曲线
df.plot(y="close");
plt.show()

(4)绘制均线

股票行情受各种因素影响,波动较大,因此我们经常会用均线来作为一个稳定趋势的参考。就以60日均线为例看下如何使用Python绘制均线。

import matplotlib.pyplot as plt

df_daily = df_daily.sort_index(ascending=True)
plt.figure(figsize=(12, 6))
df_daily.close['20150101':].plot()
df_daily.close.rolling(60).mean()['20150101':].plot();

(5)查看估值水平

Tushare还提供了接口用于获取每天的各项指标,其中就包含了我们接下来要查看的PE水平。

df_basic = pro.index_dailybasic(ts_code='000001.SH')
df_basic.head()

总市值、流通市值、总股本、流通股本、换手率、基于流通股本的换手率、PE(市盈率)、动态PE、PB(市净率)这些字段。

        ts_code trade_date      total_mv      float_mv   total_share   float_share    free_share  turnover_rate  turnover_rate_f     pe  pe_ttm    pb
0     000001.SH   20200228  3.883621e+13  2.856632e+13  4.811917e+12  3.543387e+12  1.394570e+12           1.12             2.84  13.14   12.44  1.32
1     000001.SH   20200227  4.028183e+13  2.961030e+13  4.811916e+12  3.543387e+12  1.394411e+12           0.97             2.48  13.62   12.90  1.37
2     000001.SH   20200226  4.023631e+13  2.954331e+13  4.811774e+12  3.542683e+12  1.393641e+12           1.31             3.33  13.60   12.89  1.37
3     000001.SH   20200225  4.052186e+13  2.970846e+13  4.811739e+12  3.539125e+12  1.391495e+12           1.23             3.14  13.70   12.98  1.38
4     000001.SH   20200224  4.078519e+13  2.989724e+13  4.811737e+12  3.539125e+12  1.390899e+12           1.03             2.63  13.79   13.07  1.39
...         ...        ...           ...           ...           ...           ...           ...            ...              ...    ...     ...   ...
2995  000001.SH   20071106  2.767806e+13  5.712421e+12  1.707958e+12  3.063398e+11  2.553918e+11           1.35             1.62  66.73   47.96  6.36
2996  000001.SH   20071105  2.820106e+13  5.746061e+12  1.707127e+12  3.061698e+11  2.553918e+11           1.58             1.89  67.99   48.86  6.48
2997  000001.SH   20071102  2.898440e+13  5.819473e+12  1.705926e+12  3.060803e+11  2.553918e+11           1.93             2.31  69.88   50.22  6.67
2998  000001.SH   20071101  2.963022e+13  5.944604e+12  1.705859e+12  3.058025e+11  2.553918e+11           2.11             2.52  71.43   51.34  6.82
2999  000001.SH   20071031  2.970958e+13  6.042734e+12  1.705817e+12  3.057889e+11  2.553918e+11           2.30             2.75  71.63   51.47  6.84

动态市盈率数据来看下当前A股上证的估值水平。

plt.figure(figsize=(12, 6))
sns.distplot(df_basic.pe_ttm, bins=100)
plt.axvline(x=df_basic.pe_ttm[0], color='red');

参考文章https://blog.csdn.net/qixizhuang/article/details/85254136

发布了287 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/104573614