51.使用绝对路径读取本地Excel数据

import numpy as np
import pandas as pddata = pd.read_excel('/Users/baji/Desktop/600000.SH.xls')

52.查看数据前三行

data.head(3)

53.查看每列数据缺失值情况

data.isnull().sum()

54.提取日期列含有空值的行

data[data['日期'].isnull()]

55.输出每列缺失值具体行数

for columname in data.columns:if data[columname].count() != len(data):loc = data[columname][data[columname].isnull().values==True].index.tolist()print('列名:"{}",第{}行位置有缺失值'.format(columname,loc))

56.删除所有存在缺失值的行

data.dropna(axis=0,how='any',inplace=True)

how:any-有空值就删除,all-全部为空值才删除
inplace:false-返回新数据集,True-源数据集操作

57.绘制收盘价的折线图

import matplotlib.pyplot as plt
#plt.plot(data['收盘价(元)'])plt.style.use('seaborn-darkgrid') #设置画图风格
plt.rc('font',size=6)    #设置图中字体和大小
plt.rc('figure',figsize=(4,3),dpi=150)  #设置图像大小
data['收盘价(元)'].plot()

plt.style.use()
参数可以是一个URL或路径,指向自己定义的mplstyle文件,找到使用样式可用plt.style.available
共26种风格:['bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark-palette', 'seaborn-dark', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'seaborn', 'Solarize_Light2', 'tableau-colorblind10', '_classic_test']

plt.rc
matplotlib中plt.rcParams[],设置图像细节
目前学习到2种写法,一是plt.rcParams['figure.figsize']=(4,3),plt.rcParams['lines.linestyle']='-.';二是plt.rc('font',size=6),plt.rc('figure',figsize=(4,3),dpi=150)

58.同时绘制开盘价与收盘价

#plt.plot(data[['开盘价(元)','收盘价(元)']])
data[['开盘价(元)','收盘价(元)']].plot()

59.绘制涨跌幅的直方图

#data['涨跌幅(%)'].hist()
plt.hist(data['涨跌幅(%)'])

60.让直方图更细致

plt.hist(data['涨跌幅(%)'],bins=30)
#data['涨跌幅(%)'].hist(bins=30)

题目中的更细致理解为 加组距

61.以data的列名创建一个dataframe

#错误写法
# df1 = pd.DataFrame(np.array(data.columns))df2 = pd.DataFrame(columns=data.columns.tolist())
df2

62.打印所有换手率不是数字的行

for i in range(len(data)):if type(data.iloc[i,13]) != float:df2 = df2.append(data.loc[i])df2

63.打印所有换手率为–的行

data[data['换手率(%)'].isin(['--'])]

DataFrame.isin(values) 用于过滤数据帧
values:iterable,Series,List,Tuple,DataFrame或字典
return:维度布尔值的DataFrame

单参数过滤:
temp1 = data['换手率(%)'].isin(['--'])
多重参数过滤:
filter1 = data['换手率(%)'].isin(['--']),filter2 = data['前收盘价(元)].isin([12.1946,12.2946,12.3946])

64.重置data的行号

data = data.reset_index()

65.删除所有换手率为非数字的行

k=[] #设置空列表接收
for i in range(len(data)):if type(data.iloc[i,14]) != float:k.append(i)
data.drop(labels=k,inplace=True)
# 正确写法
data[data['换手率(%)'].isin(['--'])]

#错误写法
data['换手率(%)'].isin(['--']) 会出现维度布尔值的DataFrame

66.绘制换手率的密度曲线

data['换手率(%)'].plot(kind='kde') #kde = 密度

67.计算前一天与后一天收盘价的差值

data['收盘价(元)'].diff() #一阶差分

DataFrame.diff(periods=1,axis=0)
操作中是两条临近记录的差值,periods表示对比的条目数,axis表示行或列

68.计算前一天与后一天收盘价变化率

data['收盘价(元)'].pct_change() #相差百分比

DataFrame.pct_change(periods=1, fill_method=‘pad’, limit=None, freq=None, **kwargs)
periods表示对比的条目数,默认为1
当前数据与先前数据的相差百分比

69.设置日期为索引

data.set_index('日期')

70.以5个数据作为一个数据滑动窗口,在这个5个数据上取均值(收盘价)

data['收盘价(元)'].rolling(5).mean()

窗口函数
DataFrame.rolling(window,min_periods=None,center=False,win_type=None,on=None,axis=0,closed=None)
window:时间窗口值,int类型,即向前几个数据
min_periods:默认与window相等,即最少窗口值的观测点数量
center:窗口标签居中,默认False
win_type:窗口类型,默认为None
on:指定计算数据滑动窗口的列,可选参数
closed:定义区间的开闭(‘left’,‘both’,‘right’),对于offset类型默认是左开右闭的即默认为right

agg()函数快速实现多个聚类函数并输出结果,同时还可以进行重命名

method
dataframe.rolling().mean() 均值
dataframe.rolling().sum() 求和
dataframe.rolling().var() 无偏方差
dataframe.rolling().std() 标准差
dataframe.rolling().corr() 相关(二进制)
dataframe.rolling().cov() 无偏协方差(二元)
dataframe.rolling().skew() 样品偏斜度(三阶矩)
dataframe.rolling().kurt() 样品峰度(四阶炬)
dataframe.rolling().count() 非空值数量
dataframe.rolling().max() 最大值
dataframe.rolling().min() 最小值
dataframe.rolling().median() 中值
dataframe.rolling().quantile() 样本分位数(百分位上的值)

71.以5个数据作为一个数据滑动窗口,计算这五个数据总和(收盘价)

data['收盘价(元)'].rolling(5).sum()

72.将收盘价5日均线、20日均线与原始数据绘制在同一个图上

#False
#data['收盘价(元)'].plot()
#data[data['收盘价(元)'].rolling(5).mean()].plot()
#data[data['收盘价(元)'].rolling(20).mean()].plot()#True
data['收盘价(元)'].plot()
data['收盘价(元)'].rolling(5).mean().plot()
data['收盘价(元)'].rolling(20).mean().plot()

73.按周为采样规则,取一周收盘价最大值

data['收盘价(元)'].resample('W').max()
# data['收盘价(元)'].resample('7d').max()

※ 本题一直报错:TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Int64Index'
多次尝试后发现由于之前data.set_index('日期')没有覆盖,再次将日期作为索引后,问题解决

74.绘制重采样数据与原始数据

data['收盘价(元)'].plot()
data['收盘价(元)'].resample('7D').max().plot()

75.将数据往后移动5天

data.shift(5)

DataFrame.shift(periods=1, freq=None, axis=0)

periods:它由一个可以为正或为负的整数组成。它定义了要移动的数
freq:可以与DateOffset, tseries模块, str或time规则一起使用
fill_value:用于填充新丢失的值

76.将数据向前移动5天

data.shift(-5)

77.使用expending函数计算开盘价的移动窗口均值

data['开盘价(元)'].expanding(min_periods=1).mean()

DataFrame.expanding(min_periods = 1,center = False,axis = 0)
min_periods:需要有值的观测点的最小数量,决定显示状态,=1表示每个观测点都有值
center:把窗口的标签设置为居中,default False–>居右

expanding()与rolling()的参数用法相同,rolling()固定窗口数量,进行滑动计算;expanding()设置最小观测值,不固定窗口数量,实现累计计算
expanding()函数,类似cumsum()函数的累计求和,其优势在于还可以进行更多的聚类计算;
事实上,当rolling()函数的参数window=len(df)时,实现的效果与expanding()函数是一样的。

78.绘制上一题的移动均值与原始数据折线图

data['opening'] = data['开盘价(元)'].expanding(min_periods=1).mean()
data[['开盘价(元)','opening']].plot(figsize=(16,6))

79.计算布林指标

以下信息来源百度百科
布林线指标,即BOLL指标,其英文全称是“Bollinger Bands”,布林线(BOLL)由约翰·布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。其上下限范围不固定,随股价的滚动而变化。布林指标和麦克指标MIKE一样同属路径指标,股价波动在上限和下限的区间之内,这条带状区的宽窄,随着股价波动幅度的大小而变化,股价涨跌幅度加大时,带状区变宽,涨跌幅度狭小盘整时,带状区则变窄。
——————————————————————————————————————————————————————————————
在股市分析软件中,BOLL指标一共由四条线组成,即上轨线UP 、中轨线MB、下轨线DN和价格线。
计算公式
中轨线MB=N日的移动平均线
上轨线UP=中轨线+两倍的标准差
下轨线DN=中轨线-两倍的标准差
计算过程
(1)计算MA
MA=N日内的收盘价之和÷N
(2)计算标准差MD
MD=平方根(N-1)日的(C-MA)的两次方之和除以N
(C指收盘价)
(3)计算MB、UP、DN线
MB=(N-1)日的MA
UP=MB+k×MD
DN=MB-k×MD
(K为参数,可根据股票的特性来做相应的调整,一般默认为2)

data['MB'] = data['收盘价(元)'].rolling(30).mean()
data['Upper'] = data['MB']+2*data['收盘价(元)'].rolling(30).std()
data['Lower'] = data['MB']-2*data['收盘价(元)'].rolling(30).std()

80.计算布林线并绘制

data[['收盘价(元)','MB','Upper','Lower']].plot(figsize=(16,6))

pandas金融数据处理相关推荐

  1. 数据导入与预处理-拓展-pandas时间数据处理01

    数据导入与预处理-拓展-pandas时间数据处理01 Pandas时序数据系列博客 Pandas时间序列数据处理 1.好用的Python库 2.Pandas历史 3.时序数据处理 3.1 时序中的基本 ...

  2. python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少

    今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...

  3. Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略

    Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...

  4. 推荐系统-应用Pandas进行数据处理

    1. PANDAS PANDAS是一个包,它使我们能够访问高性能.易于使用的工具和数据结构,以便在Python中进行数据分析. Python是一种运行很慢的语言.PANDAS通过使用C编程语言实现大量 ...

  5. 打印钻石图形python_Python pandas高效数据处理之绘图

    Pandas是Python中非常常用的数据处理工具,使用起来非常方便.它建立在NumPy数组结构之上,所以它的很多操作通过NumPy或者Pandas自带的扩展模块编写,这些模块用Cython编写并编译 ...

  6. pandas 空数据处理和数据过滤

    1.pandas数据过滤 import pandas as pd from pandas import DataFrame,Series import numpy as npdict1 = {'age ...

  7. 数据分析——使用pandas进行数据处理

    使用pandas进行数据处理 概念介绍 pandas模块介绍 Series和DataFrame Series简介 DataFrame简介 DataFrame的常用属性方法 创建DataFrame Da ...

  8. python输入年月日输出年月日_【手把手教你】Python金融数据处理

    由于大多数人骨子里倾向于投机或赌博,受欲望.恐惧和贪婪所左右,因此大多数时间里股票市场都是非理性的,容易有过激的股价波动. By 本杰明·格雷厄姆 引言 时间序列是金融量化分析中最常见的数据类型,记录 ...

  9. 数据分析之Pandas缺失数据处理

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 作者:耿远昊,Datawhale成员,华东师范大学Pandas 是一个强大的 ...

最新文章

  1. android本地xml文件怎么打开,android 打开本地文件
  2. Makefile文件的编写规则
  3. C#中的SMTP配置Outlook.Com SMTP主机
  4. 使用OpenCV进行人脸检测(Viola-Jones人脸检测方法)
  5. nodejs渐入佳境[8]-json处理
  6. Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  7. Python try/except/finally等
  8. 强制消除Xcode警告的方法
  9. 数据洪流时代,开发者这样硬核突围!
  10. strutr2运行流程
  11. 计算机主机红灯不闪硬盘工作,电脑主机红灯一直闪正常吗
  12. H3C_利用策略路由实现出口双线路负载(选路)的部署
  13. ubuntu16.04下摄像头驱动
  14. 【Kaggle 教程】Data Visualization 数据可视化-画图-各种图
  15. wifi分析仪是什么?
  16. 现行各主流语言的特点
  17. Win10 中查看笔记本电脑电池信息
  18. 2021年中国商品期货交易规模分析:交易量达71.71亿手,同比增长21.15%[图]
  19. 山水盆景胶合时的留意问题
  20. 战地2服务器主程序修改,战地2BOT数值怎么更改BOT数值如何更改_BOT数值更改教程_游戏城...

热门文章

  1. GOF23之桥接模式
  2. 三星认为 LG 零售店销售苹果 iPhone 违约:也应该销售 Galaxy 手机
  3. 搜狗拼音皮肤 php文件,手把手教你制作搜狗输入法皮肤
  4. 医学图像配准之形变场可视化(绘制形变场)
  5. 蓝桥杯算法(python)
  6. 报错:致命错误:Python.h:没有那个文件或目录
  7. 从零开始,手写完整的Promise原理!
  8. 小程序微信小程序设计注册页面
  9. springCloud集成nacos
  10. 三朝元老经验(转,推荐)