PythonのNumpyとPandasの変換について

AI実装検定のご案内

Pythonのデータ処理では NumPyPandas が非常に重要であり、両者を相互に変換するシーンはよくあります。

ここでは、実務で役立つように以下の流れで詳しく解説します。

目次

NumPyとPandasの基本的な違い

NumPy

  • 対象: 数値計算・配列操作
  • 構造: ndarray(多次元配列)
  • 用途: 行列演算、統計処理、数値計算全般
  • 特徴: 軽量で高速。データ型は基本的に均一。

Pandas

  • 対象: 表形式データ(ExcelやCSVのような形式)
  • 構造:
    • Series(1次元:ラベル付き配列)
    • DataFrame(2次元:ラベル付き表形式データ)
  • 用途: データ分析、加工、集計、時系列処理
  • 特徴: 列ごとに異なる型を扱える。ラベル操作が強力。

NumPyは数値処理の土台、Pandasはラベル付きのデータ操作に強いという位置付けです。

NumPy → Pandasへの変換

1次元配列 → Series

import numpy as np
import pandas as pd

# NumPy配列
arr = np.array([10, 20, 30, 40])

# PandasのSeriesへ変換
s = pd.Series(arr)
print(s)

インデックスが自動的に付与されます。

2次元配列 → DataFrame

# NumPy 2次元配列
arr2d = np.array([[1, 2, 3], [4, 5, 6]])

# DataFrameに変換
df = pd.DataFrame(arr2d, columns=["A", "B", "C"])
print(df)

列名やインデックスを自由に指定可能。

Pandas → NumPyへの変換

Series → NumPy配列

s = pd.Series([100, 200, 300])
arr = s.to_numpy()
print(arr)   # [100 200 300]

DataFrame → NumPy配列

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6]
})

arr = df.to_numpy()
print(arr)

to_numpy() が標準的ですが、古いコードでは .values も使われます(推奨は to_numpy())。

よくある実務シーン

  • 機械学習の前処理
    • Pandasでデータを整形
    • NumPy配列に変換してScikit-learnに渡す
    X = df[["A", "B"]].to_numpy() y = df["target"].to_numpy()
  • 数値演算だけしたい場合
    • DataFrame → NumPyに変換して高速計算
    • 計算後に再びDataFrameに戻すことも多い
  • 統計・集計と機械学習の橋渡し
    • Pandasはラベル付きの分析に強い
    • NumPyは効率的な行列処理に強い

変換時の注意点

  • データ型(dtype)の違い
    Pandasは列ごとに型を持つが、NumPy配列は全体で1種類の型に統一される。
    そのため、異なる型が混在していると object 型にまとめられることがあります。
  • 欠損値の扱い
    • NumPy: np.nan(float型でしか扱えない)
    • Pandas: NaNを各列の型に合わせて扱える
  • メモリ効率
    大規模データの場合、NumPy配列の方が効率的。
    ただし、可読性やラベル操作の柔軟さはPandasの方が高い。

まとめ

  • NumPy: 数値処理・高速演算に強い
  • Pandas: 表形式データの加工・ラベル操作に強い
  • 実務では「Pandasで前処理 → NumPyに変換して機械学習」という流れが一般的。

以上、PythonのNumpyとPandasの変換についてでした。

最後までお読みいただき、ありがとうございました。

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