9,575 views
この記事は最終更新から 1806日 が経過しています。
1. やりたいこと
pandas の DataFrame 型オブジェクトを作り、二次元データを扱いたい。
2. やってみる
まずは Pythonを起動しておく。
$ python Python 3.6.2 |Anaconda custom (64-bit)| (default, Jul 20 2017, 13:51:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
(1) 簡単な二次元データを扱う。
pandas.DataFrame では、二次元データを作れる。
>>> import pandas as pd # pandasパッケージを読み込む。 >>> >>> a = [[1,3,5,7,9,8,6],[20,50,30,40,70,60,90]] # リスト型の配列を作る。 >>> a [[1, 3, 5, 7, 9, 8, 6], [20, 50, 30, 40, 70, 60, 90]] >>> >>> d = pd.DataFrame(a) # pandas.DataFrame型オブジェクトを作り、変数 dとする。 >>> d 0 1 2 3 4 5 6 0 1 3 5 7 9 8 6 1 20 50 30 40 70 60 90
生成されたオブジェクトのデータ型を見てみる。
>>> type(d) <class 'pandas.core.frame.DataFrame'>
データの個数を確認する。
行方向の配列へのアクセスは loc を使用する。
>>> len(d)
2
>>> len(d[0])
2
>>> len(d.loc[0])
7
各要素にアクセスする。
行方向の配列へのアクセスは loc を使用する。
>>> d[0] 0 1 1 20 Name: 0, dtype: int64 >>> d[6] 0 6 1 90 Name: 6, dtype: int64 >>> >>> d.loc[0] 0 1 1 3 2 5 3 7 4 9 5 8 6 6 Name: 0, dtype: int64 >>> d.loc[1] 0 20 1 50 2 30 3 40 4 70 5 60 6 90 Name: 1, dtype: int64
これらの書き方で取得できるオブジェクトは Series型だ。
>>> type(d) <class 'pandas.core.frame.DataFrame'> >>> type(d[0]) <class 'pandas.core.series.Series'> >>> type(d.loc[0]) <class 'pandas.core.series.Series'>
(2) 列名を指定してデータを作る。
文字列リストを作り、これを DataFrame作成時に columns で指定する。
>>> a = [[1,3,5,7,9,8,6],[20,50,30,40,70,60,90]]
>>> b = ['z','c','V','W','u','az','Ko']
>>> d = pd.DataFrame(a, columns=b)
>>> d
z c V W u az Ko
0 1 3 5 7 9 8 6
1 20 50 30 40 70 60 90
列名を使用して各要素にアクセスする。
>>> d['z']
0 1
1 20
Name: z, dtype: int64
>>> d.z # こちらの書き方もできる。
0 1
1 20
Name: z, dtype: int64
>>> d['c']
0 3
1 50
Name: c, dtype: int64
>>> d['Ko']
0 6
1 90
Name: Ko, dtype: int64
>>> d['z'][0] 1 >>> d.z[0] 1 >>> d['z'][1] 20 >>> d['Ko'][1] 90
行方向の配列へのアクセスは loc を使用する。
>>> d.loc[0] z 1 c 3 V 5 W 7 u 9 az 8 Ko 6 Name: 0, dtype: int64 >>> d.loc[1] z 20 c 50 V 30 W 40 u 70 az 60 Ko 90 Name: 1, dtype: int64
>>> d.loc[1][0] 20 >>> d.loc[1][3] 40
列名をリストで指定することにより、指定列だけを抽出できる。
>>> d[['z','c']] z c 0 1 3 1 20 50
columns で列名を読み出す。
>>> d.columns
Index(['z', 'c', 'V', 'W', 'u', 'az', 'Ko'], dtype='object')
shape で行数、列数を読み出す。
>>> d.shape
(2, 7)