Pandasでデータ全体の概要を把握するメソッド

はじめに


データ分析を行っていると、データ全体がどうなっているのかな?と確認したい場合がありますよね。そこで、pandasでデータ全体の概要を見る方法について書いてみようと思います。初めに既存のメソッドをまとめ、その後自作したメソッドを紹介しようと思います。

環境はpython 3.7.4、pandas 0.25.1です。


既存のメソッド


pandas.DataFrameにはデータをまとめるメソッド.info()と.describe()がすでに存在しています。これらについては色々なところでまとめられているのでここでは簡単に結果だけ表示します。 データにはtitanicを用います。

詳細については例えばこちら


import pandas as pd
data = pd.read_csv("train.csv") #データを読み込み

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
data.describe()


自作メソッド


ただこれだけだとちょっと歯痒いところがあるんですよね。例えばdescribe()では型や欠損値の情報が分からないですし、かといってinfo()とdescribe()を両方やるのも2度手間になります。ということで、info()とdescribe()をまとめたようなメソッドを作ってみました。


import numpy as np

def summarize_data(df):

    df_summary=pd.DataFrame({'nunique':np.zeros(df.shape[1])}, index=df.keys())

    df_summary['nunique']=df.nunique()
    df_summary['dtype']=df.dtypes
    df_summary['isnull']=df.isnull().sum()
    df_summary['first_val']=df.iloc[0]
    df_summary['max']=df.max(numeric_only=True)
    df_summary['min']=df.min(numeric_only=True)
    df_summary['mean']=df.mean(numeric_only=True)
    df_summary['std']=df.std(numeric_only=True)
    df_summary['mode']=df.mode().iloc[0]

    pd.set_option('display.max_rows', len(df.keys())) #表示の省略をしない

    return df_summary

summarize_data(data)

なお、kaggleのカーネルなどではデータ数が多いと表示が省略されてしまうので、summarize_data()の最終行で省略されないように設定しています。



まとめ


pandas.DataFrameのデータ概要をまとめる既存のメソッドと、それらを組み合わせた自作のメソッドについて紹介しました。初めに概観をつかむだけでなく、スケール変換や欠損値処理がちゃんとできているのかの確認などにも使えると思います。


記事内で扱ったメソッドはgithubに上げてあります。

最新記事

すべて表示

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を求める、という感じです。 f(x, a, b)=a*x^2+b (a>0 and b>0) 今回はそんな手法についてご紹介しま

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png