DataFrame(データフレーム)入門:基本的な使い方を総まとめ!

Pandas(パンダス)でもっとも使用するDataFrame(データフレーム)の基本的な使い方をまとめてみました。DataFrameの前提となるSeries(シリーズ)をまだ学習していない方は、こちらの記事を読んでから本記事を読むと、理解しやすくなると思います。

【Pandas】Series(シリーズ)の基本的な使い方まとめ

DataFrameとは?

Pandasには2つの主要なデータ構造があります。前回ご紹介したSeriesは1次元で、今回解説するDataFrameは2次元のデータ構造となります。具体的には、エクセルやスプレッドシートを想像していただくと、DataFrameを理解しやすいかと思います。


DataFrameをマスターする

1. DataFrameを作成する

list型で作成する

list型は直感的で分かりやすいのではないでしょうか。よく例としてnumpyのランダム関数を用いたものがありますが、今回はシンプルなサンプルを用意しました。

>>> import numpy as np
>>> import pandas as pd

>>> lists =[[1, 2, 3],[50, 60, 70]]
>>> df1 = pd.DataFrame(lists)
>>> df1
	0	1	2
0	1	2	3
1	50	60	70

dict型で作成する

Seriesを学習した方は馴染みのある形ではないでしょうか。Seriesを複数集めてDataFrameを作成するイメージです。

>>> data = {"year": [2015, 2016, 2017, 2018], "pref": ["千葉", "山口", "岐阜", "東京"]}
>>> df2 = pd.DataFrame(data)
>>> df2
	pref	year
0	千葉	2015
1	山口	2016
2	岐阜	2017
3	東京	2018

2. DataFrameにカラムとインデックスをつける

indexを使いインデックスを、columnsを使ってカラム名を付けることができます。

>>> lists =[[1, 2, 3],[50, 60, 70]]
>>> df1 = pd.DataFrame(lists)
>>> df1.index = ["alpha", "beta"]
>>> df1.columns = ["A", "B", "C"]
>>> df1
	A	B	C
Jan	1	2	3
Feb	50	60	70

また、DataFrameの作成と同時にカラム名を付ける方法は以下のようにする。

>>> df3 = pd.DataFrame([["001", "Taro"], ["002", "Jiro"]], columns=['id', 'name'])
>>> df3
	id	name
0	001	Taro
1	002	Jiro

3. DataFrameに列や行を追加する

作成したDataFrameに列や行を追加したい時にはどうするか見ていきましょう。

行を追加する

append()で新しい行を加えることができます。

>>> df4 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
>>> df5 = pd.DataFrame([[5, 6]], columns=list('AB'))
>>> df4.append(df5)
	A	B
0	1	2
1	3	4
0	5	6

列を追加する

列の追加はSeriesを追加するイメージです。新しいカラム名に対しての値を入力しましょう。

>>> df3 = pd.DataFrame([["001", "Taro"], ["002", "Jiro"]], columns=['id', 'name'])
>>> df3
	id	name
0	001	Taro
1	002	Jiro

>>> df3['job'] = ["Engineer", "Sales"]
	id	name	job
0	001	Taro	Engineer
1	002	Jiro	Sales

4. DataFrameの列名と行名を確認する

DataFrameのカラム名とインデックス名を知りたいときは、columnsindexが便利です。

>>> df3 = pd.DataFrame([["001", "Taro"], ["002", "Jiro"]], columns=['id', 'name'])
>>> df3
	id	name
0	001	Taro
1	002	Jiro

>>> df3.columns
Index(['id', 'name', 'job'], dtype='object')

>>> df3.index
RangeIndex(start=0, stop=2, step=1)

5. DataFrameの値のみを表示する

値のみの表示をするには、valuesを使います。

>>> df3.values
array([['001', 'Taro', 'Engineer'],['002', 'Jiro', 'Sales']], dtype=object)

6. DataFrameの先頭N行を表示する

head()メソッドでDataFrameの先頭からN行を取り出すことができます。行数指定を省略した場合には、先頭から5行を取り出します。

>>> df5 = pd.DataFrame([["001", "Taro"], ["002", "Jiro"], ["003", "Ayako"],["004", "Satomi"], \
                    ["005", "Shinji"], ["006", "Kyoko"], ["007", "Misato"]], columns=['id', 'name'])
>>> df5
	id	name
0	001	Taro
1	002	Jiro
2	003	Ayako
3	004	Satomi
4	005	Shinji
5	006	Kyoko
6	007	Misato

>>> df5.head(3)
	id	name
0	001	Taro
1	002	Jiro
2	003	Ayako

>>> df5.head()
	id	name
0	001	Taro
1	002	Jiro
2	003	Ayako
3	004	Satomi
4	005	Shinji

7. DataFrameの末尾N行を表示する

tail()メソッドでDataFrameの末尾からN行を取り出すことができます。行数指定を省略した場合には、末尾から5行を取り出します。

>>> df5 = pd.DataFrame([["001", "Taro"], ["002", "Jiro"], ["003", "Ayako"],["004", "Satomi"], \
                    ["005", "Shinji"], ["006", "Kyoko"], ["007", "Misato"]], columns=['id', 'name'])
>>> df5
	id	name
0	001	Taro
1	002	Jiro
2	003	Ayako
3	004	Satomi
4	005	Shinji
5	006	Kyoko
6	007	Misato

>>> df5.tail(3)
	id	name
4	005	Shinji
5	006	Kyoko
6	007	Misato

>>> df5.tail()
	id	name
2	003	Ayako
3	004	Satomi
4	005	Shinji
5	006	Kyoko
6	007	Misato

8. 基本統計量を表示する

describe()メソッドを使用すると、件数 (count)、平均値 (mean)、標準偏差 (std)、最小値(min)、第一四分位数 (25%)、中央値 (50%)、第三四分位数 (75%)、最大値 (max) を表示することができます。

numpyを使ってサンプルを作ってみました。

>>> import numpy as np
>>> df6 = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
>>> df6
	A	B	C	D
0	0.198938	-0.901343	-0.383233	0.900738
1	-0.257999	-1.636309	-0.207512	1.135665
2	-0.715305	1.461371	0.240047	-1.427587
3	-0.140254	-1.669720	1.425515	-1.069966
4	0.402381	-2.242004	0.907726	-1.998505
5	1.714907	0.889596	-1.498983	-0.165695

>>> df6.describe()
	A	B	C	D
count	6.000000	6.000000	6.000000	6.000000
mean	0.200445	-0.683068	0.080593	-0.437558
std	0.836567	1.512082	1.030688	1.277234
min	-0.715305	-2.242004	-1.498983	-1.998505
25%	-0.228562	-1.661367	-0.339303	-1.338182
50%	0.029342	-1.268826	0.016268	-0.617830
75%	0.351520	0.441861	0.740807	0.634130
max	1.714907	1.461371	1.425515	1.135665

まとめ

DataFrameの基本的な使い方を解説してきました。最後にこの記事のまとめを書いておきます。

覚えておきたいポイント
  • pd.DataFrame()でDataFrameを作成できる
  • indexでindexを付与できる
  • append()で新しい行を追加できる
  • valuesで値のみのデータ抽出できる
  • head()で先頭のN行を確認できる
  • tail()で末尾のN行を確認できる
  • describe()で基本統計量を表示する