Pythonのデータ分析ライブラリPandasにおいて、データを扱うための基本単位となるのが Series(シリーズ)と DataFrame(データフレーム)です。
- DataFrame: 行と列を持つ2次元の表形式データ。
- Series: インデックス(ラベル)が付与された1次元の配列データ。
DataFrameは複数のSeriesが列として結合されたものと考えることができます。そのため、Seriesの生成方法やデータ型(dtype)の制御を理解することは、Pandasを使いこなすための第一歩となります。
本記事では、リストからSeriesを作成する基本的な方法と、生成時にデータ型(整数、浮動小数点、日時)を明示的に指定する方法について解説します。
目次
Series生成の基本構文
Seriesは pd.Series() コンストラクタを使用して生成します。最も基本的な使い方は、Pythonのリストを渡す方法です。また、index 引数を使用することで、各データに対するラベル(インデックス)を自由に設定できます。
データ型の指定(dtype)
Pandasは通常、入力データから自動的に適切なデータ型を推論します。しかし、メモリ効率や計算の都合上、特定の型(float や datetime など)を強制したい場合は、dtype 引数を使用します。
- 整数のリスト: デフォルトでは
int64になります。 - 浮動小数点:
dtype=np.float64またはdtype='float'と指定します。 - 日時: 文字列の日付データを
dtype='datetime64[ns]'と指定することで、日付計算が可能な形式に変換されます。
実装コード例
以下に、リストからSeriesを生成する3つのパターン(基本、浮動小数点指定、日時型指定)をまとめたコードを示します。
import pandas as pd
import numpy as np
def demonstrate_series_creation():
"""
Pandas Seriesの生成とdtype指定の挙動を確認する関数
"""
print("=== 1. 基本的なSeriesの生成(整数・インデックス指定) ===")
# データリストとインデックスリストの準備
score_data = [85, 92, 78]
student_labels = ["Student_A", "Student_B", "Student_C"]
# Seriesの生成
# index引数を省略すると、0から始まる連番が自動付与されます
series_int = pd.Series(score_data, index=student_labels)
print("--- 生成されたSeries ---")
print(series_int)
print(f"データ型(dtype): {series_int.dtype}\n")
print("=== 2. NumPy型を指定して生成(浮動小数点数) ===")
# dtype引数で np.float64 を指定
# 元のデータが整数でも、強制的に浮動小数点数として扱われます
series_float = pd.Series(score_data, index=student_labels, dtype=np.float64)
print("--- 生成されたSeries ---")
print(series_float)
print(f"データ型(dtype): {series_float.dtype}\n")
print("=== 3. 日時型(datetime64)として生成 ===")
# 日時を表す文字列のリスト
timestamp_strs = [
"2026-04-01 09:00:00",
"2026-04-01 10:00:00",
"2026-04-01 11:00:00"
]
# dtype="datetime64[ns]" を指定して生成
# これにより文字列ではなく、日時オブジェクトとして扱えるようになります
series_date = pd.Series(timestamp_strs, dtype="datetime64[ns]")
print("--- 生成されたSeries ---")
print(series_date)
print(f"データ型(dtype): {series_date.dtype}")
if __name__ == "__main__":
demonstrate_series_creation()
実行結果
=== 1. 基本的なSeriesの生成(整数・インデックス指定) ===
--- 生成されたSeries ---
Student_A 85
Student_B 92
Student_C 78
dtype: int64
データ型(dtype): int64
=== 2. NumPy型を指定して生成(浮動小数点数) ===
--- 生成されたSeries ---
Student_A 85.0
Student_B 92.0
Student_C 78.0
dtype: float64
データ型(dtype): float64
=== 3. 日時型(datetime64)として生成 ===
--- 生成されたSeries ---
0 2026-04-01 09:00:00
1 2026-04-01 10:00:00
2 2026-04-01 11:00:00
dtype: datetime64[ns]
データ型(dtype): datetime64[ns]
ポイントの解説
- インデックスの役割:
Student_Aなどのインデックスを設定することで、辞書のようにラベルでデータにアクセスできるようになります。 int64とfloat64: 整数のリストであっても、dtypeを指定することで最初から浮動小数点型としてデータを保持できます。これは欠損値(NaN)を含む可能性がある場合や、後の計算で小数を扱う場合に有用です。datetime64[ns]: 時系列データを扱う際、文字列(object型)のままだと時間の計算ができません。Series作成時にこの型を指定することで、時間差の計算や期間によるフィルタリングが可能になります。
Pandasでのデータ処理において、正しいデータ型でSeriesを作成することは、エラーを防ぎ処理速度を向上させるために重要です。
