保险股价趋势图分析
测试了一下,matplotlib.pyplot 的作图 ,折线图趋势如下:
中国平安下跌最快 ,反弹也是最猛的,看好新华保险,前期下跌幅度小,后期反弹凶猛,准备加仓 。
具体代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tushare as ts
from datetime import datetime, timedelta
#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
## 时间,日期
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
end_date = datetime.now().strftime('%Y-%m-%d')
bgn_date = (datetime.now()+timedelta(days=-30)).strftime("%Y-%m-%d")
## 股票代码,股票中文简称
code_list = ['601318','601319','601628','601336']
name_list = ['中国平安','中国人保','中国人寿','新华保险']
## name_list = ['pinan','renbao','rensou','xinhua']
dict_name = dict(zip(code_list,name_list))
data_his_tmp = pd.DataFrame()
data_his_record = pd.DataFrame()
close_data_sca = pd.DataFrame()
## 获取股票前30天 收盘价 和 今天的实时价格
def close_value_his(cde):
data_his = pd.DataFrame()
data_his = ts.get_hist_data(cde,start=bgn_date,end=end_date)
data_his['name'] = dict_name[cde]
return data_his
def minmax_sca(data):
"""
离差标准化
data:传入的数据
return:标准化之后的数据
"""
new_data=(data-data.min())/(data.max()-data.min())
return round(new_data,4)
## 数据导入
for key,value in dict_name.items() :
data_his_tmp = close_value_his(key)
data_his_record=pd.concat([data_his_record,data_his_tmp])
print(now)
## 对收盘价做透视表汇总
close_data = pd.pivot_table(data_his_record,index=["date"],values=["close"],columns=["name"],aggfunc=[np.sum])
print(close_data.columns)
## 列名重置更新
col_new = [close_data.columns[0][2],close_data.columns[1][2],close_data.columns[2][2],close_data.columns[3][2]]
print(col_new)
close_data.columns = col_new
## 数据标准化
for col in close_data.columns:
close_data_sca[col] = minmax_sca(close_data[col])
print(now)
print(close_data_sca.tail(5))
## 做图
plt.figure(figsize=(20,10))
plt.title(u'保险股价趋势图')
plt.xticks(rotation=45)
## 数据,线条,系列名
for col_2 in close_data_sca.columns:
plt.plot(close_data_sca.index, close_data_sca[col_2],'-',label=col_2 )
plt.legend()
plt.show()