【Pandasデータ探索】describe()でDataFrameの各列をサクッと要約統計量で把握!📊


 

データ分析の最初のステップとして、データセット全体の概要を素早く掴むことは非常に重要です。数値データがどのような範囲に分布しているか、中心傾向はどこにあるか、バラつきはどのくらいか、といった情報を手軽に知りたいですよね。

Pandasの**describe()メソッドは、DataFrameの各列(特に数値データ)に対して、平均、標準偏差、最小値、最大値、四分位数といった主要な要約統計量**をまとめて表示してくれる非常に便利なツールです。これにより、データの特徴や潜在的な問題(外れ値、欠損値の傾向など)を素早く発見できます。この記事では、describe()の基本的な使い方から、カテゴリデータへの適用、そして知っておくと便利な応用例まで、短いサンプルコードと丁寧な解説を交えてご紹介します。


 

describe()メソッドとは?なぜデータ探索に役立つのか?

 

describe()メソッドは、DataFrameまたはSeriesに対して呼び出すことで、そのデータセットの統計的な概要をまとめたDataFrameを返します。

describe()がデータ探索に役立つ理由は以下の通りです。

  • 素早い概要把握: 数値データの分布、中心傾向、散らばり具合を一度に確認できます。

  • データ品質チェック: 最小値や最大値を見ることで、入力ミスや異常な値(外れ値)がないかを発見する手がかりになります。

  • 欠損値の傾向: count(非欠損値の数)を見ることで、欠損値の多い列を特定できます。

  • データ型の確認: デフォルトでは数値データのみが対象ですが、オプションで他のデータ型も含めることで、データ型に応じた要約を確認できます。


 

describe()メソッドの基本的な使い方

 

describe()メソッドは、DataFrameまたはSeriesの後に.describe()とつけるだけで利用できます。

 

DataFrameの数値列の要約統計量を取得

 

デフォルトでは、DataFrame内の数値型(intfloatなど)の列に対して要約統計量を算出します。

Python
 
import pandas as pd
import numpy as np

# サンプルDataFrameの作成
df = pd.DataFrame({
    '売上': [100, 150, 120, 80, 200,  np.nan, 130],
    '顧客数': [10, 15, 12, 8, 20, 13, 11],
    '商品カテゴリ': ['A', 'B', 'A', 'C', 'B', 'A', 'C']
})
print("オリジナルDataFrame:\n", df)

# DataFrameの要約統計量を取得
summary_stats = df.describe()
print("\nDataFrameの要約統計量:\n", summary_stats)

解説:

df.describe()を実行すると、以下のような統計量が計算されます。

  • count: 非欠損値の数。

  • mean: 平均値。

  • std: 標準偏差(データのばらつき度合い)。

  • min: 最小値。

  • 25%: 第1四分位数(25パーセンタイル値)。データを小さい方から並べたときに25%の位置にある値。

  • 50%: 第2四分位数(50パーセンタイル値、中央値)。データを小さい方から並べたときに中央に位置する値。

  • 75%: 第3四分位数(75パーセンタイル値)。データを小さい方から並べたときに75%の位置にある値。

  • max: 最大値。

例えば、'売上'列のcount6.0であることから、1つの欠損値(NaN)があることがわかります。

 

Seriesの要約統計量を取得

 

Seriesに対しても同様にdescribe()を適用できます。

Python
 
# '顧客数' Seriesの要約統計量
customer_summary = df['顧客数'].describe()
print("\n'顧客数' Seriesの要約統計量:\n", customer_summary)

 

describe()の応用的な使い方

 

describe()は、数値データだけでなく、カテゴリデータや文字列データに対しても適用できます。

 

カテゴリデータ(object型、category型)を含める: include='object' または include='all'

 

文字列やカテゴリ型の列の要約統計量を見たい場合は、include引数を指定します。

Python
 
# カテゴリデータを含めた要約統計量
# object型(文字列)の列も対象になる
summary_obj = df.describe(include='object')
print("\n文字列列を含めた要約統計量:\n", summary_obj)

# 全ての型の列を含めた要約統計量
summary_all = df.describe(include='all')
print("\n全ての型の列を含めた要約統計量:\n", summary_all)

解説:

  • include='object': Pythonのobject型(主に文字列)の列を対象とします。

    • count: 非欠損値の数。

    • unique: ユニークな値の数。

    • top: 最も頻繁に出現する値(最頻値)。

    • freq: topの値の出現頻度。

  • include='all': DataFrame内の全ての型の列を対象とします。数値列には数値の統計量が、非数値列には非数値の統計量が表示され、該当しない統計量にはNaNが表示されます。

 

特定のデータ型のみを含める・除外する: include, exclude引数

 

特定のデータ型だけを対象にしたり、除外したりすることもできます。

Python
 
# float型のみを対象にする
summary_float = df.describe(include=[np.float64])
print("\nfloat型のみの要約統計量:\n", summary_float)

# 数値型を除外する (文字列など)
summary_exclude_num = df.describe(exclude=[np.number])
print("\n数値型を除外した要約統計量:\n", summary_exclude_num)

解説:

includeやexcludeには、NumPyのデータ型(例: np.float64, np.int64, np.numberなど)や、文字列(’object’, ‘category’)のリストを指定できます。


 

describe()の注意点と活用ヒント

 

  • 欠損値の扱い: count以外の統計量(mean, stdなど)は、デフォルトで欠損値(NaN)を無視して計算されます。欠損値の有無やその割合はcountの値を確認することで把握できます。

  • データの型: describe()はデータの型に応じて表示する統計量が自動的に変わります。意図しない結果が出る場合は、列のデータ型(df.dtypesで確認)が適切かを確認しましょう。

  • 可視化との組み合わせ: describe()で得られた統計量を元に、ヒストグラムや箱ひげ図などのグラフを作成することで、データの分布をより深く理解できます。

  • 外れ値の検出: minmax、そして四分位数(25%, 50%, 75%)の値を比較することで、データに極端な外れ値がないか、分布が歪んでいないかといった仮説を立てるのに役立ちます。


 

まとめ

 

Pandasのdescribe()メソッドは、DataFrameやSeriesの各列に対して主要な要約統計量を一括で表示してくれる、データ探索の強力なスターターツールです。数値データの平均、標準偏差、四分位数、そしてカテゴリデータのユニーク数、最頻値などを瞬時に把握することで、データセットの全体像を素早く掴み、潜在的な課題や興味深いパターンを発見する手助けになります。includeexclude引数を活用して、分析目的に応じた適切な要約を取得し、効率的なデータ分析の第一歩を踏み出しましょう!