1. 程式人生 > >Panda的學習之路(2)——pandas選擇數據

Panda的學習之路(2)——pandas選擇數據

定義 對比 pan panda pri 學習之路 進行 strong 比較

首先定義panda

dates=pd.date_range(20130101,periods=6)
# print(dates)
df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=[a,b,c,d])
print(df)
             a   b   c   d
2013-01-01   0   1   2   3
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23

一、選擇特定的某一列

# 選擇某一列 選列比較簡單
print("選擇具體的某一列")
print(df[a])
#print(df.a)#這兩種表達方式一致

結果:

選擇具體的某一列
2013-01-01     0
2013-01-02     4
2013-01-03     8
2013-01-04    12
2013-01-05    16
2013-01-06    20

二、選擇特定的幾行

2.1通過仿照array的形式來選擇

print("選擇特定的幾行 0~1")
print(df[0:1])
print("選擇20130102 到 20130104 行")
print(df[20130102:20130104])

結果:

選擇特定的幾行 0~1
            a  b  c  d
2013-01-01  0  1  2  3
選擇20130102 到 20130104 行
             a   b   c   d
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15

2.2按照標簽來選擇(其實應該說是按照index來選擇) 不管是行還是列 都必須是lable

# 按標簽來選擇
print("按照特定的標簽進行")
print(df.loc[20130102])#loc是根據index來選擇對應的行 也就是a行還是b行
# 把ab的數據全部弄出來 print("特定列給選出來") print(df.loc[:,[a,b]]) print("把某一行的特定列給選出來") print(df.loc[20130102,[a,b]])

結果:

按照特定的標簽進行篩選
a    4
b    5
c    6
d    7
Name: 2013-01-02 00:00:00, dtype: int32
特定列給選出來
             a   b
2013-01-01   0   1
2013-01-02   4   5
2013-01-03   8   9
2013-01-04  12  13
2013-01-05  16  17
2013-01-06  20  21
把某一行的特定列給選出來
a    4
b    5
Name: 2013-01-02 00:00:00, dtype: int32

2.3按第幾行(第幾列)來進行選擇 不管行列都是數字

# 按第幾行來選擇
print(df.iloc[3])#第三行的數據 iloc是根據數字 也就是第幾行來決定索引
print(df.iloc[3:5,1:3])#三到5行 1:3 列

結果:

a    12
b    13
c    14
d    15
Name: 2013-01-04 00:00:00, dtype: int32
             b   c
2013-01-04  13  14
2013-01-05  17  18

2.4把lable和數字一起結合起來 就是又可以用數字 又可以用lable

# 把lable和第幾位一起來篩選
print(df.ix[0:3,[a,c]])
print(df.ix[20130101:20130105,[a,c]])

結果:

            a   c
2013-01-01  0   2
2013-01-02  4   6
2013-01-03  8  10
             a   c
2013-01-01   0   2
2013-01-02   4   6
2013-01-03   8  10
2013-01-04  12  14
2013-01-05  16  18

三、是或者否的相關篩選

# 是或者否的篩選  只對比a 然後把其它的給顯示出來
# print(df)
# a這一列中大於8的  然後把其它的bcd也會顯示出來
print(df[df.a>6])

結果

             a   b   c   d
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23

Panda的學習之路(2)——pandas選擇數據