Pandas: 列の値でピボットテーブルを並べ替える方法
次の基本構文を使用して、列の値に基づいてパンダ ピボット テーブルを並べ替えることができます。
my_pivot_table. sort_values (by=[' some_column '], ascending= False )
この特定の例では、 my_pivot_tableというピボット テーブルの値をsome_columnの値に基づいて降順に並べ替えます。
次の例は、この構文を実際に使用する方法を示しています。
例: Pandas ピボット テーブルを列の値で並べ替える
さまざまなバスケットボール選手に関する情報を含む次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], ' points ': [4, 4, 2, 8, 9, 5, 5, 7, 8, 8, 4, 3], ' assists ': [2, 2, 5, 5, 4, 7, 5, 3, 9, 8, 4, 4]}) #view DataFrame print (df) team points assists 0 to 4 2 1 to 4 2 2 to 2 5 3 to 8 5 4 B 9 4 5 B 5 7 6 B 5 5 7 B 7 3 8 C 8 9 9 C 8 8 10 C 4 4 11 C 3 4
次のコードを使用して、各チームのポイント列とアシスト列の値の合計を表示するピボット テーブルをパンダで作成できます。
#create pivot table
df_pivot = df. pivot_table (index=[' team '], values=[' points ', ' assists '], aggfunc=' sum ')
#view pivot table
print (df_pivot)
assist points
team
At 14 18
B 19 26
C 25 23
デフォルトでは、pandas はインデックス列 (チーム列) の値に基づいてピボット テーブルの行をアルファベット順に並べ替えます。
ただし、 sort_values()関数を使用すると、ドット列の値に基づいてピボット テーブルの行を並べ替えることができます。
#sort pivot table by value in 'points' column in descending order
sorted_df_pivot = df_pivot. sort_values (by=[' points '], ascending= False )
#view sorted pivot table
print (sorted_df_pivot)
assist points
team
B 19 26
C 25 23
At 14 18
ピボットテーブルの行が、 [ポイント]列の値に基づいて並べ替えられることに注意してください。
ascending=False引数を省略すると、行はドット列の値によって昇順に並べ替えられることに注意してください。
#sort pivot table by value in 'points' column in ascending order
sorted_df_pivot = df_pivot. sort_values (by=[' points '])
#view sorted pivot table
print (sorted_df_pivot)
assist points
team
At 14 18
C 25 23
B 19 26
ピボットテーブルの行がドット列の値によって昇順 (最小から最大) に並べ替えられることに注意してください。
注 #1: sort_values()関数のby引数に複数の値を渡すことで、ピボット テーブルの複数の列で並べ替えることもできます。
注 #2 : pandas pivot_table()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
パンダ: DataFrame を長いものから広いものに再形成する方法
パンダ: DataFrame を幅広から長さに変更する方法
パンダ: 複数の列をグループ化して集計する方法