Pandasについての記事をシリーズで書いています。
今回の記事は第10回目になります。
今日から少しの間、Pandasの基本となる2つのデータストラクチャ―のうちの1つである『DataFrame』についての記事を書いていきます。
(PandasではSeries とDataFrameの2つが主要なデータストラクチャ―と考えられ用いられています。Seriesに関してはno.9 以下の記事をご覧ください。)
少し古いですが2008年のMLBのデータを使いますね。
MLB選手のそれぞれのデータが出ていて面白いと思います(マネーボールという映画を思い出しました。(笑)統計学を使って弱小チームを優勝に導いた実話をもとにした映画です)
では、さっそくMLBの選手を分析しつつDataFrameの解説をしていきますね。
※今回のデータは下記のようなCSVデータになります
#SeriesとDataFrameの違い
Series とDataFrame の違いを簡単に言うなら
DataFrame がエクセルシートのシート全体
Seriesがエクセルの各コラム
になりますが、もう少し詳しく深堀りしてみましょう
Pandas のドキュメントから、SeriesとDataFrame についての定義を抜粋してみました。
引用元:Pandasドキュメント
Two dimensional(2次元の) とか One dimensional(1次元の) とかって具体的にどういうことでしょうか?
##One dimensional とは?
先ほど、Series とはエクセルシートの1コラムだけで作られたオブジェクトだということを申し上げました。
Series とは上のスクショのような構造になっています。
例えば上記のような構造になっているSeriesの中の、あるアイテムを特定したい時は、左横のrowの数値のみを指定すれば足りますよね。
なので、Series は One dimensional なデータだと定義されているのです。
##Two dimensional とは?
Pandas で作るDataFrame オブジェクトはTwo dimensional と定義されています。
例えば上記の例で『green tea』を指定するには、
rowと
column名
の二つを指定しなければいけません。
なのでTwo dimensional なデータです。
DataFrame はエクセルシート全体だと便宜上申し上げましたが、必ずしもデータの全部のみがDataFrame なのではなく、データを一部分だけ使うとしても、もし2つのポイントを指定しなければいけない時は『DataFrame』になりますので、そちらの理解でよろしくお願いします。
#SeriesとDataFrameで共通して使えるアトリビュートとメソッド
SeriesとDataFrameは分けて考える必要があります。
なぜならば、SeriesとDataFrameでは、使えるアトリビュートとメソッドが違う場合があるからです。
『違う場合がある』と言ったのは、一方では共通して使えるアトリビュートとメソッドもあります。
では共通して使えるアトリビュートとメソッドを下記に書いていきますね。(基本的な物だけを並べたので、もう少し詳しく知りたい方は、Pandasのドキュメントを見てくださいね)
Series と同じ要領でCSVファイルを読み込みます
(CSVファイルの読み込み方が分からない方はこちらの記事を参考にどうぞ)
実行結果は下記のようになりました。
##head()
引用元:Pandasドキュメント
head()メソッドは、データの最初の行5行分の値を返してくれます
デフォルト値は5でして、あなたの表示したい行数を引数に取るとその行分のデータを返してくれます。
実行結果は下記のようになります
##tail()
head()が最初の5行なら、tail()は最後の5行を返してくれます。
それ以外はhead()メソッドと同じなので詳しい説明は端折りますね。
##index
index はrow に自動的に記載されるindex についての情報を返してくれます
start =row の始まりの数字
stop= row の終わりの数字
step =いくつづつインデックスの数字が増えているか
##values
ラップしているデータ配列を取り出してくれます
データのrow数(何列のデータなのか?)と
データのcolumn数(何行のデータなのか?)
をタプルで返してくれます
##dtypes
Series の場合はコラムが1行だけなので dtype ですが、DataFrame はコラムが2行以上になるので
dtypes
と複数形になります
それぞれのコラムがどのデータ型になるか(integer(整数) なのかfloat(小数点)なのかなど)を返してくれます。
#DataFrame に独自のアトリビュート
##columns
Series にはそもそもcolumnが1行しかないので、columnsというアトリビュートはDataFrameに独自の物になります
columnsでは、コラム名を返してくれます
#まとめ
今回はこれくらいで終わりにします。
DataFrame の基礎の基礎だけお伝えさせていただきました。
次回はもう少し詳しく掘り下げていこうと思います
よろしくお願いします!