pandas DataFrame运算的实现


Posted in Python onJune 14, 2020

1 算术运算

add(other)

比如进行数学运算加上具体的一个数字

data['open'].add(1)

2018-02-27 24.53
2018-02-26 23.80
2018-02-23 23.88
2018-02-22 23.25
2018-02-14 22.49

sub(other)

2 逻辑运算

2.1 逻辑运算符号

例如筛选data[“open”] > 23的日期数据

data[“open”] > 23返回逻辑结果

data["open"] > 23

2018-02-27  True
2018-02-26 False
2018-02-23 False
2018-02-22 False
2018-02-14 False

# 逻辑判断的结果可以作为筛选的依据
data[data["open"] > 23].head()

pandas DataFrame运算的实现

完成多个逻辑判断,

data[(data["open"] > 23) & (data["open"] < 24)].head()

pandas DataFrame运算的实现

2.2 逻辑运算函数

query(expr)

expr:查询字符串

通过query使得刚才的过程更加方便简单

# 以字符串形式
data.query("open<24 & open>23").head()

isin(values)
例如判断'open'是否为23.53和23.85

# 可以指定值进行一个判断,从而进行筛选操作
data[data["open"].isin([23.53, 23.85])]

pandas DataFrame运算的实现

3 统计运算

3.1 describe

综合分析: 能够直接得出很多统计结果,count, mean, std, min, max 等

# 计算平均值、标准差、最大值、最小值
data.describe()

pandas DataFrame运算的实现

3.2 统计函数

Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数), var(方差), std(标准差),mode(众数)结果:

pandas DataFrame运算的实现

对于单个函数去进行统计的时候,坐标轴还是按照默认列“columns” (axis=0, default),如果要对行“index” 需要指定(axis=1)

max()、min()

# 使用统计函数:0 代表列求结果, 1 代表行求统计结果
data.max(0)

open     34.99
high     36.35
close     35.21
low     34.01
volume    501915.41
price_change   3.03
p_change    10.03
turnover    12.56
my_price_change   3.41
dtype: float64

std()、var()

# 方差
data.var(0)

open    1.545255e+01
high    1.662665e+01
close    1.554572e+01
low    1.437902e+01
volume    5.458124e+09
price_change  8.072595e-01
p_change   1.664394e+01
turnover   4.323800e+00
my_price_change 6.409037e-01
dtype: float64

# 标准差
data.std(0)

open     3.930973
high     4.077578
close     3.942806
low     3.791968
volume    73879.119354
price_change   0.898476
p_change    4.079698
turnover    2.079375
my_price_change  0.800565
dtype: float64

median():中位数

中位数为将数据从小到大排列,在最中间的那个数为中位数。如果没有中间数,取中间两个数的平均值。

df = pd.DataFrame({'COL1' : [2,3,4,5,4,2],
     'COL2' : [0,1,2,3,4,2]})

df.median()

COL1 3.5
COL2 2.0
dtype: float64

idxmax()、idxmin()

# 求出最大值的位置
data.idxmax(axis=0)

open    2015-06-15
high    2015-06-10
close    2015-06-12
low    2015-06-12
volume    2017-10-26
price_change  2015-06-09
p_change   2015-08-28
turnover   2017-10-26
my_price_change 2015-07-10
dtype: object


# 求出最小值的位置
data.idxmin(axis=0)

open    2015-03-02
high    2015-03-02
close    2015-09-02
low    2015-03-02
volume    2016-07-06
price_change  2015-06-15
p_change   2015-09-01
turnover   2016-07-06
my_price_change 2015-06-15
dtype: object

3.3 累计统计函数

pandas DataFrame运算的实现

那么这些累计统计函数怎么用?

pandas DataFrame运算的实现

以上这些函数可以对series和dataframe操作

这里我们按照时间的从前往后来进行累计

排序

# 排序之后,进行累计求和
data = data.sort_index()

对p_change进行求和

stock_rise = data['p_change']
# plot方法集成了前面直方图、条形图、饼图、折线图
stock_rise.cumsum()

2015-03-02  2.62
2015-03-03  4.06
2015-03-04  5.63
2015-03-05  7.65
2015-03-06  16.16
2015-03-09  16.37
2015-03-10  18.75
2015-03-11  16.36
2015-03-12  15.03
2015-03-13  17.58
2015-03-16  20.34
2015-03-17  22.42
2015-03-18  23.28
2015-03-19  23.74
2015-03-20  23.48
2015-03-23  23.74

那么如何让这个连续求和的结果更好的显示呢?

pandas DataFrame运算的实现

如果要使用plot函数,需要导入matplotlib.

import matplotlib.pyplot as plt
# plot显示图形
stock_rise.cumsum().plot()
# 需要调用show,才能显示出结果
plt.show()

关于plot,稍后会介绍API的选择

4 自定义运算

apply(func, axis=0)

  • func:自定义函数
  • axis=0:默认是列,axis=1为行进行运算

定义一个对列,最大值-最小值的函数

data[['open', 'close']].apply(lambda x: x.max() - x.min(), axis=0)

open  22.74
close 22.85
dtype: float64

到此这篇关于pandas DataFrame运算的实现的文章就介绍到这了,更多相关pandas DataFrame运算内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中实现定制类的特殊方法总结
Sep 28 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
tensorflow 限制显存大小的实现
Feb 03 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 Python
分享提高 Python 代码的可读性的技巧
Mar 03 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 #Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 #Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 #Python
Django 构建模板form表单的两种方法
Jun 14 #Python
Python Django搭建网站流程图解
Jun 13 #Python
Python xpath表达式如何实现数据处理
Jun 13 #Python
Python轻量级web框架bottle使用方法解析
Jun 13 #Python
You might like
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
Python描述器descriptor详解
2015/02/03 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
青年文明号口号
2014/06/17 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle