一、项目需求
1 获得特定时间段股票数据
2 查询时间段内最大成交量日期
3 将股票信息中日期字符串转换为日期类型
4 按照成交金额排序
5 绘制股票成交量折线图
6 绘制股票OHLC线图
7 绘制股票成交量折线图(按周)
8 绘制股票K线图 (数据每天变化趋势)
二、前期准备
利用python获取贵州茅台2019年的股票数据(通过tushare库)
观察数据、对数据中各项特征进行初步了解
l熟悉相关的股票知识及概念(换手率、K线、OHLC线等)
确定工具:pandas、matplotlib、mpl_finance等库
三、项目过程
1 通过tushare库获取贵州茅台2019年的股票数据
2 根据项目需求,完成规定的项目作业
3 绘制项目报告
四、项目报告
(1)获得特定时间段股票数据(2019年)
import tushare as ts
df = ts.get_hist_data('600519',start='2019-01-01',end='2019-12-31')
查看数据(截取部分):
为了更方便查看,我们将数据重新排列一下:
maotai = df.iloc[::-1]
再次查看:
(2)查询时间段内最大成交量日期
print("贵州茅台2019年的最大成交量为:{}".format(maotai['high'].max()))
可以看到,最大成交量为:1241.61。
maotai[maotai['high'].values == 1241.61].index
可以看到,最大成交量日期:2019年11月19日。
(3)将股票信息中日期字符串转换为日期类型
在我们的数据表中,日期是以索引的形式给出,所以我们可以先将索引转换成一列新特征,特征名以‘日期’命名。
maotai['日期']=maotai.index
此时数据表中已经有了“日期”这一项特征,通过进一步查看我们可以知道,这项特征是object型的。下面我们将其转换为日期类型。
import pandas as pd
maotai['日期'] = pd.to_datetime(maotai['日期'],infer_datetime_format=True)
使用info()查看数据类型,此时“日期”已被改成日期类型。
(4)按照成交金额排序
使用sort_values()进行排序处理(这里仅展示部分截图):
df['volume'].sort_values()
同时,我们也可以采用降序的方式进行展示:
maotai['volume'].sort_values(ascending=False)
(5)绘制股票成交量折线图
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
sns.set()
%matplotlib inline
warnings.filterwarnings('ignore')
import matplotlib
plt.figure(figsize=(8,6),dpi=80,num=4)
myfont=matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
x= maotai['日期']
y1 = maotai['volume']
plt.plot(x, y1, color='r',label='股票成交量', linewidth=2)
plt.xlabel('日期',FontProperties=myfont,fontsize=15)
plt.ylabel('成交量',FontProperties=myfont,fontsize=15)
plt.title('股票成交量折线图',FontProperties=myfont,fontsize=15)
plt.legend(prop=myfont)
(6)绘制股票OHLC线图
plt.figure(figsize=(12,8),dpi=80,num=4)
myfont=matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
x= maotai['日期']
plt.plot(x, maotai.loc[:,'open'], label='开盘价', linewidth=2)
plt.plot(x, maotai.loc[:,'high'], label='最高价', linewidth=2)
plt.plot(x, maotai.loc[:,'low'], label='最低价', linewidth=2)
plt.plot(x, maotai.loc[:,'close'], label='收盘价', linewidth=2)
plt.xlabel('日期',FontProperties=myfont,fontsize=15)
plt.ylabel('价格/汇率',FontProperties=myfont,fontsize=15)
plt.title('茅台股票OHLC线图',FontProperties=myfont,fontsize=15)
plt.legend(prop=myfont)
(7)绘制股票成交量线图
df = ts.get_hist_data('600519',start='2019-01-01',end='2019-12-31',ktype='W')
maotai_week = df.iloc[::-1]
maotai_week['日期']=maotai_week.index
maotai_week['日期'] = pd.to_datetime(maotai_week['日期'],infer_datetime_format=True)
plt.figure(figsize=(12,8),dpi=80,num=4)
myfont=matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
x= maotai_week['日期']
y1 = maotai_week['volume']
plt.plot(x, y1, color='r',label='股票成交量', linewidth=2)
plt.xlabel('日期',FontProperties=myfont,fontsize=15)
plt.ylabel('成交量',FontProperties=myfont,fontsize=15)
plt.title('股票成交量线图(按周)',FontProperties=myfont,fontsize=15)
plt.legend(prop=myfont)
(8)绘制股票K线图 (数据每天变化趋势)
import matplotlib.dates as mdates
import mpl_finance as mpf
df = ts.get_hist_data('600519',start='2019-01-01',end='2019-12-31')
maotai = df.iloc[::-1]
maotai['date']=maotai.index
maotai['date'] = pd.to_datetime(maotai['date'])
maotai_k = zip(mdates.date2num(maotai['date']),maotai['open'], maotai['close'],
maotai['high'], maotai['low'])
plt.rcParams['font.sans-serif']=['SimHei']
plt.figure(figsize=(12,8),dpi=80,num=4)
# x= maotai['日期']
ax = plt.axes(facecolor='#070707')
# ax.xaxis_date()
mpf.candlestick_ochl(ax, maotai_k, width=0.5,
colorup='r', colordown = '#00ffff',
alpha = 1)
plt.title('茅台股票K线图',fontsize=15)
ax.xaxis_date()
plt.xticks(rotation=45)
由于不是一次性打的代码,所以有些不连贯,大家操作的时候可以再继续进行精进。
以上便是的内容,感谢大家的细心阅读,同时欢迎感兴趣的小伙伴一起讨论、学习,想要了解更多内容的可以看我的其他文章,同时可以持续关注我的动态~