The sky is the limit

Vue.js、PHP、Java、Cordova、Monacaを中心にハイブリッドアプリ開発、PWA開発など効率的なWEB、iOS、Androidアプリ開発の情報を共有します。

【Pandas】PandasのSeries型の使い方 その1 - Seriesの作成 -【Series型】

【Pandas】PandasのSeries型の使い方 その1 - Seriesの作成 -【Series型】

f:id:duo-taro100:20160218004611p:plain

Pandasの概要は後日まとめます。
今回から、Pandasでよく使われるSeries型についてまとめていきます。

Series型とは

Pandasの中でよく使われるデータ構造の一つで、一次元のndarrayとして扱われます。
ラベル(インデックス)をもち、ラベルを用いてデータを取得したりできます。

ドキュメント

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html

例えば、クラス26人中の血液型とその人数を表したSeriesは以下のように表示されます。

a型 10
b型 5
o型 8
ab型 3

ここでは、「a型」「b型」「o型」「ab型」をラベル(インデックス)と言います。

Series型の生成

以下のように作成します。

pd.Series(data=データ, index=ラベル)

先程、例としてあげた、クラス内の血液型の人数内訳をSereisで作成すると以下のようになります。

# pandasをインポートします
import pandas as pd

# ラベル(インデックス)を用意します
labels = ["a型", "b型", "o型", "ab型"]
# データを用意します
number = [10, 5, 8, 3]

# 生成
series = pd.Series(data=number, index=labels)
print(series)

結果

a型 10
b型 5
o型 8
ab型 3
dtype: int64

もう一つのSeries型生成方法

同様のデータを以下のように作成することも可能ですが、表示すると結果が異なることがわかります。

import pandas as pd

bloods = {"a型":10, "b型":5, "o型":8, "ab型":3}

# 生成
series = pd.Series(data=bloods)
print(series)

結果

ab型 3
a型 10
b型 5
o型 8
dtype: int64

それぞれの表示結果が異なることがわかると思います。
前者ではデータを投入した通りにデータが表示されているのに対して、後者ではラベルでソートされた結果で表示されていそうです。
試しに、最後の「ab型」を「d型」に変えて試してみます。

import pandas as pd

bloods = {"a型":10, "b型":5, "o型":8, "d型":3}

# 生成
series = pd.Series(data=bloods)
print(series)

すると結果は以下の通りになります。

a型 10
b型 5
o型 8
d型 3
dtype: int64

想定通り、ラベルでソートされた結果で表示されているようです。
ラベルの昇順ですね。
順序を持った状態で作成したいのか、それともソートされた状態にしたいのかによって生成方法を変えるという工夫もできそうです。

データ配列とラベル配列の要素数が異なる場合

例えば以下のようにしてみます。

# pandasをインポートします
import pandas as pd

# 要素数3
labels = ["a型", "b型", "o型"]
#  要素数4
number = [10, 5, 8, 3]

# 生成
series = pd.Series(data=number, index=labels)
print(series)

するとエラーになります。

Wrong number of items passed 4, placement implies 3

ラベル配列を指定しなかった場合

indexに何も指定しなかった場合はどうなるでしょうか。

# pandasをインポートします
import pandas as pd

#  要素数4
number = [10, 5, 8, 3]

# indexに何も指定しないで生成 
series = pd.Series(data=number)
print(series)

結果はこうなります。

0 10
1 5
2 8
3 3
dtype: int64

indexが0から順に自動で付与されています。
この機能をうまく使うこともできそうです。
以上が、PandasのSeries型の生成方法になります。
気になったことがあれば、さらに追記していく予定です。