Python获取时序数据并进行可视化分析
2019-08-03 18:54
921 查看
1. 准备工作
tushare是一个第三方财经数据接口包,需要安装包并完成注册。
-
安装tushare包
[code]pip install tushare
-
为防恶意调用接口数据,官方()需要新用户完成注册、提高积分(例如达到200)、取得访问权限token ID,例如:1797f6915fbc1e612c33c6ed4cf85a2b7b349d85db80bf0860337fff))。可通过如下链接(https://tushare.pro/register?reg=285935)进入官网完成注册。
2. 加载数据
首先需要导入包已安装的tushare包。然后通过tokenID获取一个有访问权限的API接口,最终通过官方文档说明,使用
index_daily()来获取样例数据。这里取
399401.SZ的交易日期和收盘价。
[code]import tushare as ts ts.set_token("1797f6915fbc1e612c33c6ed4cf85a2b7b349d85db80bf0860337fff") pro=ts.pro_api() df1=pro.index_daily(ts_code="399401.SZ")[['trade_date', 'close']]
3. 数据处理-转化与合并
-
数据类型转化为datetime
导入数据后,先观察源数据的字段类型是否符合预期。通过执行如下脚本,得到当前数据集中,
trade_date为object 并非日期类型
[code]# 查看数据类型 print(df1.dtypes) # 查看样例数据 print(df1.head())
pandas中改变某列的数据类型为日期时,可用
pd.to_datetime。修改完成后,将数据集中的日期字段重新设为索引。注意不要漏掉
inplace=True。
[code]df1.sort_values('trade_date', inplace=True) # 转换列数据类型为日期 df1['trade_date']=pd.to_datetime(df1['trade_date']) # 将指定的日期类型 列设为索引,并替代。 df1.set_index('trade_date', inplace=True)
-
数据合并concat
上面的df1对象中只包含一支股票的信息,当在matplotlib中展现时,仅可以观察趋势。如果需要与其它股票作对比分析,则需要合并另外的数据。
[code]# 获取多支交易数据数据,作对比分析 list1 = ['000002.SZ', '000012.SZ', '600010.SH'] for i, ts_code in enumerate(list1): # 取指定日期的数据 df_tmp = pro.daily(ts_code=ts_code, start_date='20170101', end_date='20180101')[['trade_date', 'close']] df_tmp.sort_values('trade_date', inplace=True) df_tmp['trade_date']=pd.to_datetime(df_tmp['trade_date']) df_tmp.rename(columns={'close': ts_code}, inplace=True) df_tmp.set_index('trade_date', inplace=True) if i==0 : df = df_tmp else: # axis=1,沿第2条轴即X轴。列增加 df = pd.concat([df, df_tmp], axis=1) print(ts_code) # 查看数据 df.head()
4. 可视化展现
-
查看单一股票的年度趋势图,并添加参考线
[code]import matplotlib.pyplot as plt ax = df1.plot(color="blue", figsize=(12, 4), linewidth=2, fontsize=6) ax.set_xlabel("trade date") ax.set_ylabel("399401.SZ close") ax.set_title("Trend analysis of recent years 2013-2019 ", fontsize=8) # 添加水平线 ax.axvline("2018-08-15", color="red", linestyle="--", linewidth=2) ax.axhline(6000, color="green", linestyle="--",linewidth=2 ) plt.show()
如下示图:
-
参数设置。
主题切换
[code]可先调用语句`plt.style.available`,查看当前可用的主题名称,再选择即可。
设置X轴日期格式
[code]matploblib中也提供了的dates对象,对X轴的显示日期格式与频度进行设置。如下脚本,将设置日期区间为'2013-01-01' 至 '2019-12-01',显示'年-月',频度为10个月。
[code]# 查看可用样式 import matplotlib.dates as mdate print(plt.style.available) plt.style.use("seaborn-talk") ax1=df1.plot(figsize=(12, 4)) ax1.set_title("my mew style - seaborn-talk") ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m')) plt.xticks(pd.date_range("2013-01-01", "2019-12-01", freq="10m")) plt.show()
示例图如下:
-
对比分析
先预览已完成合并的数据。dataFrame对象df中
trade_date仍为索引,但是新增了其它列。
[code]ax3 = df.plot(linewidth=3 , fontsize=16, figsize=(12, 4 )) ax3.set_xlabel('trade_date') ax3.set_ylabel("unit price") # 指定X轴显示刻度 ,取代默认设置 ax3.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m')) plt.xticks(pd.date_range("2017-01-01", "2018-01-01", freq="3m")) ax3.legend(fontsize=12) ax3.set_title("Comparison of analysis") plt.show()
展现结果为:
5. 小结
-
介绍了获取第三方平台的接口数据的方法
-
数据清洗与合并,主要有数据类型转换、重新排序、索引重置、数据合并
-
时序数据的可视化对比分析与基本展现设置
相关文章推荐
- 利用Python进行数据分析--绘图和可视化
- 利用python进行数据分析-绘图和可视化2
- 利用python进行数据分析-绘图和可视化1
- 转载]利用Python进行数据分析——绘图和可视化 xticks-学习笔记
- Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据
- Python进行数据分析—可视化之seaborn
- python 抓取数据,pandas进行数据分析并可视化展示
- 利用python进行数据分析之数据可视化(一)
- 利用python进行数据分析之绘图和可视化
- 利用python进行数据分析(六):绘图和可视化
- python3笔记:爬取中国天气网数据并进行html可视化分析
- python3 对拉勾数据进行可视化分析
- 利用Python对NBA SportUV数据进行可视化及分析
- 利用python进行数据分析之绘图和可视化
- 利用Python进行数据分析——第8章绘图及可视化——学习笔记Python3 5.0.0
- python3对拉勾数据进行可视化分析的方法详解
- 在Python中对MySQL中的数据进行可视化
- 利用Python进行数据分析——准备工作篇
- 利用python进行数据分析-数据规整化1
- 利用Python进行数据分析