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 MDBdisplay関数を用いると体裁が整えられて出力されます。
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のオブジェクトの書き方を元にしたデータ構造をしています。