リスト、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