DataFrameの作成

pandasでデータを操作するときに主に使用することになる(と思っている)DataFrameについてまとめていきます。

今回は主にDataFrameの作成方法についてです。こちらを参考にしています。

DataFrameコンストラクタ

DataFrameクラスは大まかにいえばデータベースのテーブル、2次元配列に相当するものです。概ね以下のような構成になっています。

・data:データ本体です。

・index:行名に相当するものです。

・columns:列名に相当します。

・dtype:テーブル内にあるデータの型です。

画像1

DataFrameのコンストラクタは以下のような引数を取ります。

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

・data
 型 : Numpy配列、配列、辞書型、DataFrame
 データの部分に相当します。通常の配列のほか、Numpy配列、辞書、DataFrameを引数として取ることができます。

・index
 型 : Indexオブジェクト、配列
 行ごとのラベルを指定します。指定がない場合は、0からの連番になります。

・columns
 型 : Indexオブジェクト、配列
 列ごとのラベルを指定します。指定がない場合は、0からの連番になります。

・dtype
 型 : dtype
 データの型を指定します。1つしか指定できません。指定がない場合は推測します。

・copy
 型 : bool
 データからコピーするかどうかを指定する、とのことですが良く分からないので、もう少し調べて追記します。

dtypeアトリビュートでデータ型を、shapeアトリビュートでテーブルのサイズを調べることができます。

DataFrame作成

配列に相当するデータを引数に取ることで作成できます。何も指定しなければ空のDataFrameになります。

pythonコード

# 空のDataFrame
df = pandas.DataFrame()
print(df)

出力

Empty DataFrame
Columns: []
Index: []

DataFrame作成(2次元配列)

2次元配列からDataFrameを作成して、データ型とサイズを確認してみます。

pythonコード

# 2次元配列を準備
list_data = [
            [1, "A", 1.23],
            [2, "B", 2.34],
            [3, "C", 3.45],
            [4, "D", 4.56],
            [4, "E", 5.67],
]

# 2次元配列からDataFrameを作成
df = pandas.DataFrame(list_data)
print(df)

出力

   0  1     2
0  1  A  1.23
1  2  B  2.34
2  3  C  3.45
3  4  D  4.56
4  4  E  5.67

pythonコード

# dtypeを確認します
print(df.dtypes)

print("--------")

# サイズを確認します
print(df.shape)

出力

A    int64
B    int64
C    int64
dtype: object
--------
(3, 3)

DataFrame作成(辞書型)

辞書型からDataFrameを作成することもできます。このとき辞書のキーはcolumnsとなります。

pythonコード

# 辞書型データからDataFrameを作成
dict_data = {
   "a":[1, 2, 3],
   "b":[4, 5, 6]
}
df = pandas.DataFrame(dict_data)
print(df)

出力

   a  b
0  1  4
1  2  5
2  3  6

DataFrame作成(リスト内の辞書型データ)

辞書型データを入れたリストから作成することもできます。

pythonコード

# リスト内の辞書型データからDataFrameを作成
# それぞれの辞書型データに対して、わざとキーのデータにしています。
# 該当するdataがない場合は、"NaN"が代入されます。
dict_in_list = [
   {"a":123, "b":234, "c":345},
   {"a":"abc", "b":"bcd", "d":"cde"}
]
df = pandas.DataFrame(dict_in_list)
print(df)

出力

     a    b      c    d
0  123  234  345.0  NaN
1  abc  bcd    NaN  cde

DataFrame作成(辞書内の辞書型データ)

辞書の入れ子のデータから作成することもできます。

pythonコード

dict_data = {
   "A":{"a":123, "b":234, "c":345},
   "B":{"a":456, "b":567, "c":678},
   "C":{"a":789, "b":890, "c":901}
}

df = pandas.DataFrame(dict_data)
print(df)

出力

     A    B    C
a  123  456  789
b  234  567  890
c  345  678  901

index, columnsを指定して作成

データとは別にindex, columnsを指定します。

pythonコード

# index, columnsを指定して、DataFrameを作成
df = pandas.DataFrame(list_data,
                     index=["row1", "row2", "row3", "row4", "row5"],
                     columns=["col1", "col2", "col3"])
print(df)

出力

      col1 col2  col3
row1     1    A  1.23
row2     2    B  2.34
row3     3    C  3.45
row4     4    D  4.56
row5     4    E  5.67

まとめ

・DataFrameはpandasでデータ操作するときの基本的なクラスになります。

・データそのもの以外にも、indexやcolumnsで行列ラベルを指定することができます。

・行列ラベルの指定が無ければ0からの連番で付与されます。

・次回以降はDataFrameの各種操作についてまとめていきます。






この記事が気に入ったらサポートをしてみませんか?