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 dtype | python type |
---|---|
object | string |
int64 | int |
float64 | float |
datetime64 | datetime |
DataFrame の作成
1次元のSeries
オブジェクトよりも構造が少し大きなスプレッドシートデータとして、複数列ある以下のようなスプレッドシートを考えることができます。
first name | last name |
---|---|
Academian | nuts |
phys | MDB |
正当なデータとしてのスプレッドシートデータには、このように列名(ここではfirst name
とlast name
)とその列に値が格納されて、セットになっています。この列名と列の値をそれぞれ辞書のkey
とvalue
として考えると、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 name | last name | |
---|---|---|
0 | Academian | nuts |
1 | phys | MDB |
データの読み込み
次に、外部データを読み込んで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
メソッドがあります。これらのメソッドのパラメータを知りたい場合は こちら や こちら の公式ドキュメントを参考にしてください。読み込み時にエラーなどが出た場合にはパラメータを設定することでエラーを回避できる場合があります。
データフォーマットについて
今しがた出てきた json
やcsv
、tsv
などについて補足的に説明しましょう。これらはデータフォーマットという、ファイルがどのようなデータ構造をしているのかを示すものになります。実際にデータをみてみるとわかりやすいですが、csv
はカンマ(,
)で区切られたデータ構造、tsv
はタブで区切られたデータ構造、json
形式のデータはJavaScriptのオブジェクトの書き方を元にしたデータ構造をしています。