機械学習させるExcelデータは、Pandasで取り込むと簡単

機械学習させるデータをExcelでまとめる方は多いです。Pythonを利用する上で、Excelデータを取り込む方法は何種類か存在しますが、機械学習で利用する場合はPandasで取り込むと非常に便利です。 https://pandas.pydata.org/ Pandas

Pandasとは

Pandasでは、ExcelのほかCSVやMySQLなどのデータベースなど、いろいろなフォーマットのデータを取り込むことができます。また取り込んだデータを操作することもできます。Pandasに取り込んだデータは、解析するためNumPyへのデータ変換の機能も用意されています。またPandasのコアはNumPyと同様にC言語で実装されているため、処理速度は高速です。ここではExcelデータをPandasに取り込む方法、NumPyへのデータ変換方法を紹介します。

Pandasのインストール

Pandasはpipなどを利用してインストールすることができます。またExcelファイルを扱う場合は、内部でxlrdも利用していますので、一緒にインストールしましょう。下記はpip3を利用していますが、環境に合せてインストールを行って下さい。
pip3 install pandas, xlrd

ExcelデータをPandasに取り込む

今回サンプルとして利用するデータを用意します。どのようなデータでも結構ですが、文部科学省が公開している日本食品標準成分表です。下記はwgetによりデータをダウンロードしている例です。
wget http://www.mext.go.jp/component/a_menu/science/detail/__icsFiles/afieldfile/2016/01/15/1365344_1-0207r.xlsx
それではPandasを利用してみましょう。といっても取り込むだけですと非常に簡単です。excel.pyファイルを用意し、下記のコードを入力して下さい。
import pandas as pd

df = pd.read_excel('./1365344_1-0207r.xlsx')
print(df.head(10))
1行目でpandasを読み込んでいます。また一般的にpandasはpdと略されます。Excelファイルを読み込むには read_excel 関数を利用します(3行目)。ファイル名を指定するだけで大丈夫です。このファイルはデータ量が多いため、先頭から10行を取得するようにしています(4行目)。結果は次のように表示されます。
  日本食品標準成分表2015年版(七訂) Unnamed: 1 Unnamed: 2     Unnamed: 3 Unnamed: 4    Unnamed: 5                   ...                   Unnamed: 62 Unnamed: 63 Unnamed: 64 Unnamed: 65 Unnamed: 66                          更新日:2016年1月15 
日
0                  本表        NaN        NaN            NaN        NaN           NaN                   ...                           NaN         NaN         NaN         NaN         NaN                                     NaN
1              07 果実類        NaN        NaN            NaN        NaN           NaN                   ...                           NaN         NaN         NaN         NaN         NaN                                     NaN
2                 食品群       食品番号       索引番号            食品名      廃 棄 率           NaN                   ...                           NaN         NaN         NaN         NaN         NaN                                      備考
3                 NaN        NaN        NaN            NaN        NaN   エネルギー(kcal)                   ...                       ポリフェノール          酢酸         調理油         有機酸       重量変化率                                  
   NaN
4                 NaN        NaN        NaN       Tagnames     REFUSE  ENERC_\nKCAL                   ...                     POLYPHENT       ACEAC           -          OA           -                                     NaN
5                 NaN        NaN        NaN             単位          %    kcal/100 g                   ...                       g/100 g     g/100 g     g/100 g     g/100 g           %                                     NaN
6                  07      07001        751    あけび 果肉 生             0            82                   ...                             -           -           -           -           -  試料: みつばあけび\n全果に対する割合: 果肉 20 
%、種子 7 % 
7                  07      07002        752    あけび 果皮 生             0            34                   ...                             -           -           -           -           -  試料: みつばあけび\n全果に対する割合: 果皮 70 
%、へた 3 % 
8                  07      07003        753  アセロラ 酸味種 生            25            36                   ...                             -           -           -           -           -                 試料: 冷凍品\n廃棄部位: 果柄 
及び種子 
9                  07      07159        754  アセロラ 甘味種 生            25            36                   ...                             -           -           -           -           -                 試料: 冷凍品\n廃棄部位: 果柄 
及び種子 
[10 rows x 68 columns]

NumPyへの変換

Pandasで用意したデータを算術計算させるためにNumPyを利用したいケースは往々にしてあるでしょう。そのため、Pandasにはnumpy.ndarrayに変換する機能がよういされています。次のコードを記述しましょう。
import pandas as pd

df = pd.read_excel('./1365344_1-0207r.xlsx')
df1 = df.iloc[[6,7,8],[3,5]].values

print(df1)
print(type(df1))
このExcelファイルには多くのデータがあるため、4行目で一部の行、一部の列のみ取得するようにしました。またPandasからNumPyへの変換はvaluesプロパティを使用します。その結果を6行目で出力しています。また参考までにそのデータ形式を7行目で表示しています。結果は次のように表示されます。
[['あけび\u3000果肉\u3000生\u3000\u3000\u3000' 82]
 ['あけび\u3000果皮\u3000生\u3000\u3000\u3000' 34]
 ['アセロラ\u3000酸味種\u3000生\u3000\u3000\u3000' 36]]
<class 'numpy.ndarray'>
4行目にデータのタイプが numpy.ndarrayと表示されており、NumPyの形式に変換されたことがわかります。

まとめ

上記の例から、Pandasの利用が容易であることが判って頂けたものと思われます。Pandasには上記以外にも多数の機能が備わっています。機械学習するのであれば、ぜひ利用してみて下さい。
» お仕事のご依頼はこちら