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使用socket连接远程服务器的方法
Apr 29 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
python并发和异步编程实例
Nov 15 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
python进程间通信Queue工作过程详解
Nov 01 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
Pycharm配置autopep8实现流程解析
Nov 28 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
Python实现小黑屋游戏的完整实例
Jan 06 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
E路文章系统PHP
2006/12/11 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php简单获取复选框值的方法
2016/05/11 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery 一个图片切换的插件
2011/10/09 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
js表单验证实例讲解
2016/03/31 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
Python编程中装饰器的使用示例解析
2016/06/20 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Python异常处理知识点总结
2019/02/18 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Python实现微信表情包炸群功能
2021/01/28 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
年会活动策划方案
2014/01/23 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
MySQL基础(一)
2021/04/05 MySQL
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
【2·13】一图读懂中国无线电发展
2022/02/18 无线电