Pandasのdescribe関数の概要
Pandasのdescribe
関数は、データフレームの各列に対して基本的な統計的記述を提供します。これには、平均、中央値、最小値、最大値、標準偏差などが含まれます。この関数は、データ分析の初期段階でデータセットの概要を把握するのに非常に便利です。
以下に、describe
関数の基本的な使用方法を示します。
import pandas as pd
# データフレームを作成
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [2.0, 5.0, 8.0, 1.0, 2.0],
'C': ['a', 'b', 'c', 'd', 'e']
})
# describe関数を適用
df.describe()
このコードを実行すると、数値型の列(この場合は’A’と’B’)に対する統計的記述が出力されます。出力は新たなデータフレームとして提供され、各行が異なる統計量(count, mean, std, min, 25%, 50%, 75%, max)を表します。
- なお、デフォルトでは
describe
関数は数値型の列のみを考慮しますが、オプションを指定することでカテゴリカルデータや日付/時間データに対する記述も得ることが可能です。具体的な方法は、Pandasの公式ドキュメンテーションを参照してください。
NaN値のカウント方法
Pandasでは、欠損値(NaN)のカウントは非常に簡単に行うことができます。isna
関数とsum
関数を組み合わせることで、各列に含まれるNaN値の数を計算することができます。
以下に、その使用方法を示します。
import pandas as pd
import numpy as np
# データフレームを作成
df = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 5.0, 8.0, 1.0, 2.0],
'C': ['a', 'b', np.nan, 'd', 'e']
})
# NaN値のカウント
df.isna().sum()
このコードを実行すると、各列に含まれるNaN値の数が出力されます。具体的には、’A’列には1つ、’B’列には1つ、’C’列には1つのNaN値が含まれていることがわかります。
なお、isna
関数はデータフレームの各要素がNaN値であるかどうかを判定し、その結果を同じ形状のブール値(True/False)のデータフレームとして返します。そして、sum
関数はブール値のデータフレームに対して適用され、Trueの数(つまりNaN値の数)をカウントします。
この方法を用いると、大規模なデータセットでも効率的にNaN値の数をカウントすることが可能です。ただし、NaN値の存在はデータ分析において重要な情報を持つため、その原因や扱い方については十分に考慮する必要があります。具体的な方法は、次の小見出しで詳しく説明します。
describe関数とNaN値の関係
Pandasのdescribe
関数は、NaN値を無視して統計的記述を計算します。つまり、describe
関数が返すcount
は、NaN値を除いたデータの数を表します。
以下に、その挙動を示します。
import pandas as pd
import numpy as np
# データフレームを作成
df = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5],
'B': [np.nan, 5.0, 8.0, 1.0, 2.0],
'C': ['a', 'b', np.nan, 'd', 'e']
})
# describe関数を適用
df.describe()
このコードを実行すると、’A’列と’B’列のcount
はそれぞれ4と4となります。これは、各列に1つのNaN値が含まれているためです。
このように、describe
関数はデータの欠損を自動的に処理しますが、その結果はNaN値の存在によって影響を受けることに注意が必要です。例えば、平均値はNaN値を除いたデータのみで計算されるため、NaN値の数が多い場合、その結果は全体のデータを代表するものではないかもしれません。
したがって、describe
関数を使用する前に、データセットのNaN値を適切に処理することが重要です。具体的な方法は、次の小見出しで詳しく説明します。
実用的な例
それでは、Pandasのdescribe
関数とNaN値の取り扱いについての実用的な例を見てみましょう。
import pandas as pd
import numpy as np
# データフレームを作成
df = pd.DataFrame({
'A': [1, 2, np.nan, 4, 5, np.nan, 7, 8, 9, 10],
'B': [np.nan, 5.0, 8.0, 1.0, 2.0, np.nan, 7.0, 8.0, 9.0, 10.0],
'C': ['a', 'b', np.nan, 'd', 'e', 'f', 'g', 'h', 'i', 'j']
})
# NaN値のカウント
print(df.isna().sum())
# describe関数を適用
print(df.describe())
このコードを実行すると、各列に含まれるNaN値の数と、数値型の列に対する統計的記述が出力されます。具体的には、’A’列と’B’列のcount
はそれぞれ8と8となります。これは、各列に2つのNaN値が含まれているためです。
この例からわかるように、describe
関数とNaN値の取り扱いは、データ分析において重要なステップです。データの欠損を適切に理解し、それに基づいてデータの前処理を行うことで、より正確な分析結果を得ることが可能になります。