diagnose_category
カテゴリー変数の要約
概要
データフレームのカテゴリー変数を要約します。本関数は、カテゴリー情報を表す列(カテゴリ型・文字列型・ブール型)およびダミー変数(値が {0, 1} に制限された整数列)を対象として、欠損率、ユニーク値の数、最頻値、最頻値の頻度と割合、evenness などの指標を提供します。
diagnose_category(
data: IntoFrameT,
dropna: bool = True,
to_native: bool = True
)引数 Argument
data:IntoFrameT(必須)
入力データ。narwhals が受け入れ可能な DataFrame 互換オブジェクト
(例:pandas.DataFrame、polars.DataFrame、pyarrow.Table)を指定できます。dropna:bool
欠測値(NaN, None など)を統計値の計算から除外するかどうかを表すブール値。初期設定は True です。to_native: bool
Trueの場合、入力と同じ型のデータフレーム(e.g. pandas / polars / pyarrow)を返します。
Falseの場合、narwhals.DataFrameを返します。デフォルトはTrueで、to_native = Falseは、主にライブラリ内部での利用や、バックエンドに依存しない後続処理を行う場合を想定したオプションです。
返り値 Value
freq_table()関数は、次の値をもつ DataFrame を出力します。
variables: 変数(列)名count: 非欠損値の個数miss_pct: 欠損率(null_count / N * 100)(* ここでNはdataの行数)unique: ユニーク値の個数unique_pct: ユニーク値の割合(unique / N * 100)mode: 最頻値mode_freq: 最頻値の度数mode_pct: 最頻値の割合(mode_freq / N * 100)evenness: カテゴリー分布の均等度([0, 1] の範囲)
使用例 Examples
import pandas as pd
import py4stats as py4st
from palmerpenguins import load_penguins
penguins = load_penguins().drop('year', axis = 1) # サンプルデータの読み込みpenguins2 = penguins.copy()
s = penguins2['body_mass_g']
penguins2['heavy'] = np.where(s >= s.quantile(0.75), True, False)
print(py4st.diagnose_category(penguins2).round(4))
#> variables count miss_pct unique unique_pct mode mode_freq mode_pct evenness
#> 0 species 344 0.0000 3 0.8721 Adelie 152 44.1860 0.9550
#> 1 island 344 0.0000 3 0.8721 Biscoe 168 48.8372 0.9133
#> 2 sex 333 3.1977 2 0.5814 male 168 50.4505 0.9999
#> 3 heavy 344 0.0000 2 0.5814 False 254 73.8372 0.8292Note
evenness は、各列ごとに情報エントロピーを \([0, 1]\) の範囲に正規化した指標です。本実装では、対数の底をカテゴリの個数(unique)に設定することで正規化を行っており、これは底を2とした情報エントロピーを log2(unique) で割ることと同値です。この指標は正規化エントロピー(normalized entropy)としても知られています。
