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进程通信之匿名管道实例讲解
Apr 11 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python实现线程池代码分享
Jun 21 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Python基于pandas爬取网页表格数据
May 11 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 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运行时强制显示出错信息的代码
2011/04/20 PHP
PHP关联链接常用代码
2012/11/05 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
python魔法方法-属性访问控制详解
2016/07/25 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python递归函数特点及原理解析
2020/03/04 Python
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
精彩的推荐信范文
2013/11/26 职场文书
自荐书模板
2013/12/19 职场文书
公司活动策划方案
2014/01/13 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
电话营销开场白
2015/05/29 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang