PythonのPandasでブールインデックス参照を実装する方法

スポンサーリンク

ブール値がデータフレームのインデックスとして使えるのは面白いと思いませんか?ブール値のインデックスは、DataFrame の各行を表します。

ブール値のインデックスを使うと、データセットから不要なデータをフィルタリングすることができます。

データをフィルタリングすることで、他の方法では見つけることができなかった深い情報を得ることができます。

今回は、ブールインデックスを使ったデータのフィルタリングとセグメント化の方法について学びます。

スポンサーリンク

Pythonでブール式インデックス作成

まずはDataFrameを作成しましょう。

ここでは、ある競技に参加する受験者の年齢に関するデータを使ってDataFrameを作成します。

import pandas as pd
# Creating a dictionary
data = {'Name':["Tommy","Linda","Justin","Brendon"], 'Age':[31,24,16,22]}
df = pd.DataFrame(data,index=[True,False,True,False])
print(df)

結果は以下の通りです。

        Name         Age
True     Tommy   31
False    Linda   24
True    Justin   16
False  Brendon   22

1. .loc [] 関数を使う

これは、ブール値のインデックスに従ってデータをフィルタリングするのに役立つ、優秀でシンプルな関数です。

この関数を使うと、特定のブール値を持つデータをフィルタリングすることができます。

例えば、.loc []関数にTrueを渡すと、インデックス値がTrueであるデータのみがフィルタリングされることになります。

このメソッドでは、ブール値として整数を使用することはできません。

例えば

import pandas as pd
# Creating a dictionary
data = {'Name':["Tommy","Linda","Justin","Brendon"], 'Age':[31,24,16,22]}
df = pd.DataFrame(data,index=[True,False,True,False])
print(df.loc[True])

結果は、以下の通りです。

        Name       Age
True   Tommy   31
True  Justin   16

2. .iloc[]関数の使用

iloc[]関数は整数値しか受け付けないため、整数値を渡す必要があります。

例えば

import pandas as pd
# Creating a dictionary
data = {'Name':["Tommy","Linda","Justin","Brendon"], 'Age':[31,24,16,22]}
df = pd.DataFrame(data,index=[1,0,0,1])
print(df.iloc[1])

結果は以下の通りです。

Name    Linda
Age        24
Name: 0, dtype: object

3. .ix[]関数を使う

これも上の方法と似たようなものですが、この場合、整数をブール値として使うことができます。

つまり、例えばインデックスの値を1と0とすると、インデックスの値が0か1である行をフィルタリングすることができるのです。

import pandas as pd
# Creating a dictionary
data = {'Name':["Tommy","Linda","Justin","Brendon"], 'Age':[31,24,16,22]}
df = pd.DataFrame(data,index=[1,1,0,0])
print(df.ix[0])

結果は、以下の通りになります。

           Name       Age
0       Justin          16
0       Brendon     22

まとめ

まとめると、pythonでboolean indexingを使用して、有用なデータをフィルタリングする方法を学びました。

この記事がお役に立てれば幸いです。

タイトルとURLをコピーしました