(110) pandasの基本的な使い方:二次元データを扱う

投稿者: | 2019年10月29日

9,527 views

この記事は最終更新から 1642日 が経過しています。

1. やりたいこと

pandasDataFrame 型オブジェクトを作り、二次元データを扱いたい。

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)

★pandas関連の投稿一覧はこちらです。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です