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メソッド」を使うといいですね。
ものすごい基礎中の基礎な内容ですが、今後いろんなデータを扱う中で、意識せずにスムーズにデータ変換できるようになりたいです。