1. データのグループ化へのイントロ
データのグループ化の原則
日常生活では、よく物をある基準でグループ分けしますよね。本は本、野菜は野菜、人は人 (つまり、そんな感じ)。プログラミングでも同じ仕組みです。 データのグループ化は、大量のデータを小さい部分に分けて、より簡単に管理できるようにし、その後分析を行う助けとなります。
pandasでは、この目的のためにgroupby
メソッドが使われます。このメソッドを使うことで、データをグループに分け、
各グループでさまざまな操作を行えるようになります。たとえば、店舗の部門ごとに販売をグループ化し、それぞれの部門の総売上を計算することができます。
以下はその例です:
import pandas as pd
# 売上に関するデータを持つDataFrameを作成
data = {'部門': ['食品', '技術', '食品', '本', '技術'],
'売上': [100, 200, 150, 50, 300]}
df = pd.DataFrame(data)
# 部門ごとにデータをグループ化し、総売上を計算
グループ = df.groupby('部門')['売上'].sum()
print(グループ)
グループ化の応用例
グループ化は、異なるカテゴリ間でデータを比較する必要がある場合に特に便利です。たとえば、HR部門で 各部署の平均給与を知りたい場合や、マーケティング担当者として各製品の月次販売数を知りたい場合などです。 pandasのグループ化機能を活用すれば、こういったタスクが大幅に簡単になります。
2. 集計関数の計算
集計関数のイントロ
集計関数とは、データのグループに適用され、一つの値を返す特別な関数です。
最も一般的なものには、sum
(合計)、mean
(平均値)、count
(要素の数)があります。
これらは、大量の情報をよりシンプルでわかりやすい指標にまとめるのに役立ちます。
集計関数を使う
前の例で合計を計算する方法を見てきました。次に、各部門の平均値と販売数を計算する方法を見てみましょう。
# 部門ごとの平均売上を計算
平均 = df.groupby('部門')['売上'].mean()
print(平均)
# 各部門の販売数を計算
販売数 = df.groupby('部門')['売上'].count()
print(販売数)
集計計算の例
ユーザーのサイト訪問データがあり、曜日ごとに平均して何人が訪問しているか知りたいとしましょう。
これはグループ化とmean
関数を使用する典型的なタスクです。
data = {'曜日': ['月', '火', '水', '木', '金', '水', '火'],
'訪問数': [120, 150, 170, 160, 180, 300, 220]}
df = pd.DataFrame(data)
# 曜日ごとの平均訪問数を計算
平均訪問数 = df.groupby('曜日')['訪問数'].mean()
print(平均訪問数)
3. 実践課題
データのグループ化と集計の課題
販売データの配列があるとします。課題:カテゴリごとにデータをグループ化し、総販売数、平均注文額、各カテゴリの注文数を計算。 これにより、どのカテゴリが最も利益をもたらしているか、どのカテゴリにビジネスチャンスがあるかを理解できます。
data = {
'カテゴリ': ['電子機器', '服', '電子機器', '本', '本', '服'],
'注文額': [250, 100, 150, 200, 500, 300]
}
df = pd.DataFrame(data)
# カテゴリごとの総販売を計算
総販売 = df.groupby('カテゴリ')['注文額'].sum()
print(総販売)
# カテゴリごとの平均注文額を計算
平均注文額 = df.groupby('カテゴリ')['注文額'].mean()
print(平均注文額)
# カテゴリごとの注文数を計算
注文数 = df.groupby('カテゴリ')['注文額'].count()
print(注文数)
グループ化結果の議論とデータ分析
データのグループ化と集計の課題の後、得られたデータを分析するのは非常に有益です。 例えば、「本」カテゴリが小さいけれど高額な注文のおかげで最も高い販売額を持っていることに気づくかもしれません。 また、「服」カテゴリは最も多くの注文がありますが、平均注文額は「電子機器」より低いことを示すかもしれません。
こうした分析は、例えば注文数が多いが平均注文額が低いカテゴリに焦点を当て、 平均注文額を増やすためのビジネス上の意思決定を行うのに役立ちます。
4. エラーと注意点
グループ化を使う際によくあるエラーの一つは、集計関数を使用する際に丸括弧を忘れることです。
例えば、df.groupby('カテゴリ').sum()
ではなく、
df.groupby('カテゴリ')['注文額'].sum()
と書く必要があります。
また、データ欠損が原因で問題が発生する場合があります。
Pandasには、fillna()
のような欠損値を指定された値で置き換える便利なメソッドがあります。
それ以外に、データ型が正しいかどうかを確認してください。 時には、数値列が文字列として読み込まれることがあり、その場合、集計しようとするとエラーが発生します。
pandasやグループ化の方法をさらに深く理解したい場合は、 pandasの公式ドキュメント を参照して、より詳細な解説と例を学びましょう。
GO TO FULL VERSION