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
对numpy中shape的深入理解
Jun 15 Python
10个Python小技巧你值得拥有
Sep 29 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python Flask框架模板操作实例分析
May 03 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 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批量去除文件UTF8 BOM信息
2013/08/05 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
jquery实现企业定位式导航效果
2018/01/01 jQuery
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
pandas取出重复数据的方法
2019/07/04 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
员工激励培训演讲稿
2014/09/16 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
自我工作评价范文
2015/03/06 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
安全生产培训心得体会
2016/01/18 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android