1. 程式人生 > 實用技巧 >3.pandas的簡單查詢

3.pandas的簡單查詢

知道了基本的pandas的資料結構,就可以進行查詢相應的資料了

DataFrame可以看成是一個個的Series組成的一個二維結構,既然如此,就會有從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的型別