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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
Zabbix实现微信报警功能
Oct 09 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
linux查找当前python解释器的位置方法
Feb 20 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
Django框架models使用group by详解
Mar 11 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 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中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
canvas知识总结
2017/01/25 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python进行数据提取的方法总结
2016/08/22 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
幼儿园教师奖惩制度
2014/02/01 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
高中综合实践活动总结
2014/07/07 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
MySQL七种JOIN类型小结
2021/10/24 MySQL