Python資料處理之(十 一)Pandas 選擇資料
阿新 • • 發佈:2018-11-21
首先先建立一個6X4
的矩陣
>>> import pandas as pd
>>> import numpy as np
>>> dates=pd.date_range('20181121',periods=6)
>>> df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])
>>> print(df)
A B C D
2018-11-21 0 1 2 3
2018-11-22 4 5 6 7
2018-11-23 8 9 10 11
2018-11-24 12 13 14 15
2018-11-25 16 17 18 19
2018-11-26 20 21 22 23
一、簡單的篩選
如果我們想選取DataFrame
中的資料,下面描述了兩種途徑, 他們都能達到同一個目的:
>>> print(df.A)
2018-11-21 0
2018-11-22 4
2018-11-23 8
2018-11-24 12
2018-11-25 16
2018-11-26 20
Freq: D, Name: A, dtype: int32
>>> print(df['A'])
2018-11-21 0
2018-11-22 4
2018-11-23 8
2018-11-24 12
2018-11-25 16
2018-11-26 20
Freq: D, Name: A, dtype: int32
選擇跨越多行或多列:
>>> print(df[0:3])
A B C D
2018-11-21 0 1 2 3
2018-11-22 4 5 6 7
2018-11-23 8 9 10 11
>>> print(df['20181121':'20181123'])
A B C D
2018-11-21 0 1 2 3
2018-11-22 4 5 6 7
2018-11-23 8 9 10 11
如果df[3:3]
將會是一個空物件。print(df['20181121':'20181123'])
:選擇20181121
到20181123
標籤之間的資料,並且包括這兩個標籤。
二、根據標籤 loc
同樣我們可以使用標籤來選擇資料 loc, 本例子主要通過標籤名字選擇某一行資料, 或者通過選擇某行或者所有行(:代表所有行)然後選其中某一列或幾列資料。:
>>> print(df.loc['20181122'])
A 4
B 5
C 6
D 7
Name: 2018-11-22 00:00:00, dtype: int32
>>> print(df.loc[:,['A','B']])
A B
2018-11-21 0 1
2018-11-22 4 5
2018-11-23 8 9
2018-11-24 12 13
2018-11-25 16 17
2018-11-26 20 21
>>> print(df.loc['20181122',['A','B']])
A 4
B 5
Name: 2018-11-22 00:00:00, dtype: int32
三、根據序列 iloc
另外我們可以採用位置進行選擇iloc
, 在這裡我們可以通過位置選擇在不同情況下所需要的資料例如選某一個,連續選或者跨行選等操作。
>>> print(df)
A B C D
2018-11-21 0 1 2 3
2018-11-22 4 5 6 7
2018-11-23 8 9 10 11
2018-11-24 12 13 14 15
2018-11-25 16 17 18 19
2018-11-26 20 21 22 23
>>> print(df.iloc[3,1])
13
>>> print(df.iloc[3:5,1:3])
B C
2018-11-24 13 14
2018-11-25 17 18
>>> print(df.iloc[[1,3,5],1:3])
B C
2018-11-22 5 6
2018-11-24 13 14
2018-11-26 21 22
在這裡我們可以通過位置選擇在不同情況下所需要的資料, 例如選某一個,連續選或者跨行選等操作。
四、根據混合的這兩種 ix
當然我們可以採用混合選擇 ix, 其中選擇’A’
和’C’
的兩列,並選擇前三行的資料。
>>> print(df.ix[:3,['A','C']])
A C
2018-11-21 0 2
2018-11-22 4 6
2018-11-23 8 10
五、通過判斷的篩選
最後我們可以採用判斷指令 (Boolean indexing
) 進行選擇. 我們可以約束某項條件然後選擇出當前所有資料.
>>> print(df[df.A>8])
A B C D
2018-11-24 12 13 14 15
2018-11-25 16 17 18 19
2018-11-26 20 21 22 23
下節我們將會講到Pandas
中如何設定值。