Python數據處理之(十 一)Pandas 選擇數據

首先先建立一個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']):選擇2018112120181123標籤之間的數據,並且包括這兩個標籤。

二、根據標籤 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中如何設置值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章