直接对数据进行加、减、乘、除等运算,可使用函数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
使用>、<、=、&、|、~等运算符对数据进行筛选
使用示范代码如下
# 数据生成
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)] # 多个逻辑判断,每个逻辑要使用括号括起来
操作如下
具体使用代码如下
data3.query('数学 >= 90 | 语文>= 90') # 多个逻辑判断,条件要加上引号
data3.query('~(语文 >= 90)') # ~为非,即取反,条件要加上引号
data3[data3['数学'].isin([60, 92, 99])] # 判断是否在指定值中并筛选
操作演示如下
count
, mean
, std
, min
, max
等,含义如下
对单个函数进行统计的时候,坐标轴按默认列,即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) # 计算每一行的均值
操作演示如下
函数 | 作用 |
---|---|
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
演示操作如下
代码及操作如下
data4.apply(lambda i : i.max() - i.min()) # 求每一列中最大值与最小值的差
学习导航:http://xqnav.top/