【Python】Pandas Seriesの作成:リストからの生成とdtypeによる型指定

Pythonのデータ分析ライブラリPandasにおいて、データを扱うための基本単位となるのが Series(シリーズ)と DataFrame(データフレーム)です。

  • DataFrame: 行と列を持つ2次元の表形式データ。
  • Series: インデックス(ラベル)が付与された1次元の配列データ。

DataFrameは複数のSeriesが列として結合されたものと考えることができます。そのため、Seriesの生成方法やデータ型(dtype)の制御を理解することは、Pandasを使いこなすための第一歩となります。

本記事では、リストからSeriesを作成する基本的な方法と、生成時にデータ型(整数、浮動小数点、日時)を明示的に指定する方法について解説します。

目次

Series生成の基本構文

Seriesは pd.Series() コンストラクタを使用して生成します。最も基本的な使い方は、Pythonのリストを渡す方法です。また、index 引数を使用することで、各データに対するラベル(インデックス)を自由に設定できます。

データ型の指定(dtype)

Pandasは通常、入力データから自動的に適切なデータ型を推論します。しかし、メモリ効率や計算の都合上、特定の型(floatdatetime など)を強制したい場合は、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]

ポイントの解説

  1. インデックスの役割: Student_A などのインデックスを設定することで、辞書のようにラベルでデータにアクセスできるようになります。
  2. int64float64: 整数のリストであっても、dtype を指定することで最初から浮動小数点型としてデータを保持できます。これは欠損値(NaN)を含む可能性がある場合や、後の計算で小数を扱う場合に有用です。
  3. datetime64[ns]: 時系列データを扱う際、文字列(object型)のままだと時間の計算ができません。Series作成時にこの型を指定することで、時間差の計算や期間によるフィルタリングが可能になります。

Pandasでのデータ処理において、正しいデータ型でSeriesを作成することは、エラーを防ぎ処理速度を向上させるために重要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次