パンダ: パーセンテージを使用してピボットテーブルを作成する方法


次の構文を使用して、特定の列の合計のパーセンテージを表示する列をパンダのピボット テーブルに追加できます。

 my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

この特定の構文は、 % Pointsという新しい列をmy_tableというピボット テーブルに追加し、 points列の合計値の割合を表示します。

次の例は、この構文を実際に使用する方法を示しています。

例: パーセンテージを使用して Pandas ピボットテーブルを作成する

さまざまなバスケットボール選手が獲得したポイント数を示す次のパンダ データフレームがあるとします。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', 'Forward', 'Forward',
                                'Guard', 'Guard', 'Forward', 'Forward'],
                   ' points ': [22, 30, 14, 15, 19, 30, 23, 20]})

#view DataFrame
print (df)

  team position points
0 A Guard 22
1A Guard 30
2 A Forward 14
3 A Forward 15
4 B Guard 19
5 B Guard 30
6 B Forward 23
7 B Forward 20

pivot_table()関数を使用して、チームとポジションごとのポイントの合計を表示するピボット テーブルを作成できます。

 #create pivot table to calculate sum of points by team and position
my_table = pd. pivot_table (df, index=[' team ', ' position '], aggfunc=' sum ')

#view pivot table
print (my_table)

               points
team position        
A Forward 29
     Guard 52
B Forward 43
     Guard 49

結果から次のことがわかります。

  • チームAの攻撃陣は合計29得点を獲得した。
  • チームAのガードは合計52得点を獲得した。
  • チームBのアタッカーたちは合計43得点を獲得した。
  • チームBのガードは合計49得点を獲得した。

次に、次の構文を使用して、各行の合計ポイントの割合を表示する% ポイントという新しい列を追加します。

 #add column that displays points as a percentage of total points
my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

#view updated pivot table
print (my_table)

               points % points
team position                   
A Forward 29 16.763006
     Guard 52 30.057803
B Forward 43 24.855491
     Guard 49 28.323699

新しい% ポイント列には、ポイント値が合計ポイントの割合として表示されるようになりました。

また、 round()関数を使用して、パーセンテージ値を特定の小数点以下の桁数に四捨五入できることにも注意してください。

 #add column that displays points as a percentage of total points (rounded)
my_table[' % points '] = round ((my_table[' points ']/my_table[' points ']. sum ())* 100 , 2 )

#view updated pivot table
print (my_table)

               points % points
team position                  
A Forward 29 16.76
     Guard 52 30.06
B Forward 43 24.86
     Guard 49 28.32

パーセント値は小数点第 2 位に四捨五入されるようになりました。

: pandas pivot_table()関数の完全なドキュメントはここで見つけることができます。

追加リソース

次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。

パンダ: ピボット テーブルにフィルターを追加する方法
Pandas: 列の値でピボットテーブルを並べ替える方法
Pandas: 値の合計を含むピボット テーブルを作成する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です