とんてき

Ruby, Ruby on Railsやその周辺技術を中心に。ときどき趣味のことも。

numpyとpandasのデータ変換がややこしいので整理する

numpyとかpandasとかややこしいので簡単に整理します。

はじめに

先々月くらいから突然機械学習にハマり、独学で勉強をしているtontekiです。
一通り基礎的な内容は勉強したので、kaggle(データサイエンスのコンペサイト)でデータ予測をする中で、より実践的な内容を勉強しようと思っています。

で早速有名な「Digit Recognizer」と呼ばれる、0〜9の数字を認識するコンペに参加したのですが、
実際自分で考えながらやってみるとnumpyとpandasのデータの変換に苦戦したので、学んだことを纏めたいと思います。

pandasからnumpyへの変換

# 0 ~ 9 のnumpy配列を生成
[In]
numpy_array = np.arange(10)p
numpy_array

[Out]
[0 1 2 3 4 5 6 7 8 9]

# データの型を表示
[In]
type(numpy_array)

[Out]
<class 'numpy.ndarray'>

# numpy配列をpandasのseriesに変換
[In]
series_array = pd.Series(numpy_array_1)
series_array

[Out]
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64

# データの型を表示
[In]
type(series_array)

[Out]
pandas.core.series.Series

# 0 ~ 19 の2次元のnumpy配列を生成
[In]
numpy_array_2 = np.arange(20).reshape(4, 5)

# 2次元のnumpy配列をpandasのDataFrameへ変換
[In]
pandas_array = pd.DataFrame(numpy_array_2)
pandas_array

[Out]
        0	1	2	3	4

0	0	1	2	3	4
1	5	6	7	8	9
2	10	11	12	13	14
3	15	16	17	18	19

numpyからpandasへの変換

# pandasのDataFrameからnumpyへ変換
[In]
numpy_array = pandas_array.values
numpy_array

[Out]
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

# データの型を表示
[In]
type(numpy_array)

[Out]
numpy.ndarray

終わりに

自分が今どっちのデータを扱っているかわからなくなった時は、「typeメソッド」を使うといいですね。
ものすごい基礎中の基礎な内容ですが、今後いろんなデータを扱う中で、意識せずにスムーズにデータ変換できるようになりたいです。