レッスン1 / 2問目

『Seriesの作成』

このレッスンではSeriesを作成する方法について学習していきましょう。

本レッスンではシリーズの作成方法を学習するにあたり以下の内容を見ていきます。

  1. Seriesとは
  2. Seriesの作成
  3. インデックスの指定

これら三つの内容について見ていきましょう。
まずはSeiresとはなにか。その概要について見ていきます。

Seriesとは

SeriesはNumPyの一次元配列とよく似たデータ構造であるとお考え下さい。
そのうえでNumPyと違う点やSeriesの特徴について説明していきます。

Seriesとは以下のデータのような、とそれに対応するインデックスを持つデータ構造です。

0 田中 1 山本 2 高橋

"田中"のインデックスが0、"山本"のインデックスが1、"高橋"のインデックスが2といった具合に、Seriesではデータに対して明示的にインデックスが付与されます。

NumPyもインデックスを指定することで値を取得することができましたが、Seriesではこのインデックスが明示的に付与されるという点がポイントです。このインデックスには任意の数値や文字列を指定することができます。

またSeriesは数値だけではなく、エクセルやデータベースなどの様々なデータを扱うことができるという点も大きな特徴となります。


ここではSeriesの概要について以下の点について押さえておきましょう。

Seriesの特徴

  • インデックスが明示的に付与される。
  • 数値以外にも様々なデータを扱うことができる

Seriesの作成

ではここからは実際にSeriesを作成する方法について見ていきましょう。

Seriesを作成するには、以下のようにpd.Series()の引数にリストもしくは配列を指定します。

  1. import pandas as pd
  2. import numpy as np
  3. series = pd.Series(["田中", "山本", "高橋"])    # Seriesの作成
  4. print(series)
0 田中 1 山本 2 高橋 dtype: object

リストからSeriesオブジェクトを作成することができました。"田中"、"山本"、"高橋"のそれぞれにインデックスが付与されます。さらにSeriesオブジェクトはNumPyと同様にdtypeを持ちます。


上記の例ではリストからSeriesを生成しましたが、以下のように配列からSeriesを作成することもできます。

  1. import pandas as pd
  2. import numpy as np
  3. series = pd.Series(np.arange(0, 31, 5))    # 配列を指定
  4. print(series)
0 0 1 5    # 配列からSeriesを生成 2 10 3 15 4 20 5 25 6 30 dtype: int64

上記のように配列からSeriesを作成することもできます。
ちなみに np.arange(0, 31, 5) では0から30の数値を5ずつ増加させた配列(等差数列)を作成しています。

インデックスの指定

これまで見てきたSeriesの作成では自動的にインデックスが付与されていましたが、インデックスには任意の文字列や数値を指定することが可能です。

インデックスに任意の文字列を指定するには以下のようにpd.Series()の引数にindexを指定します。

  1. series = pd.Series([3, 6, 9], index=["a", "b", "c"])
  2. print(series)
a 3    # インデックスを指定 b 6 c 9 dtype: int64

上記ではpd.Series()の引数にindexを指定したためインデックスがそれぞれ"a" , "b" , "c"となりました。


また、以下のようにindexに配列を指定することも可能です。

  1. arr = np.array([10, 20, 30])
  2. series = pd.Series([3, 6, 9], index=arr)
  3. print(series)
10 3 20 6 30 9 dtype: int64

indexに配列を指定することでインデックスの値を指定することができました。

dtypeの指定

続いてdtypeを指定する方法についても見ていきましょう。
(dtypeを指定する方法についてはNumPyと同じです読み飛ばしていただいても構いません。)

以下のように、Seriesは引数にdtypeを指定することができます。

  1. series = pd.Series([5, 10, 15], dtype="int32")
  2. print(series)
0 5 1 10 2 15 dtype: int32    # dtypeをint32に指定

引数にint32を渡すことでdtypeを指定することができました。

また以下はdtypeの一覧です。(NumPyと同じです。)

dtype 説明
int8~64 整数
float16~128 浮動小数点数
uint8~64 符号無し整数
complex64~256 複素数
object Pythonオブジェクト型
bool 真偽値

上記の表では簡略化のため「8~64」というような表記をしていますが、
例えばint型であれば「int8, int16, in32, int64」を使うことができるという意味となります。「8~64」の56通りがあるわけではありませんので注意してください。

まとめ

このレッスンではSeriesを作成する方法を学習しました。
要点を以下にまとめます。

  • SeriesはNumPyとよく似たデータ構造であるが、インデックスが明示的に付与されるという点や、様々なデータを扱うことができるという特徴がある
  • Seriesを作成するにはpd.Series()の引数にリストか配列を渡す
  • Seriesのindexには任意の数値や文字列を指定することができる。

ではこのレッスンは以上となります。演習課題にチャレンジしましょう。

Lesson1

まずはpandasをpdとしてインポートしてください。

Lesson2

以下のSeriesオブジェクトを生成し、出力してください。

なお、Seriesの引数に渡すリストにはエディタ上に用意してあるnamesを使用してください。

0 田中 1 山田 2 高橋 dtype: object

Lesson3

以下のSeriesオブジェクトを生成し、出力してください。

a 田中 b 山田 c 高橋 dtype: object

Last updated:2019/11/4

0    田中
1    山田
2    高橋
dtype: object
a    田中
b    山田
c    高橋
dtype: object
  1. # 1. pandasをpdとしてインポートしてください

  2. import pandas as pd

  3. # 2. 指定したSeriesオブジェクトを生成し出力してください
  4. names = ["田中", "山田", "高橋"]

  5. series1 = pd.Series(names)
  6. print(series1)

  7. # 3. 指定したSeriesオブジェクトを生成し出力してください

  8. series2 = pd.Series(names, index=["a", "b", "c"])
  9. print(series2)
main.py
設定
g
n
i
d
a
o
L