【Pandas】PandasのSeries型の使い方 その1 - Seriesの作成 -【Series型】
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型の生成方法になります。
気になったことがあれば、さらに追記していく予定です。