Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】Pandasのデータフレームをグループ化し、グループサイズで降順にソートする方法

Pandasでグループ化したデータフレームを降順にソートする方法

Pandasのデータフレームをグループ化するには、groupby()メソッドを使用します。さらに、グループ化された結果を降順に並べ替えたい場合は、sort_values()と組み合わせます。各グループのサイズ(件数)を取得するには、size()メソッドを使います。

降順ソートの基本構文

降順でソートするには、sort_values()に以下の引数を指定します。

ascending=False

手順1:データフレームを作成する

まず、サンプルとなるPandasのデータフレームを作成します。

dataFrame = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
      "Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
   }
)

手順2:列でグループ化して降順にソートする

次に、「Reg_Price」列を基準にグループ化し、そのグループサイズを降順で並べ替えます。

dataFrame.groupby('Reg_Price').size().sort_values(ascending=False)

完全なサンプルコード

以下が実行可能なコード全体です。

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("\nSorted in Descending order...")
print(dataFrame.groupby('Reg_Price').size().sort_values(ascending=False))

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame...
        Car Reg_Price
0       BMW      1000
1     Lexus      1400
2      Audi      1000
3  Mercedes       900
4    Jaguar      1700
5   Bentley       900

Sorted in Descending order...
Reg_Price
1000    2
900     2
1700    1
1400    1
dtype: int64

出力結果の解説

この結果から、登録価格「1000」と「900」はそれぞれ2台ずつ存在し、「1700」と「1400」は1台ずつであることがわかります。sort_values(ascending=False)を指定することで、出現回数の多いグループから順に表示されています。

補足:value_counts()を使った簡潔な書き方

同様の処理は、value_counts()メソッドを使うともっと簡潔に書けます。デフォルトで降順にソートされるため便利です。

dataFrame['Reg_Price'].value_counts()

用途に応じて、groupby().size().sort_values()value_counts()を使い分けるとよいでしょう。

  1. 【Python入門】リストの要素を降順に並べ替える方法をわかりやすく解説

    Pythonでは、リスト(配列)の要素を降順に並べ替えたい場合、sort()メソッドを使い、引数reverseにTrueを指定するだけで簡単に実現できます。 サンプルコード my_list = [44, 56, 42, 31, 11, 23, 78, 89, 9, 0] print(元のリスト:) print(my_list) my_list.sort(reverse = True) print(降順にソートした後のリスト:) print(my_list) 実行結果 元のリスト: [44, 56, 42, 31, 11, 23, 78, 89, 9, 0] 降順にソートした後のリスト: [89

  2. 【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