pandasのDataFrameでgroupbyを使って項目ごとの合計値を比較する方法。
購買の記録などを分析するときに購買されたモノ別のデータを比較したい時があると思います。
今回は、モノ別の売り上げ個数合計値を比較します。
まずはデータフレームを作成。 今回はフルーツの名前と、それぞれの売れた個数を表示させてます。
import pandas as pd import numpy as np df = pd.DataFrame(np.array([['apple','orange','grape','apple','peach','apple','peach','orange','grape','apple'], [11,23,12,13,47,23,53,36,70,93]]).T,columns = ['fruits','numbers'])
数字のカラムが文字列として認識されてしまうので、整数型に変換。
df['numbers'] = df['numbers'].astype(np.int64)
これでデータフレームはこんな感じです。
df
>output
次にgroupbyを使ってfruits名によるグループ分けを行い、それぞれのグループで個数合計の計算を行います。
sum()で合計計算、sort_values(by='numbers', ascending=False)では個数合計が大きいフルーツから順に表示させています。
ascendingは昇順という意味の英単語。
最後にindexをリセットします。
df = df[['fruits', 'numbers']].groupby(['fruits'], as_index=False).sum().sort_values(by='numbers', ascending=False).reset_index() df
>output
リセットの際にindexという余計なカラムができたので消しておきます。
これで、フルーツごとの合計個数が計算できました。
df = df.drop('index', axis =1) df
>output
#python #dataframe #pandas #groupby