pandas算术运算、逻辑运算、统计运算describe()函数、统计函数、累计统计函数及自定义函数运算

一、pandas算术运算

直接对数据进行加、减、乘、除等运算,可使用函数add()、sub()、mul()、div()或+、-、×、÷

代码如下

数据生成
import pandas as pd
import numpy as np

# 数据生成代码
num = np.random.randint(50, 100, (3, 5))

# 传入标签索引
column = ['第一列', '第二列', '第三列', '第四列', '第五列']   # 列标签索引
# ind = ['第一行', '第二行', '第三行']    # 行标签索引
ind = ['第_' + str(i) + '_行' for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
data2 = pd.DataFrame(num, columns=column, index=ind)
data2
---------------------------------------------------
data2['第二列'].add(10)   # 第二列的值加10

data2['第二列'].sub(10)   # 第二列的值减10

data2['第二列'] - 20     # 第二列的值减20

data2['第二列'] / 2   # 第二列的值除2

 二、pandas逻辑运算

2.1 运算符合

使用>、<、=、&、|、~等运算符对数据进行筛选

使用示范代码如下

# 数据生成
import pandas as pd
import numpy as np
# 数据生成代码
num = np.random.randint(50, 100, (3, 5))
# 传入标签索引
column = ['语文', '数学', '英语', '物理', '政治']   # 列标签索引
# ind = ['name1', 'name2', 'name3']    # 行标签索引
ind = ['name' + str(i) for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
data3 = pd.DataFrame(num, columns=column, index=ind)
data3
-------------------------------------------
data3['数学'] >= 90  # 逻辑判断

data3[data3['数学'] >= 90]  # 使用判断结果作为筛选依据

data3[(data3['数学'] >= 90) | (data3['语文'] >= 90)]   # 多个逻辑判断,每个逻辑要使用括号括起来

操作如下

2.2 运算函数

  • query(expr):根据要评估的条件进行过滤查询
    • expr:查询字符串
  • isin(values):对指定values值进行逻辑判断

具体使用代码如下 

data3.query('数学 >= 90 | 语文>= 90')   # 多个逻辑判断,条件要加上引号

data3.query('~(语文 >= 90)')   # ~为非,即取反,条件要加上引号

data3[data3['数学'].isin([60, 92, 99])]  # 判断是否在指定值中并筛选

操作演示如下 

三、统计运算

3.1 describe()函数

  • describe():综合分析,能够直接得出很多统计结果,用来返回series和DataFrame两个核心数据结构的统计变量,如countmeanstdminmax 等,含义如下
    • count:统计元素个数,此列共有多少有效值
    • mean:均值
    • std:标准差
    • min:最小值
    • 25%、50%、75%:返回数组的三个不同百分位置的数值,即统计学中的四分位数,其中50%对应的是中位数,分别为四分之一分位数、二分之一分位数、四分之三分位数
    • max:最大值

3.2  统计函数

对单个函数进行统计的时候,坐标轴按默认列,即axis=0统计,如要对行统计,需要指定axis=1,如sum(1)

函数方法含义功能
count()非空元素个数
sum()值的总和
mean()平均值
median()中位数
min()最小值
max()最大值
mode()模式,每一列/行按从小到大显示
abs()绝对值
prod()价值的乘积,每一列/行的每个数相乘
std()标准差
var()均方差
idxmax()计算具有最大值的索引标签
idxmin()计算具有最小值的索引标签

代码如下

import pandas as pd
import numpy as np
# 数据生成代码
num = np.random.randint(50, 100, (3, 5))
# 传入标签索引
column = ['语文', '数学', '英语', '物理', '政治']   # 列标签索引
# ind = ['name1', 'name2', 'name3']    # 行标签索引
ind = ['name' + str(i) for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
data3 = pd.DataFrame(num, columns=column, index=ind)
data3

data3.count()  # 每一列的元素个数
data3.sum()
data3.mean()   # 每一列的均值
data3.median()   # 每一列的中位数
data3.min()   # 每一列的最小值
data3.max()   # 每一列的最大值
data3.mode()   # 每一列按从小到大显示
data3.abs()   # 绝对值
data3.prod()   # 每一列中的数相乘
data3.std()   # 标准差
data3.var()   # 均方差,标准差的平方
data3.idxmin()   # 计算具有最小值的索引标签
data3.idxmax()  # 计算具有最大值的索引标签

data3.sum(1)  # 计算每一行的和,不填1默认为0,即统计列
data3.mean(1)  # 计算每一行的均值

操作演示如下

3.3 累计统计函数

函数作用
cumsum()计算前1/2/3/…/n个数的和
cummax()计算前1/2/3/…/n个数的最大值
cummin()计算前1/2/3/…/n个数的最小值
cumprod()计算前1/2/3/…/n个数的积

代码如下

import pandas as pd
import numpy as np
# 数据生成代码
num = np.random.randint(50, 100, (3, 5))
# 传入标签索引
column = ['语文', '数学', '英语', '物理', '政治']   # 列标签索引
# ind = ['name1', 'name2', 'name3']    # 行标签索引
ind = ['name' + str(i) for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
data4 = pd.DataFrame(num, columns=column, index=ind)
data4
-----------------------------------------------
data4['数学'].cumsum()  # 计算指定列中前n个数的和
data4.cumsum()   # 计算前1/2/3/…/n个数的和
data4.cummax()   # 计算前1/2/3/…/n个数的最大值
data4.cummin()   # 计算前1/2/3/…/n个数的最小值
data4.cumprod()   #计算前1/2/3/…/n个数的积
84*90*84

演示操作如下

 3.4 自定义运算

  • apply(func, axis=0):自动根据func遍历每一个数据,然后返回一个数据结构为Series的结果
    • func:自定义函数
    • axis:取0默认是列,axis=1为行

代码及操作如下

data4.apply(lambda i : i.max() - i.min())  # 求每一列中最大值与最小值的差

学习导航:http://xqnav.top/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learning-striving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值