天天看點

Numpy、Pandas标簽“loc”、位置“iloc”、混合标簽“ix” 在行列中定位及索引事例

Pandas的定位引用是非常細節内容,再加上行列運用是資料處理必不可少的環節,是以精确學好細節對處理資料有非常大幫助。

1.開頭慣性保留作者和明示代碼格式

# usr in DataAnalysis by 小K
# -*-coding-UTF-8-*-

2.引入第三方庫,著名的Numpy和Pandas

import pandas as pd
import numpy as np

3.用Numpy生成數列,并儲存到Pandas的DataFrame庫

dates = pd.date_range("20190314",periods=6)
df1 = pd.DataFrame(np.arange(42).reshape((6,7)),index = dates,columns=["code","name","open","high","low","close","volume"])

4.顯示具體生成的數列

# print(df1)
#             code  name  open  high  low  close  volume
# 2019-03-14     0     1     2     3    4      5       6
# 2019-03-15     7     8     9    10   11     12      13
# 2019-03-16    14    15    16    17   18     19      20
# 2019-03-17    21    22    23    24   25     26      27
# 2019-03-18    28    29    30    31   32     33      34
# 2019-03-19    35    36    37    38   39     40      41

5.擷取其中一列生成Series

# print(df1["volume"])   #将DataFrame的一個列擷取為Series
# 2019-03-14     6
# 2019-03-15    13
# 2019-03-16    20
# 2019-03-17    27
# 2019-03-18    34
# 2019-03-19    41
# Freq: D, Name: volume, dtype: int32

6.不同的表達方式,實作同一效果

# print(df1.volume)  #效果等同  print(df1["volume"])
# 2019-03-14     6
# 2019-03-15    13
# 2019-03-16    20
# 2019-03-17    27
# 2019-03-18    34
# 2019-03-19    41
# Freq: D, Name: volume, dtype: int32

7.取某行的數值

# print(df1[0:2])   #顯示效果為:0-1行的數值
#              code  name  open  high  low  close  volume
# 2019-03-14     0     1     2     3    4      5       6
# 2019-03-15     7     8     9    10   11     12      13

8.通過索引擷取具體數值

# print(df1["20190315":"20190318"])   #通過索引擷取具體行數值; 效果等同于上面數字切片
#             code  name  open  high  low  close  volume
# 2019-03-15     7     8     9    10   11     12      13
# 2019-03-16    14    15    16    17   18     19      20
# 2019-03-17    21    22    23    24   25     26      27
# 2019-03-18    28    29    30    31   32     33      34

9.通過“loc”定位

# print(df1.loc["20190315"])    #通過标簽擷取資料的某一行;  #以列的形式展示
# code       7
# name       8
# open       9
# high      10
# low       11
# close     12
# volume    13
# Name: 2019-03-15 00:00:00, dtype: int32

10.“loc”雙重定位

# print(df1.loc["20190315",["code","open","volume"]])   #先標明行,再确定列的數值,形成定位
# code       7
# open       9
# volume    13
# Name: 2019-03-15 00:00:00, dtype: int32

11.“loc”全行,定列

# print(df1.loc[:,["code","high"]])   #:(冒号)表示提取所有行;列用指定,則顯示該列所有數值。
#             code  high
# 2019-03-14     0     3
# 2019-03-15     7    10
# 2019-03-16    14    17
# 2019-03-17    21    24
# 2019-03-18    28    31
# 2019-03-19    35    38

12.“iloc”定行

# print(df1.iloc[2])      #loc,選擇标簽(不定行),顯示結果; iloc,選擇位置(定行、定列),顯示資料; 資料以列展示
# code      14
# name      15
# open      16
# high      17
# low       18
# close     19
# volume    20
# Name: 2019-03-16 00:00:00, dtype: int32

13.“iloc”指定行、指定列

# print(df1.iloc[1:3,2:4])      #前值指定第1到第3行(不包含3,即1,2行),後值指定第2到第4列(不包含4,即2,3列)
#             open  high
# 2019-03-15     9    10
# 2019-03-16    16    17

14.“iloc”篩選行列

# print(df1.iloc[[1,2,4],[3,5]])   #前值指定不連續的行,後值指定不連續的列
#             high  close
# 2019-03-15    10     12
# 2019-03-16    17     19
# 2019-03-18    31     33

15.“ix”混合标簽引用

# print(df1.ix[2:5,["open","low"]])   #混合标簽位置;選擇行(數字,不用【】);字元串必須加【】,内用字元串表示
#             open  low
# 2019-03-16    16   18
# 2019-03-17    23   25
# 2019-03-18    30   32

16.“ix”定行、定列

# print(df1.ix["20190315":"20190318",2:4])  #前值選擇dates(注意包含最後日期,不加【】),後值選擇數字,直接用
#             open  high
# 2019-03-15     9    10
# 2019-03-16    16    17
# 2019-03-17    23    24
# 2019-03-18    30    31

17.設定條件篩選,并顯示“Bool”值

# print(df1.open>8)   #對數值進行判斷比較,顯示boolean value,"True"or"False"
# 2019-03-14    False
# 2019-03-15     True
# 2019-03-16     True
# 2019-03-17     True
# 2019-03-18     True
# 2019-03-19     True
# Freq: D, Name: open, dtype: bool

18.保留篩選“True”值,舍棄“False”

# print(df1[df1.open>8] )    #對數值進行判讀,并列印出為True的數值,舍棄為False的數值  注意:有兩個df1篩選運用
#             code  name  open  high  low  close  volume
# 2019-03-15     7     8     9    10   11     12      13
# 2019-03-16    14    15    16    17   18     19      20
# 2019-03-17    21    22    23    24   25     26      27
# 2019-03-18    28    29    30    31   32     33      34
# 2019-03-19    35    36    37    38   39     40      41      

以上都是執行個體,複制即可直接使用,友善學習的同學了解;操作時, 選中複制行,前面“#”使用 “ctrl +/”即可撤銷

繼續閱讀