Python pandas基础——查找数据

一、简介

 我们在这里简单介绍了创建Series、DataFrame的几种方式,本文主要介绍如何查找数据。

 由于Series数据结构较为简单,因此先主要介绍DataFrame数据结构的查找数据。

二、按列查找数据

 先介绍按列查找数据的方法。

2.1 查找一整列的数据

2.1.1 df[‘列名’]

 先创建一个DataFrame

data = {
    
    'name': ['apolo', 'adm', 'bolon', 'cathy'],
        'age': [18, 29, 32, 28],
        'sex': ['male', 'female', 'male', 'male']}
df = pd.DataFrame(data)
df

输出

	name	age	sex
0	apolo	18	male
1	adm	    29  female
2	bolon	32	male
3	cathy	28	male

 知道要查找的列的列名的话,可以直接按照df[‘列名’]的方式直接查找:

df['age']

输出:返回的是一个Series对象,可以利用Series的属性或方法进行后续的操作

0    18
1    29
2    32
3    28
Name: age, dtype: int64

 查找多列的话,也可以用类似的方法——df[[‘列名1’, ‘列名2’, ……]],但要注意不能用df[‘列名1’, ‘列名2’, ……],否则会报错。

df[['age', 'sex']]

输出:此时输出的是一个DataFrame对象

   age	sex
0	18	male
1	29	female
2	32	male
3	28	male

2.1.2 df.loc[:, ‘列名’]

  其实这种方法更适合查找一列中的部分数据,即对行切片。

df.loc[:, 'age']

输出:是一个Series对象

0    18
1    29
2    32
3    28
Name: age, dtype: int64

  同样,这种方法也可以同时查找多列——df.loc[:, [‘列名1’, ‘列名2’, ……]]

df.loc[:, ['age', 'sex']]

输出

    age	sex
0	18	male
1	29	female
2	32	male
3	28	male

2.1.3 df.iloc[:, 列的位置]

  这种方法和df.loc[:, ‘列名’]类似,区别在于这种方法需要传入要查找的列的位置,而不是列名。

df.iloc[:, 2]

输出

0      male
1    female
2      male
3      male
Name: sex, dtype: object

  同样,这种方法也可以同时查找多列——df.loc[:, [‘列的位置1’, ‘列的位置2’, ……]]

df.iloc[:, [0, 2]]

输出

    name	sex
0	apolo	male
1	adm	    female
2	bolon	male
3	cathy	male

2.2 查找一列的部分数据

2.2.1 df.loc[‘起始索引名’:‘终点索引名’, ‘列名’]

 先创建一个DataFrame

data = {
    
    'name': ['apolo', 'adm', 'bolon', 'cathy', 'devn', 'elov'],
        'age': [18, 29, 32, 28, 34, 19],
        'sex': ['male', 'female', 'male', 'male', 'male', 'female']}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e','f'])
df

输出

    name	age	sex
a	apolo	18	male
b	adm	    29  female
c	bolon	32	male
d	cathy	28	male
e	devn	34	male
f	elov	19	female

 和查询整列的语法类似。

df.loc['a':'c', 'sex']

输出:需要注意的是,'a':'c'不能换为'c:'a',否则结果是空的,同样,也可以同时查询多列的部分,只需将'sex'换为['sex', 'age']即可。

a      male
b    female
c      male
Name: sex, dtype: object

2.2.2 df.iloc[‘起始索引位置’:‘终点索引位置’, ‘列的位置’]

 和查询整列的方法类似。

df.iloc[2:5, 1]

输出:同样,也不能调换起始索引和终点索引的位置,否则结果是空的。而要查询多列,也只需将1换为[0, 1]即可。

c    32
d    28
e    34
Name: age, dtype: int64

三、按行查找数据

 和查询列的方法类似,主要就是用df.loc[]df.iloc[]

3.1 查找整行数据

3.1.1 df[‘索引名’]

 和查询整列的方法类似,但只传入待查找的行的索引名即可。

df.loc['c']

输出:此时输出的对象是一个Series对象,其索引为原df的列名。

name    bolon
age        32
sex      male
Name: c, dtype: object

 查找多行的语法类似,只需传入索引名组成的列表即可。

df.loc[['c', 'a']]

输出:最后输出的行的顺序和传入的列表中索引名的顺序一致。

	name	age	sex
c	bolon	32	male
a	apolo	18	male

3.1.2 df[‘索引名’]

 和查询整列的方法类似,但只传入待查找的行的索引的位置即可。

df.iloc[3]

输出:此时输出的对象是一个Series对象,其索引为原df的列名。

name    cathy
age        28
sex      male
Name: d, dtype: object

 查找多行的语法类似,只需传入索引的位置组成的列表即可。

df.iloc[[5, 2]]

输出:最后输出的行的顺序和传入的列表中索引的位置的顺序一致。

	name	age	sex
f	elov	19	female
c	bolon	32	male

3.2 查找行的部分数据

 和查找整行的数据类似。

3.2.1 df.loc[‘索引名’, ‘起始列名’:‘终点列名’]

df.loc['c', 'name':'age']

输出:同样要注意,列名的顺序不能写反,否则会得到空结果。要想查找多个行的部分数据,也只需传入索引名组成的列表即可。

name    bolon
age        32
Name: c, dtype: object

3.2.2 df.iloc[索引位置, 起始列位置:终点列位置]

df.iloc[4, 1:3]

输出:同样要注意,列的位置的顺序不能写反,否则会得到空结果。要想查找多个行的部分数据,也只需传入索引的位置组成的列表即可。

age      34
sex    male
Name: e, dtype: object

猜你喜欢

转载自blog.csdn.net/TSzero/article/details/115306160