今回はPythonの主要なライブラリ群の一つ「pandas」のデータ構造について学んでいく。
pandasはデータの整理や分析を簡単に行うためのツールを持っており、NumPyなどの数値計算ツールと連携して使われることの多いライブラリだ。
NumPyとの大きな違いは、pandasはテーブル形式のデータを扱うことに適しており、高度なデータ構造を持っているという点だ。
まずはそのデータ構造のうち、シリーズ(Series)について詳しくまとめていく。
コンテンツ
ライブラリのインポート
まずはシリーズを扱うまえに、pandasをインポートする必要がある。
import pandas as pd
次にSeriesをインポートする。
from pandas import Series
これで準備完了だ。
シリーズ(Series)とは
pandasのシリーズは一次元配列のようなオブジェクトで、インデックスとそれに該当する値を持つ構成となっている。
import pandas as pd
from pandas import Series
obj = pd.Series([5, 6, 7, 8])
obj
# 0 5
# 1 6
# 2 7
# 3 8
# dtype: int64
obj[2] # 7
values属性とindex属性
シリーズにはvalues属性と、index属性が用意されており、それぞれシリーズが持つデータ配列とインデックスオブジェクトを取得することができる。
import pandas as pd
from pandas import Series
obj = pd.Series([5, 6, 7, 8])
obj.values
# array([5, 6, 7, 8])
obj.index
# RangeIndex(start=0, stop=4, step=1)
インデックスにラベルを付けて分かりやすく管理する
また、Pythonのディクショナリのように、インデックスには任意のラベルを付けて管理することも可能だ。
import pandas as pd
from pandas import Series
obj = pd.Series([5, 6, 7, 8], index=['a', 'b', 'c', 'd'])
obj
# a 5
# b 6
# c 7
# d 8
# dtype: int64
NumPy的な操作をシリーズに適用する
NumPyの配列ndarrayで扱った、条件指定によるフィルタリングや関数の適用などをおこなった場合でも、インデックスとデータの関連はそのまま保持される。
import pandas as pd
from pandas import Series
obj = pd.Series([5, 6, 7, 8], index=['a', 'b', 'c', 'd'])
obj[obj > 6]
# c 7
# d 8
# dtype: int64
np.exp(obj)
# a 148.413159
# b 403.428793
# c 1096.633158
# d 2980.957987
# dtype: float64
ディクショナリをシリーズに変換する
Python標準のディクショナリを元に、シリーズを作成することもできる。
import pandas as pd
from pandas import Series
data = {'taro': 100, 'jiro': 85, 'saburo': 90}
obj = pd.Series(data)
obj
# taro 100
# jiro 85
# saburo 90
# dtype: int64
シリーズのname属性
シリーズのオブジェクト自身と、インデックスはそれぞれname属性を持つ。
import pandas as pd
from pandas import Series
data = {'taro': 100, 'jiro': 85, 'saburo': 90}
obj = pd.Series(data)
obj.name = 'Object Name'
obj.index.name = 'Index Name'
obj
# Index Name
# taro 100
# jiro 85
# saburo 90
# Name: Object Name, dtype: int64
シリーズオブジェクトのname属性は、データベースで言うところのテーブル名に該当し、インデックスのname属性は、さしずめカラム名といったところだろうか。
まとめ
pandasではデータ構造として、シリーズとデータフレームを持っているが、今回は一次元配列を扱うシリーズを詳しく取り上げた。
次回は、データベースに構造が近いデータフレームについて紹介する。