Python・pandasのブールインデックス徹底解説!True/Falseと0/1でデータを抽出する方法
pandasのDataFrameでは、True / False といったブール値や、1 / 0 のような整数値をそのままインデックスとして使用できます。これらを活用すると、条件に合致するレコードだけを簡単にフィルタリングでき、データ分析の効率が大きく向上します。本記事では、ブールインデックス操作に使えるさまざまな手法を、具体的なサンプルコードとともにわかりやすく解説します。
ブールインデックスの作成
まず、ゲームのスコアデータを扱うDataFrameを例に見ていきましょう。各曜日に獲得したポイントが辞書形式で格納されたデータを用意します。このDataFrameに対して、TrueとFalseをインデックス値として設定し、最終的なDataFrameを出力してみます。
コード例
import pandas as pd
# 辞書型のデータ
game = {'Day':["Monday","Tuesday","Wednesday","Thursday","Friday"], 'points':[31,24,16,11,22]}
df = pd.DataFrame(game,index=[True,False,True,False,True])
print(df)上記のコードを実行すると、次の出力が得られます。
出力結果
Day points True Monday 31 False Tuesday 24 True Wednesday 16 False Thursday 11 True Friday 22
.loc[] を使ったレコードの抽出
.loc[] を使うと、特定のブール値を持つ行だけを取り出すことができます。以下の例では、インデックスが True になっているレコードのみを取得しています。
コード例
import pandas as pd
# 辞書型のデータ
game = {'Day':["Monday","Tuesday","Wednesday","Thursday","Friday"], 'points':[31,24,16,11,22]}
df = pd.DataFrame(game,index=[True,False,True,False,True])
#print(df)
print(df.loc[True])上記のコードを実行すると、次の出力が得られます。
出力結果
Day points True Monday 31 True Wednesday 16 True Friday 22
.ix[] を使った抽出(整数値による指定)
この方法では、整数値もブール値のように扱えます。DataFrameのインデックスにあるTrue / Falseを 1 / 0 に置き換え、その値を使ってレコードをフィルタリングします。
なお、.ix[] は現在のpandasでは非推奨(deprecated)となっています。実際の開発では、ラベルベースの抽出には .loc[]、位置ベースの抽出には .iloc[] を使用することが推奨されるため、注意してください。
コード例
import pandas as pd
# 辞書型のデータ
game = {'Day':["Monday","Tuesday","Wednesday","Thursday","Friday"], 'points':[31,24,16,11,22]}
df = pd.DataFrame(game,index=[1,1,0,0,1])
#print(df)
print(df.ix[0])上記のコードを実行すると、次の出力が得られます。
出力結果
Day points 0 Wednesday 16 0 Thursday 11
まとめ
ブールインデックスを使えば、True / False や 1 / 0 を手軽にインデックスとして扱い、目的のデータだけを柔軟に抽出できます。.loc[] による条件指定は実務でも頻繁に活用される基本的なテクニックなので、ぜひマスターしておきましょう。
-
C/C++の「!」演算子に相当するPythonの機能とは?
Pythonで「!」演算子に相当するものは? C/C++において、! 記号は論理否定(NOT)演算子として定義されています。Pythonでは、これに相当するのが not 演算子です。 not 演算子は、オペランドが偽(False)であれば真(True)を返し、真(True)であれば偽(False)を返します。つまり、ブール値(真偽値)を反転させる働きを持っています。 基本的な使い方と実行例 >>> not(True) False >>> not(False) True >>> not(20>30) True >>>
-
Pythonのブール演算子とは?and・or・notの基本と使い方をわかりやすく解説
Pythonにおけるブール演算子の基本Pythonでは、and、or、not の3つの論理演算子が提供されており、これらは「ブール演算子」とも呼ばれます。条件分岐や繰り返し処理など、プログラムの制御フローを組み立てる際に欠かせない重要な演算子です。それぞれの演算子には以下のような特徴があります。and:2つのオペランド(被演算子)を必要とし、両方が真(True)の場合にのみ True を返すor:2つのオペランドを必要とし、どちらか一方でも真であれば True を返すnot:1つのオペランドを必要とし、その真偽値を反転させるand演算子:両方が真のときだけTrueを返すブール演算子 and は