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日期操作学习笔记
Oct 07 Python
Python中正则表达式的详细教程
Apr 30 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
python如何查看微信消息撤回
Nov 27 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
实现Python与STM32通信方式
Dec 18 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
详解用Python进行时间序列预测的7种方法
Mar 13 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
Python 循环读取数据内存不足的解决方案
May 25 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
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
python实现随机漫步方法和原理
2019/06/10 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
物流创业计划书
2014/02/01 职场文书
光盘行动倡议书
2014/02/02 职场文书
服务标语大全
2014/06/18 职场文书
中专生自荐信
2014/06/25 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
国王的演讲观后感
2015/06/03 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
解决vue中provide inject的响应式监听
2022/04/19 Vue.js