こんにちは、ミナピピン(@python_mllover)です。
MENTAの案件でpandas-profilingのprofile_report()でデータフレームを自動分析した際に連続の数値として所為したいものがカテゴリ変数として処理されるのを変更したいという依頼を受けて調査したのでその結果をここにまとめておきます。
pandas-profilingのインストールと基本的な使い方
⇒https://github.com/pandas-profiling/pandas-profiling
関連記事:【Python】Pandas-ProfilingとPixiedustでデータをGUIみたいに可視化する
CategoricalとNumericの判定について
gitのissueを見たところ、pandas-profilingのprofile_report()では個別の値のしきい値を定義できます。このしきい値を下回ると、変数は分析の観点からより意味をなす可能性があるため、カテゴリとして扱うという処理になるようです。この閾値より下の場合データ型をlamdaとかでintからfloatに変えるみたいな処理をしても意味はないみたいです。
閾値の変更は引数のvars.num.low_categorical_threshold
で設定します。ここで設定した閾値以上の分類にある場合、カテゴリーから連続数値として処理されるようになります。0にすると全てが連続数値として処理されるようになります。
実際にコードにすると↓のような感じ
df.profile_report(vars={ "num": {"low_categorical_threshold": 0}, "cat": { "length": True, "characters": False, "words": False, "n_obs": 5, }, })
profile_report
には他にもいろんな設定があります。
他の設定については以下参照↓
Redirecting to https://ydata-profiling.ydata.ai/
コメント