データ分析に役立つPandasメソッド5選
はじめに
想定読者
- データ分析初学者
- pandas初学者
この記事の方針
データ分析をやるときに役立つPythonライブラリの1つにPandasがあります。
表形式のデータを扱う時には必須のツールですが、多機能ゆえに何から始めていいのかわかりづらいことも多いかと思います。実際、ググってみるとcsvを読み込んだりデータ前処理したりと、用途に合わせていろんなメソッドが用意されています。
そこで、ここではデータ分析に役立つものを厳選して紹介しようと思います。
ここで紹介するもの以外にも便利なものは山ほどありますが、少し知っておくだけで作業を効率化できそうなものをピックアップしています(少ない行数で大きな恩恵が得られるもの)。
前提
Jupyter NotebookやVSCodeは必須ではありませんが、
Notebookだとスクリプトを少しずつ実行しながら細かい検証がやりやすいこと、VSCode+Notebookだとブラウザを使わずにVSCodeでソースコードが完結することを理由に下記の環境を採用しています。
- Python 3.12.5
- Jupyter Notebook
- VSCode
- pandas==2.2.3
- scikit-learn==1.5.2
- jupyter==1.1.1
- ipython==8.27.0
- ipykernel==6.29.5
必要なモジュールの読み込みとデータの準備
メインのPandasと、データセットを用意するためのscikit-learnをインポートします。
# モジュール読み込み
import pandas as pd
from sklearn.datasets import fetch_california_housing
もしライブラリがない場合は下記コマンドでインストールしておく必要があります。
$ pip install pandas scikit-learn
scikit-learnで用意されているデータセットを使います。
今回は、カリフォルニアの地区ごとの平均住宅価格のデータセットを使ってみます。
# データ準備
"""_dataset_memo
概要:1990年のカリフォルニアの地区ごとの平均住宅価格のデータセット
タスク:回帰
目的変数:「MedHouseVal」で数値データのみ(10万ドル単位)
説明変数:「MedInc」「HouseAge」「AveRooms」「AveOccup」「Latitude」「Longitude」で数値データのみ
カラム数:9
データサイズ:20640
- MedInc:地区グループの世帯平均所得
- HouseAge:地区グループの平均築年数
- AveRooms:世帯当たりの平均部屋数
- AveBedrms:世帯当たりの平均寝室数
- Population:地区グループの人口
- AveOccup:世帯の平均人数
- Latitude:地区グループの緯度
- Longitude:地区グループの経度
"""
housing = fetch_california_housing(as_frame=True)
housing_df = housing['frame']
housing_df
一応、各説明変数の説明を書いてますが、
今回は分析がメインではないのであまり重要ではありません。
Pandasメソッド5選
info()
# データセットのサマリー
housing_df.info()
データフレームの基本情報を表示します。
これだけでカラム名、欠損値の有無、データ型などを一気に確認できます。
データをロードしたらとりあえずやっておくくらいの感じです。
describe()
# 基本的な統計量の算出
housing_df.describe()
これだけで、平均や標準偏差、最大値、最小値、各四分位数を出せます。
これを知らずに自分で1つずつ計算すると面倒なので覚えておきたいメソッドです。
sample()
# データからランダムサンプリング
housing_df.sample(5)
現状のデータセットから任意の行数のデータをランダムサンプリングします。
分析の前処理などで意外とランダム抽出したいときがあるので重宝します。
ちなみに引数として"len(housing_df)"をセットすると単純にランダム並び替えになります。
plot()
# ヒストグラム
housing_df.plot(kind='hist', y='MedHouseVal', title='Histgram for MedHouseVal', grid=True, bins=10, figsize=(8,4), alpha=0.5)
報告書用途などでデータの可視化をきちんとやる場合には、何かと融通が利きやすいmatplotlibを使ったほうがいいですが、サクッと可視化したいときにはpandas内蔵のplotメソッドを使うのが便利です。
今回の例ではヒストグラムを書いてますが、ほかにも折れ線グラフなどもかけます。
corr()
# 目的変数との相関を可視化する
housing_corr_df = housing_df.corr()['MedHouseVal'].sort_values(ascending=False)
housing_corr_df.plot(kind='bar', title='Correlation with MedHouseVal', grid=True, figsize=(8,4), alpha=0.5)
これだけで各カラム間の相関係数を算出します。
seabornなどのライブラリを使えば、ヒートマップで表示できたりして便利です。
今回の例では目的変数との相関にしぼってプロットしています。
まとめ
自分でゼロから書くと時間がかかってしまう処理でもライブラリを活用して短く書けることがあります。
そして、ライブラリが豊富なのがPythonのメリットの1つでもあります。
出来るだけ効率的にデータ分析をするために、まず自分がやりたいことに特化したライブラリがないかを探すことからはじめてみるのがオススメです。
Discussion