【PY从0到1】 金融数据处理1

# tushare ID: 409200
# 【PY从0到1】 金融数据处理1

# 导入库
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings; warnings.simplefilter('ignore')

#设置美化参数
sns.set()

# 1> 获取数据

# ① 从本地获取数据。
# 这里用pd内置方法读取文件。
date = pd.read_csv('d://399300.csv') # 括号内为文件的路径。
print(date.head())
# Unnamed: 0    ts_code  trade_date  ...        low       open       high
# 0           0  399300.SZ    20210201  ...  5342.0458  5356.8535  5422.2990
# 1           1  399300.SZ    20210129  ...  5288.0955  5413.9684  5430.2015
# 2           2  399300.SZ    20210128  ...  5360.3766  5450.3695  5462.2352
# 3           3  399300.SZ    20210127  ...  5449.6385  5505.7708  5534.9928
# 4           4  399300.SZ    20210126  ...  5505.9962  5600.9017  5600.9017

# 保存文件。
date.to_csv('d://333333.csv')

# ② 从网络获取数据。
# 只介绍一种从tushare获取行情数据。

# 导入库
import tushare as ts 

# 本案例使用tushare pro 接口
# pro = ts.pro_api('') # 这里是个人接口token.详见tushare官网:waditu.com/

# df = pro.index_daily(ts_code='399300.SZ', 
#                      start_date='20180101',
#                      end_date='20181010')
# 上述代码就获取了沪深300指数从18年1月1日到18年10月1日的日线数据。
# tushare能获得很多数据,具体也请读者进入官网了解,这里就不过多举例了。

# 下面对获得的数据进行简单的处理。
hs300 = date # 重命名
hs300.set_index('trade_date', inplace=True) # 设置新索引
del hs300['Unnamed: 0'] # 删除无用列
hs300.info() # 查看DataFrame统计内容。
    

# 2> 金融数据数据可视化

# 数据获取、整理
stock_data1 = pro.daily(ts_code='600036.SH', 
                        start_date='20191201',
                        end_date='20201201') # 获取股票数据
stock_data1.index = pd.to_datetime(stock_data1['trade_date']) # 日期作为时间索引
stock_data1.rename(columns={'trade_date': 'date',
                            'ts_code':'code',
                            'vol':'volume'}, inplace=True) # 修改标签
stock_data1 = stock_data1[['open','close','high','low','volume','code']] # 过滤无用数据

stock_data2 = pro.daily(ts_code='600660.SH', 
                        start_date='20191201',
                        end_date='20201201') # 获取股票数据
stock_data2.index = pd.to_datetime(stock_data2['trade_date']) # 日期作为时间索引
stock_data2.rename(columns={'trade_date': 'date',
                            'ts_code':'code',
                            'vol':'volume'}, inplace=True) # 修改标签
stock_data2 = stock_data2[['open','close','high','low','volume','code']] # 过滤无用数据

stock_data3 = pro.daily(ts_code='002594.SZ', 
                        start_date='20191201',
                        end_date='20201201') # 获取股票数据
stock_data3.index = pd.to_datetime(stock_data3['trade_date']) # 日期作为时间索引
stock_data3.rename(columns={'trade_date': 'date',
                            'ts_code':'code',
                            'vol':'volume'}, inplace=True) # 修改标签
stock_data3 = stock_data3[['open','close','high','low','volume','code']] # 过滤无用数据

# 合并数据
stock_data = pd.concat([stock_data1, stock_data2, stock_data3],
          keys=['600036.SZ','600660.SZ','002594.SH'],
          names=['code', 'date'])

# 获得关键元素、重新整理DataFrame
stock_data_close = stock_data[['close']].reset_index() # 重置索引
stock_data_close = stock_data_close.pivot(index='date',
                                          columns='code',
                                          values='close') # 透视

# 可视化
stock_data_close.plot(subplots=True, figsize=(8,6))

# 保存数据
stock_data_close.to_csv('d://three_stock_data_close.csv')

 

posted @ 2021-04-26 21:12  泥鳅不怕水  阅读(150)  评论(0)    收藏  举报