Python 数値型の列について、指定区間内にある値の行を全て抽出する「pandas」

'22/04/14更新:欠損値のある行を抽出したい場合を追記
 指定区間内は、次のようにして抽出できます。orにしたい場合は、|(半角縦棒)です。

# 数値型の指定列の各要素について、指定区間にある値の行を全て抽出する
df2 = df[(df['PRICE'] >= 17) & (df['PRICE'] <= 25)]

# 指定した列に対して、指定した値に等しい行を抽出したい場合
df2 = df[df['PRICE'] == 20]

# 指定した列に対して、欠損値のある行を抽出したい場合
df2 = df[df['PRICE'].isnull()]

 本記事では実例の雛形コードを載せました。例えば、機械学習でお馴染みのボストンデータセットの506個のデータ(Python scikit-learn付属のボストン市の住宅価格データ(Boston house prices dataset)をcsvファイル化する - PythonとVBAで世の中を便利にする)の14項目のヒストグラムは下図のようになります。

f:id:HK29:20201026000726p:plain

ここで、冒頭のようなコードで「PRICE」の値が17~25の範囲であるデータを抽出すると下図のようになります。

f:id:HK29:20201026000814p:plain

■本プログラム

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

def main():
    df = pd.read_csv(file_path) # csvファイルを読み込み
    print(df)
    print(df.describe()) # 基本統計量を表示
    df.hist() # ヒストグラムを作成
    plt.tight_layout() # グラフ表示を整頓するおまじない
    plt.show() # グラフ表示
    
    # 数値型の指定列の各要素について、指定区間にある値の行を全て抽出する
    df_extract = df[(df['PRICE'] >= 17) & (df['PRICE'] <= 25)]
    print(df_extract)
    df_extract.hist()
    plt.tight_layout()
    plt.show()
    
    
if __name__ == '__main__':
    file_path = 'boston_XYdata.csv'

    main()
    print("finished")

以上

<広告>