Home » Python » pandasの使い方 » pandasのDataFrameから上位n件を抽出する

pandasのDataFrameから上位n件を抽出する

動作検証バージョン:64bit Windows 10 Pro + Python 3.8.3 + pandas 1.1.0

「pandas データの中から上位3つ」
という検索キーワードでアクセスがありました。

pandasのDataFrameから、いずれかのフィールド(列)のデータが上位3件に該当するレコード(行)を抽出するには、どのようなコードを書けばいいのか探していた方による検索でしょうか。

[スポンサードリンク]

pandasのDataFrameから上位3件を抽出するサンプル

この記事では、シンプルな例をお伝えしておきます。

import pandas as pd

sample_table = {
    'name':['太郎', '次郎', '三郎', '四郎', '五郎',],
    'score':[100, 200, 300, 400, 500,],
}
df = pd.DataFrame(data=sample_table)

df.sort_values(by='score', ascending=False).head(3)

上記のコードをJupyter NotebookやJupyter Labなどで実行すると、「score」の上位3件に該当する行が、以下のように出力されます。

	name	score
4	五郎	500
3	四郎	400
2	三郎	300

サンプルで行っている処理について

ここではコード内で5人分の名前と得点だけのデータを用意しておいて、

sample_table = {
    'name':['太郎', '次郎', '三郎', '四郎', '五郎',],
    'score':[100, 200, 300, 400, 500,],
}

DataFrameを作成しています。

df = pd.DataFrame(data=sample_table)

DataFrame.sort_valuesメソッドで並べ替え

得点の上位3件を抽出したいので、DataFrame.sort_valuesメソッドを使って、得点(score)の降順で並べ替えを、まず行います。

df.sort_values(by='score', ascending=False).head(3)

得点の上位ですから、降順(大→小)で並ぶように引数ascendingにFalseを指定しています。

「.head(3)」のない「df.sort_values(by='score', ascending=False)」を実行してみれば、

	name	score
4	五郎	500
3	四郎	400
2	三郎	300
1	次郎	200
0	太郎	100

と出力され、scoreの降順で並べ替えられている様子を確認できます。

DataFrame.headメソッドで先頭n行を取得

上述のような指定で並べ替えを行ってから、DataFrame.headメソッドの引数に「3」を指定することで、

df.sort_values(by='score', ascending=False).head(3)

上位3件を取得しています。

	name	score
4	五郎	500
3	四郎	400
2	三郎	300

最終更新日時:2021-10-19 12:40

[スポンサードリンク]

Home » Python » pandasの使い方 » pandasのDataFrameから上位n件を抽出する

「pandasの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.