目录
import pandas as pd
data = {
'语文': [0, 19, 9, 28, 91, 56],
'数学': [64, 81, 80, 17, 37, 52],
'英语': [40, 25, 45, 58, 67, 57],
'化学': [32, 38, 7, 12, 33, 28],
'物理': [69, 43, 44, 62, 3, 67],
'体育': [93, 7, 77, 95, 40, 89],
'科目': ['科一', '科二', '科三', '科四', '科五', '科六']
}
df = pd.DataFrame(data, index=[2, 6, 7, 9, 10, 'cs'])
select_dtypes数据类型查询法
def select_dtypes(self, include=None, exclude=None)支持include和exclude参数,参数均支持字符串或列表传值。
print(df.select_dtypes(exclude='int64')) # 选择非int64类型的列
print(df.select_dtypes(include=['int64', 'object'])) # 选择包含int64和object类型的列
列名获取法
通过列名获取数据
print(df)
print(df[['物理', '体育']])
获取行数据
切片获取法
支持同列表数据一样的切片获取
print(df[:5]) # 获取前n-1行
print(df[-2:]) # 获取后几行
print(df[::2]) # 每隔n-1行获取一条数据
DataFrame对象方法head、tail
head:获取前n行,有一个参数n,默认=5,为前五行,可以自定义设置
tail: 获取后n行,有一个参数n,默认=5,为后五行,可以自定义设置
print(df.head()) # 获取前n行,有一个参数n,默认=5,为前五行,可以自定义设置
print(df.tail(n=3)) # 获取后n行,有一个参数n,默认=5,为后五行,可以自定义设置
样本随机法
DataFrame对象的sample方法支持随机获取样本数据,
sample()
方法的常用参数:
参数 描述 n
抽取的样本数量(行或列的数量)。 frac
抽取的样本比例(例如 frac=0.5
表示抽取 50% 的样本)。replace
是否允许重复采样。默认为 False
(不允许重复)。weights
每个样本的权重,权重越高,被抽中的概率越大。 random_state
随机种子,用于确保结果可重复。参数用于设置随机种子,确保每次运行的结果一致。 axis
采样方向: 0
表示按行采样(默认),1
表示按列采样。(行:0或‘index’, 列:1或‘columns’,默认为None)
print(df.sample(n=3)) # 随机获取N行,N默认为1
print(df.sample(frac=.4)) # 随机获取百分之frac行数据,数据顺序与原数组数据不一致,也是随机的
print(df.sample(axis='columns'))
weights = [0.1, 0.2, 0.3, 0.2, 0.2, 0.6]
print(df.sample(weights=weights))
print(df.sample(random_state=10))
索引(行标)获取法
loc表示自定义或系统默认索引,支持修改的索引,用法:DataFrame.loc()[行索引或行名称或条件,列名称]
iloc表示计算机系统记忆的索引(从0开始的整型递增数字),不支持的修改的索引,相当于EXCEL中的行号和列号,用法:DataFrame.iloc()[行索引,列索引]
使用时可以省去括号 ,loc()[] 同 loc[] ,iloc()[] 同 iloc[],[]中均可传两个参数,[行参数,列参数]
loc
1、如果只有一个值,且参数非列表类型时,会根据索引名称匹配,返回一个一维数组。
print(df.loc['cs']) # 获取一行数据并转为一维数组
2、只有一个参数,参数为列表时,表示获取列表中索引对应的数据
print(df.loc[[2, 'cs']]) # 结果同print(df.loc()[[2, 'cs']])
3、获取数组中某一行中的某几列的数据
print(df.loc()[2, ['物理', '语文']])
4、两个参数都不是列表时,获取某行某列数据
print(df.loc()[2, '物理']) # 同print(df.loc()[2]['物理'])
5、获取某几行中的某几列
print(df.loc()[[2, 'cs'], ['物理', '数学', '体育']]) # 获取某几行中的某几列
6、支持&、|、isin运算
DataFrame对象支持和运算、或运算。
print(df.loc()[(df['数学'] > 20) & (df['语文'] >= 19), ['物理', '数学', '体育']])
isin作为DataFrame对象的方法,表示获取数组中包含某些值的数据。
print(df.loc()[df['数学'].isin([64, 80, 81])])
iloc
print('-----------------获取某一行数据并转为一维数组----------------------')
print(df.iloc()[0]) # 获取某一行数据并转为一维数组
print('-----------------获取某行某列数组值----------------------')
print(df.iloc()[0, 0]) # 获取某行某列数组值
print('-------------------获取某几行的某几列--------------------')
print(df.iloc()[[1, 5], [0, 2, 3]]) # 获取某几行的某几列
query查询
在 Pandas 中,query() 方法提供了一种简洁且高效的方式来过滤 DataFrame 或 Series 中的数据。它允许使用字符串表达式来筛选数据,类似于 SQL 中的 WHERE 子句。def query(self, expr: str, *, inplace: bool = False, **kwargs) -> DataFrame | None
1、expr是一个字符串表达式,支持使用逻辑运算符 &(与)、|(或)来组合多个条件,支持!=、==、< 、>等运算符 ,使用时必须在逻辑运算中使用括号()。
print(df.query('语文>5 | 数学>32'))
print('---------------------------------------')
print(df.query('科目 == "科一"'))
print('---------------------------------------')
print(df.query('语文 == 91'))
2、expr表达式支持使用变量,变量通过@j进行引用
value = 30
result = df.query('化学 > @value')
print(result)
3、expr表达式支持使用数组索引
print(df.query('index == "cs"'))
4、expr表达式支持使用 in 和 not in 操作符。
print('-----------------行索引包含(不包含)----------------------')
print(df.query('index in [2, "cs"]'))
print('-----------------列索引包含(不包含)---------------------')
print(df.query('语文 in [91, 56]'))
布尔选择法
1、DataFrame.列索引名 可用来判断条件下对应行数据的真假
print((df.语文 >= 20) & (df.数学 >= 30))
2、获取符合条件的数据,即判断值为真时的索引行
print(df[(df.语文 >= 20) & (df.数学 >= 30)])
3、DataFrame对象支持between进行区间选择
print(df.语文.between(20, 95))
print(df[df.语文.between(20, 95)])