レッスン1 / 2問目

『DataFrameの作成』

このレッスンからDataFrameについて学習していきましょう。

Seriesでは一次元のデータを扱いましたが、Pandasには二次元のデータを扱うデータ構造も用意されています。その二次元のデータを扱うデータ構造がこのレッスンで学習するDataFrameとなります。

ここでは以下の内容について解説します。

  1. DataFrameとは
  2. DataFrameの作成
  3. indexとcolumns

ではこれらについて順番に見ていきましょう。

DataFrameとは

まずはDataFrameの概要についてです。上述したとおり、Seriesが一次元のデータを扱うデータ構造であったのに対し、DataFrameは二次元のデータを扱うデータ構造です。

また、Seriesではindexを指定することで行に名前を付けることができましたが、DataFrameではindexに加えてcolumnsを指定することで列に名前を付けることができます。これだけではイメージが沸きづらいと思いますので具体的なデータを見ていきましょう。

以下のデータは不動産の成約価格と面積、駅からの距離(分)のデータです。

面積距離価格
物件150㎡5分3500万円
物件240㎡15分2500万円
物件345㎡10分3000万円

DataFrameでは上表のような二次元(2軸)のデータを扱うことができます。上表のデータでは物件が行ごとに一つのデータとなり、データ数が増加するごとに行が増えていくといった具合です。

実際にデータ分析を行う際は、このような二次元のデータを扱うことが多いためDataFrameの理解は非常に重要性が高いといえます。当サイトの機械学習系のレッスンでもほとんどでこのような二次元のデータを扱います。

DataFrameの作成

ではここからはDataFrameを作成する方法についてみていきましょう。

データフレームを作成する方法は基本的にはSeriesと同じです。
pd.DataFrame()の引数にリストか配列を渡します。ここでは以下の2つの作成方法について紹介します。

  • リストからの作成
  • 配列からの作成

ちなみに、辞書からDataFrameを作成することもできます。
ここでは割愛しますが、Series, DataFrameともに辞書から作成することもできるということは覚えておいてください。

リストからDataFrameを作成

ではまずはリストからの作成です。

リストからDataFrameを作成するには以下のようにDataFrameの引数にリストを指定します。

  1. names = [["a", "b", "c"],
  2.        ["d", "e", "f"]]
  3. df = pd.DataFrame(names)    # データフレームを生成
  4. print(df)
0 1 2 0 a b c 1 d e f

上記のようにDataFrameの引数に二次元リストを渡すことでDataFrameオブジェクトを生成することができました。
なお当サイトではDataFrameの変数名をdfとします。

また、上記出力を見ていただくとわかる通り、データの行と列にそれぞれ番号が割り当てられています。行(データ左部)に割り当てられている番号をindexといい、列(データ上部)に割り当てられている番号をcolumnsといいます。
これらindexとcolumnsについては本レッスンで後ほど解説します。

配列からDataFrameを作成

では次はNumPyのndarrayからDataFrameを作成する方法を見ていきましょう。

リストからDataFrameを作成する方法と同じで、以下のようにpd.DataFrame()の引数に配列を渡します。

  1. arr = np.array([["a", "b", "c"],
  2.         ["d", "e", "f"]])
  3. df = pd.DataFrame(arr)    # 配列からDataFrameを生成
  4. print(df)
0 1 2 0 a b c 1 d e f

リストからDataFrameを作成したサイト同様の結果を得ることができました。

indexとcolumns

ここまでDataFrameの基本的な作成方法について見てきました。
上述した通りDataFrameでは行と列の項目に名前をつけることができるという特徴があります。ここではそれらindexとcolumnsについて見ていきましょう。

indexについてはSeriesでも登場しましたが、DataFrameは二次元配列のため新たにcolumsn(列名)が登場します。
index、columnsともに以下のようにpd.DataFrame()の引数に渡すことで指定することができます。

  1. arr = np.array([["a", "b", "c"],
  2.         ["d", "e", "f"]])
  3. df = pd.DataFrame(arr,
  4.          index=["1行目", "2行目"],  # インデックスを指定
  5.          columns=["1列目", "2列目", "3列目"]  # カラムを指定
  6.          )
  7. print(df)
1列目 2列目 3列目 1行目 a b c 2行目 d e f

上記のようにindexとcolumnsを指定することで行と列にそれぞれ項目名が追加されました。
このように行と列にそれぞれ名前をつけることができる点もDataFrameの特徴です。


上記の例は少し実用性に欠ける例でしたので、次は具体的なデータを例にとってindexとcolumnsを見ていきましょう。

以下のデータは不動産の面積、駅からの距離、価格を持つデータです。

  1. data = [[50, 5, 3000],
  2.     [60, 15, 4000]]
  3. df = pd.DataFrame(data, columns=["面積", "距離", "価格"])
  4. print(df)
面積 距離 価格 0 50 5 3000 1 60 15 4000

上記ではcolumnsにそれぞれデータの項目名を指定しています。

このようにDataFrameではインデックスとカラムを操作することによってデータを扱いやすくすることができます。

まとめ

このレッスンではDataFrameの概要、DataFrameの作成、indexとcolumnsについて学習しました。内容を以下にまとめます。

  • DataFrameは二次元のデータを扱うデータ構造である
  • pd.DataFrame()の引数にリスト、配列、辞書を渡すことでDataFrameを作成することができる。
  • pd.DataFrame()の引数にindexとcolumnsを指定することで行と列それぞれの項目名を指定することができる

ではこのレッスンは以上となります。演習課題にチャレンジしましょう。

Lesson1

まずはpandasインポートしてください。

Lesson2

エディタ上にあるdata1を用いて以下のDataFrameを生成し、df1に代入してください。

※このレッスンでは変数df1とdf2に格納された値を判定します。そのため変数名は変更しないでください。

0 1 2 0 a b c 1 a b c

Lesson3

エディタ上にあるdata2を用いて以下のDataFrameを生成し、出力してください。

在庫 価格 りんご 3 150 ばなな 5 200

手順としては以下の通りです。

  1. pd.DataFrame()の引数にデータを指定
  2. indexに"りんご"と"ばなな"を指定
  3. columnsに"在庫"と"価格"を指定

ちなみにcolumnsはcolumn(列)の複数形で、「カラム」と発音します。

Last updated:2019/11/7

0  1  2
0  a  b  c
1  a  b  c
     在庫   価格
りんご   3  150
ばなな   5  200
  1. # 1. pandasをインポートしてください

  2. import pandas as pd

  3. # 2. 指定したDataFrameを出力してください。
  4. data1 = [["a", "b", "c"],["a", "b", "c"]]

  5. df1 = pd.DataFrame(data1)
  6. print(df1)

  7. # 3. 指定したDataFrameを出力してください。
  8. data2 = [[3, 150], [5, 200]]

  9. df2 = pd.DataFrame(data2,
  10. index=["りんご", "ばなな"],
  11. columns=["在庫", "価格"])

  12. print(df2)
main.py
設定
g
n
i
d
a
o
L