今回は、機械学習のアウトプットとして、データの整形の処理方法について解説していきたいと思います。
具体的には、pandasを使ってCSVファイルを列単位で分割する処理「loc」と「iloc」の使い方を紹介します。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
サンプルソースを読むうえで理解しておきたいこと
基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。
pandasのインストール
pandasはインストールが必要なので以下のエラーが出る場合は、インストールしてください。
エラー内容
ModuleNotFoundError: No module named 'pandas'
インストールコマンド
pip install pandas
分割対象のCSVファイル
レイアウト的に見にくくなってしまっているのですがCSVファイルのヘッダーは左から「 Japanese 」、「 Mathematics 」、「English」となっています。
CSVファイルは「国語」、「数学」、「英語」の三教科の点数を表しています。
点数は10から100までの数字が10点間隔でランダムに設定されています。
このデータの作り方については「Pythonで機械学習用のCSVファイルを作成する」で説明してあります。興味のある方は読んでみてください。
ヘッダー名を指定してデータ分割する方法
以下のサンプルソースはpandasを読み込んでカラム単位でデータを操作する処理についてのサンプルソースです。
これを使うと、「数学」の点数だけ取得するですとか、
あいだの「数学」を飛ばして「国語」と「英語」を取得することが出来ます。
はじめに「pandas」モジュールを使えるようにするためにインポートします。
import pandas as pd
次に、ファイルを読み込みます。「test_data.csv」を読み込みます。
読み込み方法は「pandas」モジュールの「read_csv」を使います。
インポートするときに別名(pd)でインポートしているので「pd.read_csv(“ファイル名”)」で読み込みます。
読み込んだ内容を「test」変数に代入します。
test = pd.read_csv("test_data.csv")
今回は、出力結果が長くなってしまったのでところどころ出力結果を載せていきます。
4行目のprintでは以下の内容が出力されます。

5行目では読み込んだオブジェクトに対して取得したいカラムを指定してデータを取得しています。そして、6行目のprintで出力しています。
a = test.loc[:, ["Japanese"]]print(a)
locの使い方(1カラム)
locの処理を分かりやすく書くとこんな感じです。
取得データ = ファイルを読み込んだオブジェクト.loc[:, ["ヘッダー名"]]
出力結果は以下の通り、「Japanese」だけ出力されています。

複数のヘッダを取得したい場合は、カラムをカンマ区切りで指定すればOKです。
b = test.loc[:, ["Japanese", "Mathematics"]]print(b)
locの使い方(複数カラム)
取得データ = ファイルを読み込んだオブジェクト.loc[:, ["ヘッダー名1","ヘッダー名2"]]
「国語」、「数学」を指定した場合は以下のように出力されます。
スポンサーリンク

カラム番号を指定してデータ分割する方法
カラムの番号を指定してデータを抽出する方法もあります。
この場合は「iloc」を使います。下のサンプルソースは先ほど紹介した「sample_pandas_1.py」の5行目と7行目を少し修正しています。
ilocの使い方(1カラム)
使い方はこんな感じです。
注意点はカラムの番号は「0」から始まるところです。
取得データ = ファイルを読み込んだオブジェクト.iloc[:, ["カラムの番号"]]
ilocの使い方(複数カラム)
取得データ = ファイルを読み込んだオブジェクト.iloc[:, ["カラムの番号1","カラムの番号2"]]
実行結果は、先ほどのサンプルソースと同じで以下のようになります。



まとめ
pandasを使うとCSVファイルのデータ分割が可能
「pandas.read_csv(“対象ファイル”)」でファイルを読み込む
「loc」でカラム名を指定、「iloc」でカラム番号で抽出カラムを指定することが出来る