Tensorflowを使用する場合は学習データをPandasのデータフレームとして渡すことがほとんど(全部?)そのため、Pandasのデータフレーム操作を理解しておかないとデータ用意部分に時間がかかってしまい、機械学習に対してのモチベーションが下がってしまいます。
Pandasのデータ構造部分について、最低限理解する必要なところを書いておきます。
データ読み込み
学習データはCSVファイルから読み込むのが楽です。データ量にもよりますが、私は一度CSVファイルを作成しデータを読み込ませるようにしています。
import pandas as pd data = pd.read_csv("data.csv") data.head()
PandasではCSVファイルの1行目が列名として使用されます。1行目には列名を記載しておくと問題が起こりにくいです。この場合は「data1」「data2」をCSVファイルの1行目に書いていますのでこれが列名として使われます。
data1 | data2 | data3 | data4 |
a | aa | aaa | aaaa |
b | bb | bbb | bbbb |
b | bb | bbb | bbbb |
実際にデータ読み込みを行う場合、私はinfo情報も参照するようにしています。
読み込んだデータの列情報が表示されますので、全部の列が読み込まれたかどうかを確認しておきましょう。
data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 data1 3 non-null object 1 data2 3 non-null object 2 data3 3 non-null object 3 data4 3 non-null object dtypes: object(4) memory usage: 224.0+ bytes
データ参照
データ参照は色々やり方がありますので自分が合っている方法を見つけたほうがいいと思います。後はサンプルコードでよく使われているものを理解して流用できるようにするか。
行単位でデータを取得する場合は行番号を指定します。これは配列と同じ形で0からインデックス番号が始まります。
data.iloc[[0]] data.iloc[[1]]
この方法だと、列指定方法は以下になります。「:,」がすべての行を表し、その後が列番号指定になります。なんでこうなるか?と考えてもいいんですが、決め打ちで覚えてしまっても問題無いと思います。
data.iloc[:,[0]]
ピンポイントで要素を指定する場合は以下のようになります。この場合は「bbb」にアクセスする形になります。ここまで理解しておけば配列と同じ感覚で操作できるようになると思います。
data.iloc[[1],[2]]
コメント