3.pandas的簡單查詢
阿新 • • 發佈:2020-07-24
知道了基本的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的型別