Pandasのbetweenメソッド を使って特定の範囲内の行や列を抽出する方法

スポンサーリンク

Pandasモジュールの連載では、未対応の重要な関数であるPython Pandas between()関数について詳しく解説していきます。

では、さっそく始めましょう

スポンサーリンク

Pandas between() メソッドを使用する

PythonのPandasモジュールは、基本的に行と列に存在するデータ値、すなわち一種のテーブル/マトリックス形式を扱うために使用されます。

その中で、我々はしばしば数値型の値を保持するデータ変数に出くわす。

モデリングなど何らかの処理を行う前には、データの解析や変換が必要です。

簡単に言うと、Python Pandasのbetween()関数は、比較と最後のチェックという意味で、簡単な分析に役立つのです。

between()関数は、関数に渡された開始値と終了値の間に存在する値をチェックします。

つまり、ある範囲の値の中で、どのデータ要素が渡された開始値と終了値の間に入るかをチェックします。

では、その構造を理解してみましょう。

構文 – Python Pandas の between() メソッド

以下の構文を見てください。

Series.between(start, end, inclusive=True)
  • start: これはチェックを開始する開始値です。
  • end: チェックはこの値で停止します。
  • inclusive: Trueの場合、渡された’start’と’end’の値をチェックに含めます。False’に設定すると、’start’と’end’の値を除外してチェックを実行します。

補足すると、Python Pandasのbetween()関数は、数値と1次元のDataFrameに対してのみ有効な関数です。

それでは、いくつかの例を通して、この関数を分析してみましょう。

1. Python between()関数の包含値を’True’に設定した場合

この例では、pandas.DataFrame()関数を用いて1次元のデータフレームを作成しました。

例えば、以下の様になります。

import pandas as pd
data = {"Roll-num": [10,20,30,40,50,60,70], "Age":[12,21,13,20,14,13,15], "NAME":['John','Camili','Rheana','Joseph','Amanti','Alexa','Siri']}
 
block = pd.DataFrame(data)
print("Original Data frame:
"
)
print(block)

結果は以下の通りです。

以下のデータフレームを見てください。

Original Data frame:
 
   Roll-num  Age    NAME
0        10   12    John
1        20   21  Camili
2        30   13  Rheana
3        40   20  Joseph
4        50   14  Amanti
5        60   13   Alexa
6        70   15    Siri

さて、データフレームの ‘Age’ 変数に対して between() メソッドを適用しました。

inclusiveをTrueに設定することで、12と15の間にあるすべての値を含んでチェックし(12と15を含む)、Ageが設定した範囲の間にあるインデックスに対してtrueを返すようになりました。

block["Age"].between(12, 15, inclusive = True

を出力します。

その結果、インデックス1と3については、値が12から15の範囲を超えているため、Falseを返します。

0     True
1    False
2     True
3    False
4     True
5     True
6     True
Name: Age, dtype: bool

2. Python between()関数とカテゴリ変数

では、文字列やカテゴリカルデータに対してどのような結果が得られるか見てみましょう。

Pandasのbetween()関数に文字列や数値以外の変数を渡すと、渡されたデータと開始値と終了値を比較し、開始値と終了値のどちらかに一致する場合にTrueを返します。

例えば、以下の様になります。

block["NAME"].between("John", "Joseph", inclusive = True)  

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

結果、2つの値のみがTrueとして返されます。

0     True
1    False
2    False
3     True
4    False
5    False
6    False
Name: NAME, dtype: bool

3. between()関数で取得した値を表示する

この例では、Pandasのbetween()関数を使って、12と15の間にあるデータを表示してみます。

例えば、以下の様になります。

btwn = block["Age"].between(12, 15, inclusive = False
block[btwn]

結果は以下の通りです。

inclusive を False にしているので、12 と 15 の間にある値のうち、12 と 15 自体を除いた値をチェックします。

そのため、13,14,15を出力としてプッシュします。

     Roll-num   Age NAME
2   30  13  Rheana
4   50  14  Amanti
5   60  13  Alexa

まとめ

ここまでで、このトピックは終了です。

何か疑問があれば、お気軽にコメントください。

Pythonに関連するこのような記事のために、お楽しみに!それまでは、幸せな学習!!。

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