▶ Pandasを基本から解説しています。Seriesの基本は以下をご覧ください。
はじめに
Pandasの2つの主要なデータ構造であるSeriesとDataFrameのうち、2次元の表形式のデータを処理する「DataFrame」について基本から解説します。DataFrameとは何かの確認から始めて作り方までをみていきましょう。
DataFrame
DataFrameとは
DataFrameというデータ構造はPandasライブラリの大きな特徴となっています。DataFrameは2次元の表形式のデータを扱うことができます。Seriesのようにラベルを持つことができます。データフレームは2次元なので行方向(インデックス)と列方向(カラム)のラベルを持つことができます。
DataFrameの作り方
DataFrameの作り方もいろいろありますが、大別して以下の2つをおさえておけばよいでしょう。
配列から作る
まずは配列から作る方法を確認していきましょう。ここではndarrayを使って作ってみることにします。
# ライブラリのインポート
import pandas as pd
import numpy as np
# サンプルのndarrayを作成
sample_array = np.arange(0,12).reshape(3,4)
# ndarrayからDataFrameを作成
pd.DataFrame(sample_array)
このように、pd.DataFrame()で2次元のndarrayを指定するとDataFrameを作ることができます。但し、このままでは行ラベル(index) / 列ラベル(columns)ともに連番となるで使いにくいですね。このような場合には、index, columnsを指定することでラベルを付けることができます。
# indexとcolumnsを指定してDataFrameを作成
pd.DataFrame(sample_array,index=['A','B','C'],columns=['key1','key2','key3','key4'])
辞書から作る
次に辞書からDataFrameを作る場合を見ていきましょう。辞書からDataFrameを作る場合、辞書型データが「各レコードに対応している」のか「各カラムに対応している」のかを意識する必要があります。まずは「各レコードに対応している」をみてみましょう。
# 辞書のサンプルデータを作成
dic1 = {
'Name':'らくだ',
'Age':32,
'Zoo':'旭山動物園'
}
dic2 = {
'Name':'ねこ',
'Age':26,
'Zoo':'旭山動物園'
}
dic3 = {
'Name':'しまうま',
'Age':37,
'Zoo':'上野動物園'
}
# 辞書からDataFrameを作る
pd.DataFrame([dic1,dic2,dic3])
DataFrameができましたね。このように辞書のデータが各レコードに対応している場合は、次のような書式でDataFrameを作成することができます。
次に「各カラムに対応している」をみてみましょう。この場合は1つの辞書からDataFrameをつくることができます。
# 辞書データの作成
dic_4 = {
'Name':['らくだ','ねこ','しまうま'],
'Age':[32,26,37],
'Zoo':['旭山動物園','旭山動物園','上野動物園']
}
# 1つの辞書からDataFrameを作成
pd.DataFrame(dic_4)
「各カラムに対応している」というのは、辞書の各valueがリストなどの配列で与えられてデータになっている場合です。このようにカラム(key)に対してデータ(value)が対応している辞書をpd.DataFrame()に指定してDataFrameを作ることができます。
DataFrameの作り方はまだまだ他にもありますが、学び始めの段階ではこのくらいを知っておけばよいでしょう。特に一つの辞書から作るパターンはよく使うので押さえておきましょう。
まとめ
今回はDataFrameの作り方を整理しました。DataFrameの作り方はいろいろありますが、まずはいくつか代表的なものを覚えておけばよいでしょう。今回は配列から作る場合と辞書から作る場合を扱いました。辞書から作る場合は、各レコードと辞書が対応している場合と、辞書のkeyがカラムにvalueがデータに対応している場合を扱いました。
コメント