#はじめに
pandasデータフレームの操作には基本編で紹介した操作方法がありますが、データの部分的な取り出しにはスライスとインデックスという記法による操作手法があり覚えておくと便利です。
配列やデータフレームには行と列にインデックス属性(名前や番号)というものがあり、これを指定することで操作します。
##関連記事
dplyr使いのためのpandas 基本編
dplyr使いのためのpandas マルチカラム操作編
##slice スライス
コロン(:)でマークされた表記方法によるNumpy配列やPandasデータフレームの行や列(範囲)を操作する手法
numpyスライス
#numpy配列の操作
import numpy as np
numpyarray = np.array([[1,2,3],[4,5,6],[7,8,9]])
#以下のような配列があるとき
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
numpyarray[:, :1] #1列目の配列データを指定
array([[1],
[4],
[7]])
numpyarray[:1, :] #1行目の配列データを指定
array([[1, 2, 3]])
numpyarray[:2, :2] #1~2行と1~2列の配列データを指定
array([[1, 2],
[4, 5]])
pandasスライス
#pandasデータフレームの操作
import pandas as pd
dataframe = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
pddata.columns = ["colA", "colB", "colC"]
#以下のようなデータフレームがあるとき
colA colB colC
0 1 2 3
1 4 5 6
2 7 8 9
dataframe.iloc[:, :1] #1列目の範囲データを指定
colA
0 1
1 4
2 7
dataframe.iloc[:1, :] #1行目の範囲データを指定
colA colB colC
0 1 2 3
dataframe.iloc[:2, :2] #1~2行と1~2列の範囲データを指定
colA colB
0 1 2
1 4 5
##index インデックス
Numpy配列やPandasデータフレームの個々の要素(値)を操作する手法
numpyインデックス
#0がスタート位置になる
numpyarray[0, 0] #1行1列目の値の指定
1
pandasインデックス
#0がスタート位置になる
pddata.iloc[2, 2] #3行3列目の値の指定
9
##locとiloc
padasデータフレームのスライス、インデックスに出てきた "iloc" はデータフレームのインデックス属性を操作する機能です。ilocはデータの行と列の位置で指定、locは行と列の明示的な名称で指定します。
locとiloc
#1~2行と1~2列の範囲データを指定(ilocとlocで同じ)
pddata.iloc[:2, :2] #位置で指定
pddata.loc[:"1", :"colB"] #名称で指定
colA colB
0 1 2
1 4 5
#まとめ
スライスとインデックスはMultiindexの操作には必要となる記法です。ぜひ覚えておきましょう。