Pandasで累積数を計算する方法


次のメソッドを使用して、pandas DataFrame の累積数を計算できます。

方法1:グループごとの累計集計

 df[' cum_count '] = df. groupby (' col1 '). cumcount ()

方法 2: 複数のグループによる累積アカウント

 df[' cum_count '] = df. groupby ([' col1 ', ' col2 ']). cumcount ()

次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'G', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [14, 22, 25, 34, 30, 12, 10, 18]})

#view DataFrame
print (df)

  team position points
0 AG 14
1 AG 22
2 AG 25
3AF 34
4 BG 30
5 BG 12
6 BF 10
7 BF 18

例 1: Pandas でのグループごとの累計カウント

次の構文を使用して、DataFrame 内の各チームの累積数を表示する、 team_cum_countという新しい列を作成できます。

 #calculate cumulative count by team
df[' team_cum_count '] = df. groupby (' team '). cumcount ()

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 3
4 BG 30 0
5 BG 12 1
6 BF 10 2
7 BF 18 3

Team_cum_countという新しい列には、値 0 から始まる各チームの累積カウントが含まれます。

カウントを 1 から開始したい場合は、行の末尾に 1 を追加するだけです。

 #calculate cumulative count (starting at 1) by team
df[' team_cum_count '] = df. groupby (' team '). cumcount () + 1

#view updated DataFrame
print (df)

  team position points team_cum_count
0 AG 14 1
1 AG 22 2
2 AG 25 3
3 AF 34 4
4 BG 30 1
5 BG 12 2
6 BF 10 3
7 BF 18 4

Team_cum_countという新しい列には、値 1 から始まる各チームの累積数が含まれます。

例 2: Pandas のグループごとの累積数を計算する

次の構文を使用して、DataFrame 内の各チームポジションの累積数を表示する、 team_pos_cum_countという新しい列を作成できます。

 #calculate cumulative count by team
df[' team_pos_cum_count '] = df. groupby ([' team ', ' position ']). cumcount () 

#view updated DataFrame
print (df)

  team position points team_pos_cum_count
0 AG 14 0
1 AG 22 1
2 AG 25 2
3 AF 34 0
4 BG 30 0
5 BG 12 1
6 BF 10 0
7 BF 18 1

team_pos_cum_countという新しい列には、値 0 から始まる各チームポジションの累積数が含まれます。

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

追加リソース

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

Pandas で特定の列を合計する方法
Pandas で条件に基づいて列を合計する方法
パンダで逆累積和を計算する方法

コメントを追加する

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