LoginSignup
2
2

More than 5 years have passed since last update.

dplyr使いのためのpandas スライスsliceとインデックスindex編

Last updated at Posted at 2018-11-29

はじめに

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の操作には必要となる記法です。ぜひ覚えておきましょう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2