Qiita初投稿です。「とにかく投稿することに意義がある!」というどこかで聞いた言葉を信じて、普段データの可視化分析をする時によく使うコードを備忘録的に書いておこうと思います。
データの取得
csvファイルの形式でデータファイルが保存されている場合が多いので、それを前提とします。
import pandas as pd
path = "./data.csv"
data_df = pd.read_csv(path, engine="python")
データの読み込みは、pandasのread_csv
を使用しています。引数engine="python"
は、Windows環境では書いておかないとエラーになります。理由はよくわかりません。
データの概要をチェック
読み込んだデータの中身をざっと俯瞰します。
import pandas_profiling as pdp
data_df.info()
pdp.ProfilerReport(data_df)
pandas.info()
でデータ型や欠損の有無などを見ます。
また、pandas_profiling.ProfilerReport()
を使うと、各変数の最大・最小や平均値、ヒストグラム、相関ヒートマップなどを一気にみることができ、非常に便利です。
散布図行列の出力
各変数の分布をざっとみるために、散布図行列を使います。
import seaborn as sns
sns.pairplot(data=data_df, hue="target", diag_kind="kde", kind="reg")
引数hue
でカテゴリ変数のカラム名を指定することで、カテゴリごとに自動で色分けしてくれます。ここでは目的変数で色分けしていることを想定しています。
引数diag_kind
を指定すると、対角成分のグラフを変更することができます。kdeはカーネル密度推定(Kernel Density Estimation)です。
線グラフ
時系列データを可視化するときなど。
data_df.plot(figsize=(15,4), title="title")
plt.show()
pandasのplotメソッドをそのまま使ってしまうことがほとんどです。
クラス別に、同じ図に描画するときは、新しいDataFrameを作ってしまいます。
class_list = list(data_df["target"].unique())
plot_df = pd.DataFrame()
for c in class_list:
tmp = assign_df[data_df["target"] == c].loc[:, "plot_param"]
tmp = pd.DataFrame(list(tmp), columns=[c])
plot_df = pd.concat([plot_df, tmp], axis=1)
plot_df.plot()
plt.show()
このコードでは欠損値を考慮していません。
終わりに
記事書くのって難しい。。
改めて自分のコード見直すと色々ダメなところが見えてきて勉強になります。