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 +/”即可撤銷