この記事では、データフレームをサブセットするために使用できるいくつかの方法について説明します。
もしあなたがPythonにデータをインポートしているのであれば、データフレームについて知っておく必要があります。
データフレームは2次元のデータ構造で、つまり、データは行と列に表形式で並んでいます。
データフレームのサブセットとは、データフレームから必要な行と列のセットを選択する処理です。
選択することができます。
- すべての行と限られた列
- すべての列と制限された行
- 限定された行と限定された列。
データフレームのサブセットは、データフレームの特定の部分のみにアクセスすることができるため、重要です。
これは、データフレームのパラメータ数を減らしたいときに便利です。
まずは、作業するデータセットをインポートするところから始めましょう。
データフレームを構築するためのデータをインポートする
この記事では、California Housingのデータセットを使用します。
まず、pandas を使ってデータをデータフレームにインポートするところから始めましょう。
import pandas as pd
housing = pd.read_csv( "/sample_data/california_housing.csv" )
housing.head() |
housing[ 'population' ]
|
csvファイルは、Pandasのデータフレームとして筐体変数に格納されています。
Indexing Operator を用いてデータフレームのサブセットを選択する
インデックス演算子とは、角括弧の略称です。
角括弧を使うだけで、列、行、行と列の組み合わせを選択することができます。
実際に使ってみましょう。
1. カラムのみの選択
インデックス演算子を使ってカラムを選択するには、次のようなコードを使用します。
housing[[ 'population' , 'households' ]]
|
housing_subset = housing[[ 'population' , 'households' ]]
housing_subset.head() |
このコードでは、ラベルが「population」である列を選択し、その列に対応するすべての行の値を表示します。
インデキシング演算子を使用して複数の列を選択することもできます。
population_500 = housing[housing[ 'population' ]> 500 ]
population_500 |
population_500 = housing_subset[housing[ 'population' ]> 500 ]
population_500 |
データフレームをサブセットして保存するには、次のコード行を使用します。
housing.loc[ 1 ]
|
housing.loc[[ 1 , 5 , 7 ]]
|
これは、元のデータフレームのサブセットとして別のデータフレームを作成します。
2. 行の選択
インデックス演算子を使うと、ある条件に基づいて特定の行を選択することができます。
例えば、人口が500人以上の行を選択するには、次のようなコードを使用します。
housing.loc[ 1 : 7 ]
|
housing.loc[ 1 : 7 ,[ 'population' , 'households' ]]
|
また、データフレームをさらにサブセットすることもできます。
例えば、上記で作成した housing_subset データフレームから行をフィルタリングしてみましょう。
housing.iloc[[ 2 , 3 , 6 ], [ 3 , 5 ]]
|
上の2つの出力は同じ行数であることに注意してください(そうあるべきです)。
Python .loc() を使ってデータフレームをサブセットする
.loc インデクサは、データフレームから行と列を選択する効果的な方法です。
また、行と列を同時に選択するために使用することもできます。
覚えておくべき重要なことは、.loc()は行と列のラベルに対して働くということです。
この後、行と列のインデックスに基づく.iloc()を見ていきます。
1. loc() による行の選択
.loc() を使って一行を選択するには、次のようなコードを使用します。
複数の行を選択するには、:
また、開始インデックスと終了インデックスの間の行をスライスすることもできます。
2. 行と列の選択
データフレームから特定の行と列を選択するには、次のコードを使用します。
このコードの行は、1 から 7 までの行と、’opulation’ と ‘housing’ というラベルに対応する列を選択します。
Pythonのiloc()を使ってデータフレームをサブセットします。
iloc() 関数は integer location の略です。
これは行と列の両方に対して整数インデックスで動作します。
iloc()を使って行と列のサブセットを選択するには、以下のコードを使用します。
このコード行は、行番号2、3、6と列番号3、5を選択します。
ilocを使うと、行と列の完全なラベルを書く手間が省けます。
また、iloc() を使うと、ラベルを整数に置き換えてから loc() と同じように行や列を個別に選択することができます。
まとめ
この記事では、角括弧、loc、iloc を使って Python でデータフレームをサブセットする方法について学びました。
データセットをデータフレームにインポートする方法と、データフレームから行や列をフィルタリングする方法について学びました。