Python – Pandasデータフレームをグループ化し、グループサイズで昇順に並べ替える方法
Pandasデータフレームをグループ化するには groupby() を使用します。グループ化されたデータフレームを昇順に並べ替えるには sort_values() を使い、各グループのサイズ(件数)を取得するには size() メソッドを使用します。
昇順でソートする場合は、sort_values() に対して次のように指定します。
ascending=True
データフレームの作成
まず、サンプル用のPandasデータフレームを作成します。
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
"Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
}
)
グループ化して昇順にソートする
次に、「Reg_Price」列を基準にグループ化し、その結果を昇順に並べ替えます。
dataFrame.groupby('Reg_Price').size().sort_values(ascending=True)
完全なコード例
以下に、一連の処理をまとめたコード全体を示します。
import pandas as pd
# Reg_Price列を含むデータフレームを作成
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
"Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
}
)
print("DataFrame...\n", dataFrame)
# Reg_Price列でグループ化し、昇順にソート
print("\n昇順にソートした結果...")
print(dataFrame.groupby('Reg_Price').size().sort_values(ascending=True))
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
Car Reg_Price
0 BMW 1000
1 Lexus 1400
2 Audi 1000
3 Mercedes 900
4 Jaguar 1700
5 Bentley 900
昇順にソートした結果...
Reg_Price
1400 1
1700 1
900 2
1000 2
dtype: int64
結果の読み方
出力の左側にある「Reg_Price」の値はグループ化のキー(登録価格)を、右側の数値はその価格に該当する車の台数、すなわちグループサイズを表しています。昇順ソートにより、台数の少ないグループから順に表示され、同じ台数の場合はキーの値の順に並びます。このように groupby() → size() → sort_values() の流れを組み合わせることで、カテゴリ別の件数を簡単にランキング形式で確認できます。
-
【Python】Name列を基準にDataFrameを降順に並べ替えるプログラムの作成方法
はじめにpandasのDataFrameを特定の列(ここでは「Name」列)を基準に降順で並べ替える方法を解説します。データ分析では、名前のアルファベット順や数値の大小に応じてデータを整理したい場面がよくあります。そんなときに活躍するのが sort_values() メソッドです。入力データ以下のサンプルDataFrameを想定します。 Id Name 0 1 Adam 1 2 Michael 2 3 David 3 4 Jack 4 5 Peter出力結果Name列を基準に降順でソートすると、次のようになります。 Id
-
Pythonで連結リストを昇順にソートするプログラムの書き方
問題の概要 連結リスト(リンクリスト)が与えられたとき、そのリストを昇順に並べ替えることを考えます。 例えば、入力が [5, 8, 4, 1, 5, 6, 3] の場合、出力は [1, 3, 4, 5, 5, 6, 8] となります。 解決のアプローチ この問題は、以下の手順で解くことができます。 新しい空のリスト values を用意します。 head に先頭ノードへの参照を保存しておきます。 node が null でない間、次の処理を繰り返します。 node の値を values の末尾に追加します。 node を次のノードに進めます。 values を昇順にソートします。 v