俺人〜OREGIN〜俺、バカだから人工知能に代わりに頑張ってもらうまでのお話

俺って、おバカさんなので、とっても優秀な人工知能を作って代わりに頑張ってもらうことにしました。世界の端っこでおバカな俺が夢の達成に向けてチマチマ頑張る、そんな小さなお話です。現在はG検定、E資格に合格し、KaggleやProbSpaceのコンペに参画しながら、Pythonや機械学習、統計学、Dockerなどの勉強中です。学習したことをブログにアウトプットすることで、自分の身に着けていきたいと思います。まだまだ道半ばですが、お時間がありましたら見て行ってください。

エピソード2-12: pandasでDataFrameを扱ってみる〜 E資格への道〜

今回は、pandasでDataFrameを扱ってみたいと思います。

DataFrameは、エクセルのように二次元のデータを、行(レコード)と列(項目、カラム)でラベルをつけて、扱えるオブジェクトです。

pandasは、1行のレコードや、1列のカラムを扱う、Seriesというオブジェクトも提供しています。

では、早速試してきます。

 

 0. まずは、numpyライブラリとpandasライブラリをimport。

f:id:kanriyou_h004:20190414183749p:plain
「import numpy as np」とすることで、「np」にて参照し、各種関数や定数を呼び出すことができます。

「import pandas as pd」とすることで、「pd」にて参照し、各種データを扱う関数を呼び出すことができます。

「from pandas import DataFrame,Series」とすることで、DataFrame,Seriesが扱うことができます。 

 1. 二次元のarrayオブジェクトをDataFrameに変換する。

f:id:kanriyou_h004:20190414183328p:plain

randint()の引数に、乱数の範囲と行列のサイズ(5×2)を渡して、サイコロを2個、5回転がした時の出目を、arrayオブジェクトに格納します。

f:id:kanriyou_h004:20190414184324p:plain

DataFrame()の引数に、arrayオブジェクトと、オプションとしてcolumns=[列名,列名,....]を指定することで、行と列にラベルをつけた、DataFrameに変換できます。

行は、0からの数字が自動的に付与されます。

 

2. Seriesオブジェクトから、DataFrameを作成する。

f:id:kanriyou_h004:20190414185155p:plain

Series()の引数に、リストとオプションでname=シリーズの名前を指定することで、名前をつけたSeriesを作成することができます。

まず、都市のSeriesを作成しました。

f:id:kanriyou_h004:20190414190120p:plain
同様に、気温と、湿度のSeriesを作成しました。

欠損は、np.nanで指定することができます。

f:id:kanriyou_h004:20190414190314p:plain

DataFrame()の引数として、ディクショナリ{ }で各列のcolumns名とSeriesオブジェクトを渡すことで、DataFrameが作成できます。
 

3. DataFrameに行を追加する。

f:id:kanriyou_h004:20190414191722p:plain

Series()の引数に追加する1行のリストと、オプションindex=[列名,列名,....]を指定することで、追加する1行分のSeriesを作成します。

「 1. 二次元のarrayオブジェクトをDataFrameに変換する。」で作成した、サイコロ2個5回分のDataFrameに、append()メソッドの引数に、追加する1行分のSeriesと、オプションignore_indes=Trueを指定することで、行が追加されます。

 4. DataFrameに列を追加する。

f:id:kanriyou_h004:20190414192629p:plain

列の追加には、DataFrameオブジェクトのindexにcolumns(列名)を指定して、arrayオブジェクトを渡すことで、追加することができます。

 

 5. DataFrameを結合する。

f:id:kanriyou_h004:20190414205913p:plain

DataFrameのappend()メソッドの引数に、DataFrameを渡すことで、DataFrameの結合ができます。

f:id:kanriyou_h004:20190414210141p:plain

ただし、indexが連番とならないところに注意が必要です。

連番にする場合は、ignore_index=Trueを引数に指定する必要があります。

f:id:kanriyou_h004:20190414210400p:plain

append()メソッドの引数に、オプションignore_index=Trueを指定することで、indexも連番にすることができました。

 

今回は、DataFrameを一通り使ってみました。

エクセルのように、行毎、列毎の処理が便利に使えました。

SQLとも似た色々な処理ができるので、重宝しそうです。

では、引き続き、頑張って勉強していきたいと思います。

 

 2019年3月9日(土)にG検定を受験し、見事合格できました!

受験の体験記や勉強法などを別のブログにまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

g-kentei.hatenablog.com