ぺーぺーSEのブログ

備忘録・メモ用サイト。

リスト、NumPy、Pandas間の変換

リスト(Python標準)、ndarray(NumPy)、Series(Pandas)、DataFrame(Pandas)間での変換についてまとめる。
はじめに、前提として下記のインポート、データ定義等があるとする。

import numpy as np
import pandas as pd

_1dlist = [1, 2, 3]
_2dlist = [[1, 2, 3], [4, 5, 6]]

# NumPy
_1darray = np.array([4, 5, 6])
_2darray = np.array([[1, 2, 3],
                     [4, 5, 6]])
_3darray = np.array([[[1, 2],  [3, 4]],
                     [[5, 6],  [7, 8]],
                     [[9, 10], [11, 12]],
                     [[13, 14],[15, 16]]])

# Pandas
_series = pd.Series([7, 8, 9])
_dataframe = pd.DataFrame([[1, 2, 3],
                           [4, 5, 6],
                           [7, 8, 9]])

リスト(Python標準)への変換

ndarray(NumPy)から

Python標準リスト変換『list()』は、多段の変換まではサポートされない。『tolist()』で変換する。

list(_1darray)
# Out[*]: [4, 5, 6]
list(_2darray)
# Out[*]: [array([1, 2, 3]), array([4, 5, 6])]
list(_3darray)
# Out[*]: [array([[1, 2], [3, 4]]),
#          array([[5, 6], [7, 8]]),
#          array([[ 9, 10], [11, 12]]),
#          array([[13, 14], [15, 16]])]
_1darray.tolist()
# Out[*]: [4, 5, 6]
_2darray.tolist()
# Out[*]: [[1, 2, 3], [4, 5, 6]]
_3darray.tolist()
# Out[*]: [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]], [[13, 14], [15, 16]]]

Series、DataFrame(Pandas)から

adarray(NumPy)へ変換してからリストへ変換する。

_series.values.tolist()
# Out[*]: [7, 8, 9]
_dataframe.values.tolist()
# Out[*]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
_series.as_matrix().tolist()
# Out[*]: [7, 8, 9]
_dataframe.as_matrix().tolist()
# Out[*]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

adarray(NumPy)への変換

リスト(Python標準)から

普通にリストからndarrayを作成する。

np.array(_1dlist)
# Out[*]: array([1, 2, 3])
np.array(_2dlist)
# Out[*]: array([[1, 2, 3], [4, 5, 6]])

Series、DataFrame(Pandas)から

.values』から取得、もしくは『as_matrix()』で変換する。

_series.values
# Out[*]: array([7, 8, 9], dtype=int64)
_dataframe.values
# Out[*]: array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=int64)
_series.as_matrix()
# Out[*]: array([7, 8, 9], dtype=int64)
_dataframe.as_matrix()
# Out[*]: array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=int64)

Series、DataFrame(Pandas)への変換

リスト(Python標準)から

普通にリストからSeries、DataFrameを作成する。

pd.Series(_1dlist)
# Out[*]:
# 0    1
# 1    2
# 2    3
# dtype: int64
pd.DataFrame(_2dlist)
# Out[*]:
#    0  1  2
# 0  1  2  3
# 1  4  5  6

ndarray(NumPy)から

リストからと同様、普通にSeries、DataFrameを作成する。

pd.Series(_1darray)
# Out[*]:
# 0    4
# 1    5
# 2    6
# dtype: int32
pd.DataFrame(_2darray)
# Out[*]:
#    0  1  2
# 0  1  2  3
# 1  4  5  6