Pandasのdescribeメソッドとは

Pandasのdescribeメソッドは、データフレームの各列に対して基本的な統計量を計算し、それらをまとめて表示するための便利なメソッドです。具体的には、以下の統計量が計算されます。

  • count: 非欠損値の数
  • mean: 平均値
  • std: 標準偏差
  • min: 最小値
  • 25%: 第一四分位数
  • 50%: 中央値(第二四分位数)
  • 75%: 第三四分位数
  • max: 最大値

これらの統計量は、データの分布や傾向を把握するための基本的な情報を提供します。特に、四分位数はデータの分布を理解する上で非常に有用です。

以下に、Pandasのdescribeメソッドの基本的な使用方法を示します。

import pandas as pd

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [2, 3, 4, 5, 6],
    'C': [3, 4, 5, 6, 7]
})

# describeメソッドを使用
df.describe()

このコードを実行すると、データフレームの各列に対する基本的な統計量が計算され、結果が表示されます。これにより、データの全体像を簡単に把握することができます。ただし、describeメソッドはデフォルトで数値データの列のみを対象とします。文字列などの非数値データを含む列の統計量を計算するには、引数に適切なオプションを指定する必要があります。これについては後述します。

パーセンタイルとは

パーセンタイルは、統計学における位置尺度の一つで、データセットを100等分したときの各点を指します。具体的には、p パーセンタイルは、データセットの値のうち p% がその値以下となるような点を指します。

例えば、25パーセンタイル(第一四分位数)、50パーセンタイル(中央値または第二四分位数)、75パーセンタイル(第三四分位数)はよく使われるパーセンタイルです。これらは、データの分布を理解するための重要な指標となります。

  • 25パーセンタイルは、データの25%がこの値以下であることを示します。
  • 50パーセンタイルは、データの50%がこの値以下であることを示します。これはデータの中央値とも呼ばれます。
  • 75パーセンタイルは、データの75%がこの値以下であることを示します。

パーセンタイルは、データの分布、特にデータの散らばり具合や偏りを理解するのに役立ちます。また、外れ値の検出にも利用されます。たとえば、データが上位1%に入るための閾値を知りたい場合、99パーセンタイルを計算します。

パーセンタイルは、Pandasのdescribeメソッドでも計算されます。デフォルトでは、25%, 50%, 75%のパーセンタイルが計算されますが、これはカスタマイズ可能です。これについては後述します。

describeメソッドでパーセンタイルを計算する方法

Pandasのdescribeメソッドは、デフォルトで25%, 50%, 75%のパーセンタイルを計算します。しかし、これらのパーセンタイル以外の値を計算したい場合や、特定のパーセンタイルを計算したい場合には、describeメソッドのpercentiles引数を使用します。

percentiles引数には、0から1までの値を要素とするリストを指定します。このリストの各要素が、計算するパーセンタイルを表します。たとえば、10パーセンタイルと90パーセンタイルを計算するには、percentiles=[0.1, 0.9]と指定します。

以下に、describeメソッドのpercentiles引数を使用した例を示します。

import pandas as pd

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [2, 3, 4, 5, 6],
    'C': [3, 4, 5, 6, 7]
})

# describeメソッドで10パーセンタイルと90パーセンタイルを計算
df.describe(percentiles=[0.1, 0.9])

このコードを実行すると、データフレームの各列に対する10パーセンタイルと90パーセンタイルが計算され、結果が表示されます。これにより、データの分布の詳細をより深く理解することができます。

なお、percentiles引数に指定するリストの要素は昇順に並べる必要はありません。また、50パーセンタイル(中央値)は常に計算されますので、percentiles引数に0.5を含める必要はありません。ただし、含めても問題はありません。これらの点に注意しながら、describeメソッドを活用してデータ分析を進めてください。

カスタムパーセンタイルの計算

Pandasのdescribeメソッドを使用してカスタムパーセンタイルを計算する方法を説明します。describeメソッドのpercentiles引数を使用することで、任意のパーセンタイルを計算することが可能です。

以下に、10%, 20%, …, 90%のパーセンタイルを計算する例を示します。

import pandas as pd

# データフレームを作成
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': [2, 3, 4, 5, 6],
    'C': [3, 4, 5, 6, 7]
})

# describeメソッドで10%, 20%, ..., 90%のパーセンタイルを計算
df.describe(percentiles=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

このコードを実行すると、データフレームの各列に対する10%, 20%, …, 90%のパーセンタイルが計算され、結果が表示されます。これにより、データの分布の詳細をより深く理解することができます。

なお、percentiles引数に指定するリストの要素は昇順に並べる必要はありません。また、50パーセンタイル(中央値)は常に計算されますので、percentiles引数に0.5を含める必要はありません。ただし、含めても問題はありません。これらの点に注意しながら、describeメソッドを活用してデータ分析を進めてください。このように、Pandasのdescribeメソッドは非常に強力で、データ分析において重要なツールとなります。これを活用して、データの理解を深めていきましょう。

実践例

ここでは、Pandasのdescribeメソッドとpercentiles引数を使用してカスタムパーセンタイルを計算する実践的な例を示します。この例では、Irisデータセットを使用します。Irisデータセットは、アヤメの種類とその特徴(がく片と花びらの長さと幅)を記録したデータセットです。

import pandas as pd
from sklearn.datasets import load_iris

# Irisデータセットをロード
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)

# describeメソッドで10%, 30%, 50%, 70%, 90%のパーセンタイルを計算
result = df.describe(percentiles=[0.1, 0.3, 0.5, 0.7, 0.9])

print(result)

このコードを実行すると、Irisデータセットの各特徴に対する10%, 30%, 50%, 70%, 90%のパーセンタイルが計算され、結果が表示されます。これにより、各特徴の分布の詳細をより深く理解することができます。

このように、Pandasのdescribeメソッドとpercentiles引数を活用することで、データの理解を深め、より洞察に富んだデータ分析を行うことができます。これを活用して、あなたのデータ分析のスキルをさらに向上させてください。この記事がその一助となれば幸いです。それでは、Happy Data Analyzing! 🚀

投稿者 kitagawa

コメントを残す

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