【Pandas入門】データ分析のサンプル集

この記事では、Pythonとデータ分析ライブラリPandas」を行う方法についてサンプルコード付きで入門者向けに使い方を解説します。

【はじめに】Pandasとは

Pandasは、Python向けデータ分析用ライブラリです。
Pythonには様々なデータ分析ライブラリがありますが、このライブラリの大きな特徴は「R言語のデータフレームのような型」を持たせることができる点です。
つまり、R言語に似た使い方ができます。

PythonとPandasの環境構築はこちら
1 Windows環境・・・Python環境を構築する方法
2 Pandasのインストール方法(WinPythonの場合は不要)

【配列作成】Series、DataFrame

Seriesとは、ラベルが付いた1次元配列です。
※ラベル付き2次元配列の場合は、データフレームラベルにより、データの操作が可能である点が普通の1次元配列と異なる点です。
データをSeriesに変換することで統計解析がやりやすくなります。
Pandasでは、Seriesメソッドを用いることで、ラベル付きの配列を生成できます。

Series

# -*- coding: utf-8 -*-
import pandas as pd

# 1次元
data = pd.Series([158, 157, 157], index=['miho','saori','yukari'])

print(data)

"""
miho      158
saori     157
yukari    157
dtype: int64
"""
おすすめ記事
1 【Pandas】ラベル付き配列を生成 (Series)

DataFrame

DataFrameとは各行・列に対してラベルが付いた2次元配列です。
各行・列のラベルにより、データの操作が可能である点が普通の配列と異なる点です。
そのため、データをデータフレームに変換することで統計解析がやりやすくなります。

Pandasでは、DataFrameメソッドを用いることで、データフレームを生成できます。

書式 pandas.DataFrame(data)
返り値 データフレーム
# -*- coding: utf-8 -*-
import pandas as pd

# データフレームの初期化
df = pd.DataFrame({
        'miho'  : [158, 82, 56, 84],
        'yukari': [157, 78, 58, 83],
        'saori' : [157, 85, 60, 86]
})

# 表示
print(df)
"""
    miho  saori  yukari
0   158    157     157
1    82     85      78
2    56     60      58
3    84     86      83
"""

miho,saori,yukariは各列のラベルです。
今回は各行のラベルは設定しなかったため、「0, 1, 2, 3」という行ラベルが自動で付加されています。

詳細記事
1 【Pandas】データフレームの作成

Pandasでは、DataFrameメソッドを用いることで、インデックスやラベルを付けたデータフレームを生成できます。

書式 pandas.DataFrame(data, index=インデックス)
返り値 データフレーム
# -*- coding: utf-8 -*-
import pandas as pd

# データフレームの初期化
df = pd.DataFrame({
    '名前' : ['西住みほ', '秋山優花里', '武部沙織'],
    '身長' : [158, 157, 157]},
    index = ['車長', '装填手', '通信手']
)

# 表示
print(df)
"""
        名前   身長
車長    西住みほ  158
装填手  秋山優花里  157
通信手   武部沙織  157
"""

「車長、装填手、通信手」が各行のラベルです。

詳細記事
1 【Pandas】データフレームのインデックス設定

Pandasでは、date_rangeメソッドを用いることで、日付インデックス・ラベルを生成できます。

【書式】

pd.date_range(開始日付, 終了日付, オプション) 

【オプション】
freq : 周期(1日おきの日次データが欲しい場合は”D”を指定)
periods : 取得したい要素の数(21日間欲しい場合は21、終了日付を指定してる場合は不要)

【返り値】
開始~終了日付のインデックス

2017年2月1日から21日分のラベル・インデックスを生成しました。

# -*- coding: utf-8 -*-
import pandas as pd

# 日時のインデックス作成
date = pd.date_range("20170201", periods=21)

# 表示
print(date)
"""
class 'pandas.tseries.index.DatetimeIndex'
[2017-02-01 00:00:00, ..., 2017-02-21 00:00:00]
Length: 21, Freq: D, Timezone: None
"""

date_rangeメソッドを用いることで、日付インデックス・ラベルを生成できます。
今回はこれを用いて、データフレームに生成した日付インデックスを追加してみました。

【書式】

pd.date_range(開始日付, 終了日付, オプション) 

【オプション】
freq : 周期(1日おきの日次データが欲しい場合は”D”を指定)
periods : 取得したい要素の数(21日間欲しい場合は21、終了日付を指定してる場合は不要)

【返り値】
開始~終了日付のインデックス

# -*- coding: utf-8 -*-
import pandas as pd

data = {
    'miho'  : [158, 82, 56, 84],
    'yukari': [157, 78, 58, 83],
    'saori' : [157, 85, 60, 86]
}

# 日時のインデックス作成
date = pd.date_range("20170201", periods=4)
df = pd.DataFrame(data,index = date)

# 表示
print(df)

"""
            miho  saori  yukari
2017-02-01   158    157     157
2017-02-02    82     85      78
2017-02-03    56     60      58
2017-02-04    84     86      83
"""
詳細記事
1 【Pandas】日付インデックス・ラベルの作成
2 【Pandas】データフレームに日付インデックスを付加

【ファイル処理】CSV、Excelファイルの読み書き

ファイル処理
書込 Excelファイルの書み込みCSVファイルへ書き込み
読込 Excelファイルの読み込みCSVファイルの読み込み

【DataFrame操作】ソート、入れ替え、情報取得など

DataFrameの操作
基本 転置(行・列の入替)行を並替
ソート ラベル順インデックス順
情報取得 インデックスラベルデータ型基本統計量
値取得 全てラベル指定インデックス・ラベル指定
抽出 列指定行・列指定行・列指定(番号)

【基本統計量】DataFrameから計算

ラベル 合計値平均値中央値最大値最小値要素数標準偏差分散

【多変量解析】単回帰分析、重回帰分析など

多変量解析を行うには、機械学習ライブラリ「Scikit-learn」を組み合わせます。

出力 目的変数 説明変数(量的データ) 説明変数(質的データ)
予測 量的データ 単回帰分析重回帰分析 ■数量化Ⅰ類 ■コンジョイント分析
予測 質的データ ■判別分析 ■ロジスティック回帰分析 ■数量化Ⅱ類
要約 なし ■主成分分析 ■因子分析 ■クラスター分析 ■多次元尺度法(MDS) ■数量化Ⅲ類 ■コレスポンデンス分析

【応用例】Excel処理、株価

Pandasの応用例
Excel Excelのグラフ化
株価 Pandas-datareaderで日経平均株価の取得
投資 株価分析
参考 e-stat総務省統計局:データサイエンススクールto-kei.net
関連記事