今回は pandas-profiling というパッケージを使ってみる。 このパッケージを使うと pandas の DataFrame に含まれる各次元の基本的な統計量や相関係数などを一度に確認できる。 最初にデータセットのサマリーを確認できると、その後の EDA (Exploratory Data Analysis: 探索的データ分析) の取っ掛かりにしやすいと思う。
使った環境は次の通り。
$ sw_vers ProductName: macOS ProductVersion: 12.4 BuildVersion: 21F79 $ python -V Python 3.9.13 $ pip3 list | grep pandas-profiling pandas-profiling 3.2.0
下準備
まずは必要なパッケージをインストールしておく。
$ pip install pandas-profiling
サンプルのデータセットを用意する
サンプルとなるデータセットは Kaggle でおなじみの Titanic データセットにした。
Titanic - Machine Learning from Disaster | Kaggle
データセットは Web サイトか、あるいはコマンドラインツールからダウンロードしておく。
$ pip install kaggle $ kaggle competitions download -c titanic $ head train.csv PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C 3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S 4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S 5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S 6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q 7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S 8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S 9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S
pandas-profiling を使ってみる
それでは、実際に pandas-profiling を使ってみる。 まずは Python のインタプリタを起動する。
$ python
データセットの CSV を pandas で読み込む。
>>> import pandas as pd >>> df = pd.read_csv('train.csv')
あとは読み込んだ DataFrame を pandas-profiling に渡すだけ。
>>> import pandas_profiling >>> profile_report = pandas_profiling.ProfileReport(df)
解析結果は、次のように HTML で出力できる。
>>> profile_report.to_file('report.html')
一旦、インタプリタからは抜けておこう。
>>> exit()
あとは出力された HTML を確認する。
$ open report.html
このように、各次元の基本的な統計量や欠損値の有無、分布や相関係数などが一度に確認できる。
いじょう。