「pandas データの中から上位3つ」
という検索キーワードでアクセスがありました。
pandasのDataFrameから、いずれかのフィールド(列)のデータが上位3件に該当するレコード(行)を抽出するには、どのようなコードを書けばいいのか探していた方による検索でしょうか。
pandasのDataFrameから上位3件を抽出するサンプル
この記事では、シンプルな例をお伝えしておきます。
sample_table = {
'name':['太郎', '次郎', '三郎', '四郎', '五郎',],
'score':[100, 200, 300, 400, 500,],
}
df = pd.DataFrame(data=sample_table)
上記のコードを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件を抽出する