3.pandas的简单查询 从DataFrame中查询Series

知道了基本的pandas的数据结构,就可以进行查询相应的数据了

DataFrame可以看成是一个个的Series组成的一个二维结构,既然如此,就会有从DataFrame里查询Series的方法

这么说会一头雾水,通俗一点讲就是从表格里查询一行或者一列的数据

由于pandas和字典有些类似,所以同样,也可以用字典的方式进行获取

列的查询

d = {
    'state':['s1','s2','s3'],
    'year':['2020','2019','2018'],
    'inp':['a','b','c']
}
s1 = pd.DataFrame(d)

print(s1)
print('***********')
print(s1['year'])
  state  year inp
0    s1  2020   a
1    s2  2019   b
2    s3  2018   c
***********
0    2020
1    2019
2    2018
Name: year, dtype: object

这样我们就拿到了year这一列的所有数据

当然也可以查询多列,只不过返回的就是DataFrame,因为已经变成二维的数据了

d = {
    'state': ['s1', 's2', 's3'],
    'year': ['2020', '2019', '2018'],
    'inp': ['a', 'b', 'c']
}
s1 = pd.DataFrame(d)

print(s1)
print('***********')
print(s1[['year', 'state']])

  state  year inp
0    s1  2020   a
1    s2  2019   b
2    s3  2018   c
***********
   year state
0  2020    s1
1  2019    s2
2  2018    s3

将想要查询的列,以列表的形式传进去,就能够获取多列的数据了

行的查询

行查询就是查询哪一行,输入行数,返回该行的数据

d = {
    'state': ['s1', 's2', 's3'],
    'year': ['2020', '2019', '2018'],
    'inp': ['a', 'b', 'c']
}
s1 = pd.DataFrame(d)

print(s1)
print('***********')
print(s1.loc[1])
  state  year inp
0    s1  2020   a
1    s2  2019   b
2    s3  2018   c
***********
state      s2
year     2019
inp         b
Name: 1, dtype: object

查询多行的数据,就类似于列表的切片,但是和python的切片不同的是,切片是首尾都闭合的状态

d = {
    'state': ['s1', 's2', 's3'],
    'year': ['2020', '2019', '2018'],
    'inp': ['a', 'b', 'c']
}
s1 = pd.DataFrame(d)

print(s1)
print('***********')
print(s1.loc[1:3])
  state  year inp
0    s1  2020   a
1    s2  2019   b
2    s3  2018   c
***********
  state  year inp
1    s2  2019   b
2    s3  2018   c

可能会发现,没有第三行,为什么可以执行,其实,末尾的你写2000也行,对于查询而言,可以溢出,不用一定在

而且根据上面说到的原理,查询多列拿到的也应该是DataFrame的类型