Python pandasで指定列に対して、上位N個もしくは下位N個の行を抽出する

 ソートせずに、メソッド「df.nlargest」、「df.nsmallest」を使うことで簡単にできます。
具体例で示します。下図のような506行×14列のデータがあります。この右端の列「PRICE」の上位25個、下位25個のデータ行をそれぞれ抽出します。

まずは、上位25個の行データを抽出する場合です。

import pandas as pd

# csvファイルを読み込む
df = pd.read_csv('boston_dataset.csv')
df

# 指定列に対して、上位からN個の行を抽出する
target_col = 'PRICE'
N = 25
top_df = df.nlargest(N, target_col)
top_df

下図は、上記の実行結果です。右端列の「PRICE」が大きい順に並んでいて、25行のデータ行が抽出されました。

下位25個のデータ行を抽出するコードは下記です。

# 指定列に対して、下位からN個の行を抽出する
btm_df = df.nsmallest(N, target_col)
btm_df

下図は、上記コードの実行結果です。右端列「PRICE」が小さい順から並んでいて、行データが25行並んでいる様子です。

以上

<広告>