LogoMark.png

Pandas のバックアップ(No.7)


Pandas

https://pandas.pydata.org/

Pandas は、データの読込、集計、並べ替え、欠損値の補完などを行うことができるライブラリで、データ分析の前処理段階で多く利用されます。.csv、.xlsx 他、多様な形式のデータを読み込みに対応しています。

PCのメモリ容量が許す限り、大量のデータを DataFrame に読み込んむことができ、表計算ソフトよりも高速で処理を行うことができます。

一般にこれを使う際は、まず Pandasでデータを整形した後、NumPyで数値計算を行う・・といった流れになります。

Pandas の特徴は DataFrame にあります。DataFrame にはデータの平均値や行数などの情報把握、並替え、列名変更といったデータ整形機能があります。




準備

インストール

Python 言語のライブラリとしてのインストールになるので、一般の Python3 の環境であれば、Terminalから以下のコマンドでインストールできます。

$ pip3 install pandas
$ pip3 list  ← 念のため一覧表示


pandasを使った処理の冒頭部分の事例

# 必要なライブラリのインポート
import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt




DataFrame

pandas による DataFrame の定義

一般に、データフレームは CSV や Excel 等のデータを読み込んで生成するものですが(後述)、ここではデータフレームの構造を理解する意味で、直接的なデータの定義方法について紹介します。

pd.DataFrame( data, index, columns, dtype, copy)

DataFrame は dataindexcolumns の3つの要素から構成されます。

定義例1:リストで要素を渡す方法

df1 = pd.DataFrame(
    data={ 'col_1': [10, 20, 30, 40], 
               'col_2': [50, 60, 70, 80],
               'col_3': ['a', 'b', 'c', 'd'] }
)
df1
        col_1     col_2     col_3
0        10          50           a
1        20          60           b
2        30          70           c
3        40          80           d

df は DataFrame の略として一般によく用いられる変数名です。

定義例2:2次元配列を使って定義する事例

df2 = pd.DataFrame(
    data=np.array( [ [10, 20, 30, 40], [11, 21, 31, 41], [12, 22, 32, 42] ] ),
    index=['row_1', 'row_2', 'row_3'] ,
    columns=['col_1', 'col_2', 'col_3', 'col_4']
)
df2
              col_1     col_2     col_3     col_4
row_1        10          20          30          40
row_2        11          21          31          41
row_3        12          22          32          42


定義例3:0から11までの数値を 3行・4列にあてはめて定義する事例

df3 = pd.DataFrame(
    np.arange(12).reshape(3, 4),
    index=['row_1', 'row_2', 'row_3'],
    columns=['col_1', 'col_2', 'col_3', 'col_4']
)
df3
               col_1     col_2     col_3     col_4
row_1          0            1            2           3
row_2          4            5            6           7
row_3          8            9           10         11




基本的なメソッド

データの読込

データの情報把握

欠損値に関する処理

行・列名の変更

DataFrame.rename()

rename メソッドの引数 index および columns に、{ 元の値 : 新しい値 } のかたちで(辞書型の定義)で元の値と新しい値を指定します。デフォルトでは削除後の状態を返すだけで、元の DataFrame そのものを破壊・更新するわけではありません。引数 inplace = True にすると、元の DataFrame が変更されます。

行・列の削除

DataFrame.drop()

dropメソッドは、デフォルトでは削除後の状態を返すだけで、元のデータフレームそのものを破壊・更新するわけではありません。引数 inplace=True にすると、元の DataFrame が変更されます。

データの抽出

DataFrame[ ]、DataFrame.query()、DataFrame.iloc[ ]、DataFrame.loc[ ]


データの並べ替え

集計・相関 その他




データの可視化

以下、Matplotlib の import が必要です。> DataVisualization

import matplotlib.pyplot as plt


ヒストグラム:DataFrame.hist()

汎用グラフ:DataFrame.plot( )  引数kindでグラフの種類を指定できます。

散布図:DataFrame.plot.scatter()

df.plot.scatter(x='item1', y='item2')


箱ひげ図:DataFrame.boxplot()

df.boxplot( column="item-x", by="item-y")




活用サンプル

以下に、Pandas によるデータ読み込みのサンプルを掲載しています。
ipynb(JupyterNotebook)形式で、GitHubに置いていますが、レンダリングがタイムアウトする場合は、下の nbviewer 経由でご覧下さい。

参考:ライブラリのサンプルデータを読む事例

# サンプルデータセットを取得
from sklearn import datasets
boston = datasets.load_boston()
# 読み込んだデータを Pandas の DataFrame型に変換
df = DataFrame(boston.data, columns = boston.feature_names)
# 目的変数をDataFrameへ追加
df['MEDV'] = np.array(boston.target)