pandas 超入門1

Python で集計可視化する際によく使われるライブラリ pandasの基本的な使い方について説明します。

Contents

pandas

pandas とは、スプレッドシートのようなデータを読み込み、操作、整形、結合(マージ)する機能を備えたライブラリです。ここでは基本的な操作について述べるに留めます。より詳しく pandas について知りたい場合は 公式ドキュメント を参照ください。

基本操作

まず、ライブラリをインポートします。

import pandas as pd

データ用意

pandasで操作するデータを用意するには、大きく2つの手段があります。一つはコード内で作成する方法と、もう一つは外部ファイルから読み込んでくる方法です。まずは、コード内で作成する方法について簡単に説明します。

Series の作成

もっとも単純なスプレッドシートデータは1列に値が並んでいるデータでしょう。pandasでは1列1列を表現するデータ型を Series オブジェクトといい、Pythonリストオブジェクトと同様に1次元のコンテナとなっています。Pythonリストオブジェクトと異なるのは、各要素のデータ型(dtype)が同じである必要という点です。まずこの Series オブジェクトを作成してみましょう。

# Series オブジェクトの作成
s = pd.Series(['Academian', 'nuts'])
print(s)
0    Academian
1         nuts
dtype: object

左に表示されている数字はインデックスを表しています。またdtypeはデータ型を表しています。pandasの型とPythonの型の対応は以下のようになります。

pandas dtypepython type
objectstring
int64int
float64float
datetime64datetime

DataFrame の作成

1次元のSeriesオブジェクトよりも構造が少し大きなスプレッドシートデータとして、複数列ある以下のようなスプレッドシートを考えることができます。

first namelast name
Academiannuts
physMDB

正当なデータとしてのスプレッドシートデータには、このように列名(ここではfirst namelast name)とその列に値が格納されて、セットになっています。この列名と列の値をそれぞれ辞書のkeyvalueとして考えると、DataFrameは複数のSeriesオブジェクトの辞書によって構成されたオブジェクトであると捉えることができます。そして実際、一般的にpandasにおいてDataFrameは辞書として作成します。上記の例のスプレッドシートデータを表すDataFrameを作成してみましょう。

# DataFrameオブジェクトの作成
name_list = pd.DataFrame({
    'first name': ['Academian', 'phys']
    ,'last name': ['nuts', 'MDB']
})
print(name_list)
  first name last name
0  Academian      nuts
1       phys       MDB

display関数を用いると体裁が整えられて出力されます。

display(name_list)
first namelast name
0Academiannuts
1physMDB

データの読み込み

次に、外部データを読み込んでDataFrameを用意する方法について見てみましょう。Google Colaboratoryにはワークディレクトリの直下にいくつかのサンプルデータが入ったsample_dataディレクトリがあります。今回はそこから「アンスコムのカルテット」データを読み込んでみます。

anscombe = pd.read_json('./sample_data/anscombe.json')
print(anscombe)
   Series   X      Y
0       I  10   8.04
1       I   8   6.95
2       I  13   7.58
3       I   9   8.81
4       I  11   8.33
(以降省略)

今回はjsonファイルだったのでread_jsonメソッドを使用しました。同様にcsvファイルを読み込みたい場合はread_csvメソッドがあります。これらのメソッドのパラメータを知りたい場合は こちら や こちら の公式ドキュメントを参考にしてください。読み込み時にエラーなどが出た場合にはパラメータを設定することでエラーを回避できる場合があります。

データフォーマットについて

今しがた出てきた jsoncsvtsvなどについて補足的に説明しましょう。これらはデータフォーマットという、ファイルがどのようなデータ構造をしているのかを示すものになります。実際にデータをみてみるとわかりやすいですが、csvはカンマ(,)で区切られたデータ構造、tsvはタブで区切られたデータ構造、json形式のデータはJavaScriptのオブジェクトの書き方を元にしたデータ構造をしています。