ブール値がデータフレームのインデックスとして使えるのは面白いと思いませんか?ブール値のインデックスは、DataFrame の各行を表します。
ブール値のインデックスを使うと、データセットから不要なデータをフィルタリングすることができます。
データをフィルタリングすることで、他の方法では見つけることができなかった深い情報を得ることができます。
今回は、ブールインデックスを使ったデータのフィルタリングとセグメント化の方法について学びます。
Pythonでブール式インデックス作成
まずはDataFrameを作成しましょう。
ここでは、ある競技に参加する受験者の年齢に関するデータを使ってDataFrameを作成します。
import pandas as pd
# Creating a dictionarydata = {'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 dictionarydata = {'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 dictionarydata = {'Name':["Tommy","Linda","Justin","Brendon"], 'Age':[31,24,16,22]}
df = pd.DataFrame(data,index=[1,0,0,1])
print(df.iloc[1])
|
結果は以下の通りです。
Name LindaAge 24
Name: 0, dtype: object
|
3. .ix[]関数を使う
これも上の方法と似たようなものですが、この場合、整数をブール値として使うことができます。
つまり、例えばインデックスの値を1と0とすると、インデックスの値が0か1である行をフィルタリングすることができるのです。
import pandas as pd
# Creating a dictionarydata = {'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を使用して、有用なデータをフィルタリングする方法を学びました。
この記事がお役に立てれば幸いです。