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でデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comments