数据分析案例-股票数据分析

简介: 数据分析案例-股票数据分析

导入数据

import pandas as pd
import warnings
warnings.filterwarnings("ignore")
df1 = pd.read_csv("000001_daily.csv")
df2 = pd.read_csv("000001_5min.csv")
df1.head()


时间类型转换

将 df1 和 df2 的 日期 列转换为 pandas 支持的时间格式

df1['日期'] = pd.to_datetime(df1['日期'])
df2['时间'] = pd.to_datetime(df2['时间'])
# df1['日期'] = df1['日期'].astype('datetime64[ns]')

日期筛选

按区间筛选

筛选出 df2 时间在 2021-08-03 09:35:00 与 2021-08-04 15:00:00 之间的数据


df2[(df2['时间'] > '2021-08-03 09:35:00') & (df2['时间'] < '2021-08-04 15:00:00')]

按指定时间筛选

筛选 df2 时间为 2021-08-03 的全部数据


df2.set_index('时间').truncate(after=pd.Timestamp('2021-08-03'))


金融计算

涨跌额

df1 新增一列 涨跌,计算前后两日收盘价之差


注意:虽然我们的df1包含涨跌额列,但是这个操作很常用,所以练习一下


df1['涨跌']  = df1.收盘.diff()

涨跌幅

df1 新增一列 涨跌变化率,计算前后两日收盘价之差的变化率


注意:虽然我们的df1包含涨跌幅列,但是这个操作很常用,所以练习一下,结果可以用于验证


df1['涨跌变化率'] = (df1.收盘.pct_change()).apply(lambda x: format(x, '.2%'))

移动均值

计算收盘价的5日移动均线


df1.收盘.rolling(window=5).mean()
0          NaN
1          NaN
2          NaN
3          NaN
4        8.314
         ...  
1141    18.672
1142    18.792
1143    19.298
1144    19.650
1145    19.676
Name: 收盘, Length: 1146, dtype: float64

移动均值(可视化)

计算并绘制收盘价的5日移动均线


df1.收盘.rolling(window=5).mean().plot()


移动均值(可视化)

同时计算并绘制 df1 的收盘价、5日均线、20日均线

df1.set_index("日期")['收盘'].plot()
df1.set_index("日期")['收盘'].rolling(5).mean().plot()
df1.set_index("日期")['收盘'].rolling(20).mean().plot()

指数移动平均值(EMA)

根据 df1 计算 EMA20


df1['EMA20'] = df1['收盘'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()

MACD

计算 df1 的 MACD 指标


exp1 = df1['收盘'].ewm(span=12, adjust=False).mean()
exp2 = df1['收盘'].ewm(span=26, adjust=False).mean()
df1['MACD'] = exp1 - exp2
df1['Signal line'] = df1['MACD'].ewm(span=9, adjust=False).mean()

布林指标

计算并绘制布林指标,计算方法参考百度百科


df1['former 30 days rolling Close mean'] = df1['收盘'].rolling(20).mean()
df1['upper bound'] = df1['former 30 days rolling Close mean'] + \
    2*df1['收盘'].rolling(20).std()  # 在这里我们取20天内的标准差
df1['lower bound'] = df1['former 30 days rolling Close mean'] - \
    2*df1['收盘'].rolling(20).std()
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Songti SC'] #设置中文,如果本句代码导致失效,可以点击https://mp.weixin.qq.com/s/WKOGvQP-6QUAP00ZXjhweg
df1.set_index("日期")[['收盘', 'former 30 days rolling Close mean','upper bound','lower bound' ]].plot(figsize=(16, 6))
plt.show()


日期移动

移动值

将 df1 的索引设置为日期,将 df1 数据向后移动一天


df1.set_index('日期').shift(1)


移动索引

将 df1 的索引设置为日期,并将全部日期向后移动一天


import datetime
df1.set_index('日期').shift(freq=datetime.timedelta(1))


日期重采样

日 -> 周

按周对 df1 进行重采样,保留每周最后一个数据


df1.set_index('日期').resample('W').last()

日 -> 月

按月对 df1 进行重采样,保留每月最后一个数据


df1.set_index('日期').resample('M').last()


分钟 -> 日

按日对 df2 进行重采样,保留每天最后一个数据


df2.set_index('时间').resample('D').last()

低频 -> 高频

将 df2 的 5分钟 数据改为 3分钟,缺失数据向前填充

df_3min = df2.set_index('时间').resample('3min').last()
df_3min.ffill()

目录
相关文章
|
3月前
|
数据采集 存储 数据挖掘
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
本文介绍了一个基于Python的书旗网小说网站数据采集与分析系统,通过自动化爬虫收集小说数据,利用Pandas进行数据处理,并通过Matplotlib和Seaborn等库进行数据可视化,旨在揭示用户喜好和市场趋势,为图书出版行业提供决策支持。
284 6
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
|
30天前
|
数据挖掘 UED
ChatGPT数据分析——探索性分析
ChatGPT数据分析——探索性分析
|
30天前
|
数据可视化 数据挖掘 数据处理
ChatGPT数据分析应用——热力图分析
ChatGPT数据分析应用——热力图分析
|
30天前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(分组分析)
ChatGPT在常用的数据分析方法中的应用(分组分析)
|
29天前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
42 0
|
30天前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(对比分析)
ChatGPT在常用的数据分析方法中的应用(对比分析)
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
数据分析师是在多个行业中专门从事数据搜集、整理和分析的专业人员
数据分析师是在多个行业中专门从事数据搜集、整理和分析的专业人员
34 3
|
3月前
|
数据采集 数据可视化 关系型数据库
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
本文介绍了一个基于Python的穷游网酒店数据采集与可视化分析系统,通过爬虫技术自动抓取酒店信息,并利用数据分析算法和可视化工具,提供了全国主要城市酒店的数量、星级、价格、评分等多维度的深入洞察,旨在为旅行者和酒店经营者提供决策支持。
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
|
3月前
|
JSON 数据挖掘 API
案例 | 用pdpipe搭建pandas数据分析流水线
案例 | 用pdpipe搭建pandas数据分析流水线
|
3月前
|
机器学习/深度学习 数据可视化 API
【python】python基于tushare股票数据分析可视化(源码+数据+报告)【独一无二】
【python】python基于tushare股票数据分析可视化(源码+数据+报告)【独一无二】
255 1