非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】PandasでDataFrameの統計量を取得する方法まとめ

   

PythonのPandasライブラリを使うとデータの分析が簡単にできます。特にdescribeやmean、stdといったメソッドを活用すればデータの基本的な統計量を素早く確認可能です。この記事ではDataFrameの統計量を取得するための便利なメソッドを具体例を交えて説明します。

統計量を一括で確認できるdescribeメソッド

describeメソッドを使うとDataFrame全体の基本的な統計量を一括で確認できます。対象となるデータ型(数値データやカテゴリデータ)に応じて異なる情報を提供します。

数値データの場合
import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

print(df.describe())
 
# 出力
#               A          B
# count  5.000000   5.000000
# mean   3.000000  30.000000
# std    1.581139  15.811388
# min    1.000000  10.000000
# 25%    2.000000  20.000000
# 50%    3.000000  30.000000
# 75%    4.000000  40.000000
# max    5.000000  50.000000
 

 

  • count: 有効なデータの個数
  • mean: 平均値
  • std: 標準偏差
  • min: 最小値
  • 25%: 第一四分位数
  • 50% (median): 中央値
  • 75%: 第三四分位数
  • max: 最大値
文字データの場合

文字列やカテゴリデータに対してdescribeを使うと、以下の情報が得られます。

import pandas as pd

data = {
    'C': ['apple', 'banana', 'apple', 'orange', 'banana']
}
df = pd.DataFrame(data)

print(df.describe())

# 出力
#             C
# count       5
# unique      3
# top     apple
# freq        2

  • count: 有効なデータの個数
  • unique: ユニークな値の個数
  • top: 最頻値
  • freq: 最頻値の出現回数

標準偏差を計算するstdメソッド

stdメソッドは、特定の列や全体の標準偏差を計算します。標準偏差はデータのばらつきを示す指標で平均からのデータの分散を表します。

import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

print(df['A'].std())  # 列Aの標準偏差
 
# 出力
# 1.5811388300841898
 

 

平均値を計算するmeanメソッド

データの平均値を計算します。

# 共通部分省略
print(df['A'].mean()) # 列Aの平均値

# 出力
# 3.0
 

 

中央値を計算するmedianメソッド

データの中央値(中央値)を計算します。中央値は外れ値の影響を受けにくい指標です。

# 共通部分省略
print(df['A'].median()) # 列Aの中央値

# 出力
# 3.0
 

 

 

最小値と最大値を取得するmin・maxメソッド

それぞれ、最小値と最大値を取得します。

# 共通部分省略
print(df['A'].min())  # 列Aの最小値
print(df['A'].max())  # 列Aの最大値

# 出力
# 1
# 5
 

 

合計を計算するsumメソッド

データの合計を計算します。

# 共通部分省略
print(df['A'].sum())  # 列Aの合計値

# 出力
# 15
 

 

データの分散を計算するvarメソッド

分散を計算します。分散は標準偏差の二乗に相当し、データのばらつきの指標です。

# 共通部分省略
print(df['A'].var())  # 列Aの分散

# 出力
# 2.5
 

 

最頻値を取得するmodeメソッド

データの最頻値を取得します。同じ値が複数ある場合は、すべての最頻値が返されます。

# 共通部分省略
print(df['A'].mode())  # 列Aの最頻値

# 出力
# 0    1
# 1    2
# 2    3
# 3    4
# 4    5
# Name: A, dtype: int64
 

 

四分位点を取得するquantileメソッド

任意の分位点を計算します(例: 四分位点)。

# 共通部分省略
print(df['A'].quantile(0.25))  # 第一四分位数
print(df['A'].quantile(0.75))  # 第三四分位数

# 出力
# 2.0
# 4.0
 

 

ユニークな値を取得するuniqueメソッドと値の頻度を確認するvalue_countsメソッド

  • unique: ユニークな値の一覧を取得。
  • value_counts: 各値の出現頻度をカウント。
import pandas as pd

data = {
    'C': ['apple', 'banana', 'apple', 'orange', 'banana']
}
df = pd.DataFrame(data)

print(df['C'].unique())  # 列Cのユニークな値
print(df['C'].value_counts())  # 列Cの値ごとの頻度

# 出力
# ['apple' 'banana' 'orange']
# C
# apple     2
# banana    2
# orange    1
# Name: count, dtype: int64
 

 

欠損値の確認を行うisna・notnaメソッド

  • isna: 欠損値(NaN)を確認する(True/Falseで返す)。
  • notna: 欠損値でない部分を確認する。
import pandas as pd

data = {
    'A': [1, 2, 3, None, 5],
    'B': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

print(df['A'].isna())  # 欠損値の確認
print(df['A'].notna())  # 欠損値のない箇所の確認

# 出力
# 0    False
# 1    False
# 2    False
# 3     True
# 4    False
# Name: A, dtype: bool
# 0     True
# 1     True
# 2     True
# 3    False
# 4     True
# Name: A, dtype: bool
 

 

他にも…

  • idxmin / idxmax: 最小値・最大値のインデックスを取得。
  • cumsum: 累積和を計算。
  • cumprod: 累積積を計算。
import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

print(df['A'].idxmin())  # 最小値のインデックスを取得
print(df['A'].idxmax())  # 最大値のインデックスを取得
print(df['A'].cumsum())  # 累積和を計算
print(df['A'].cumprod())  # 累積積を計算

# 出力
# 0
# 4
# 0     1
# 1     3
# 2     6
# 3    10
# 4    15
# Name: A, dtype: int64
# 0      1
# 1      2
# 2      6
# 3     24
# 4    120
# Name: A, dtype: int64
 

 

 

スポンサーリンク

 - Python