このページでは、Pandas のデータフレームの中身を確認する方法を紹介します。
先頭 N 行を表示する
head([表示する行数]) メソッドでデータフレームの先頭 N 行を切り出すことができます。
>>> import pandas as pd
>>> import numpy as np
# データフレーム df を作成・表示
>>> df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
>>> df
A B C D
0 -1.302844 0.451828 0.620522 0.293057
1 -1.253633 -0.235736 -0.603797 1.420517
2 0.913725 -0.345994 0.316969 0.292689
3 -1.452261 -0.313369 2.530778 -0.236372
4 -0.749982 -0.799720 -0.926150 0.037424
5 1.118875 -0.215985 -0.786076 0.806723
>>> # 先頭 3 行を抽出
>>> df.head(3)
A B C D
0 -1.302844 0.451828 0.620522 0.293057
1 -1.253633 -0.235736 -0.603797 1.420517
2 0.913725 -0.345994 0.316969 0.292689
>>>
>>> # 行数を省略した場合は、先頭 5 行が抽出されます。
>>> df.head()
A B C D
0 -1.302844 0.451828 0.620522 0.293057
1 -1.253633 -0.235736 -0.603797 1.420517
2 0.913725 -0.345994 0.316969 0.292689
3 -1.452261 -0.313369 2.530778 -0.236372
4 -0.749982 -0.799720 -0.926150 0.037424
末尾 N 行を表示する
tail([表示する行数]) メソッドでデータフレームの末尾 N 行を切り出すことができます。
>>> # 末尾 2 行を抽出
>>> df.tail(2)
A B C D
4 -0.749982 -0.799720 -0.926150 0.037424
5 1.118875 -0.215985 -0.786076 0.806723
>>> # 行数を省略した場合は、末尾 5 行が抽出されます。
>>> df.tail()
A B C D
1 -1.253633 -0.235736 -0.603797 1.420517
2 0.913725 -0.345994 0.316969 0.292689
3 -1.452261 -0.313369 2.530778 -0.236372
4 -0.749982 -0.799720 -0.926150 0.037424
5 1.118875 -0.215985 -0.786076 0.806723
基本統計量を算出する
describe() メソッドをで、件数 (count)、平均値 (mean)、標準偏差 (std)、最小値(min)、第一四分位数 (25%)、中央値 (50%)、第三四分位数 (75%)、最大値 (max) を確認することができます。
>>> df.describe()
A B C D
count 6.000000 6.000000 6.000000 6.000000
mean -0.454353 -0.243163 0.192041 0.435673
std 1.165220 0.402260 1.304555 0.593064
min -1.452261 -0.799720 -0.926150 -0.236372
25% -1.290541 -0.337838 -0.740506 0.101240
50% -1.001808 -0.274553 -0.143414 0.292873
75% 0.497798 -0.220923 0.544634 0.678307
max 1.118875 0.451828 2.530778 1.420517
各列の型を確認する
作成したデータフレームの dtypes アトリビュートにアクセスすることで、各列の型 (dtype) を確認することができます。
# データフレーム df2 を作成
>>> df2 = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
# データフレーム df2 を表示
>>> df2
A B C D E F
0 1 2013-01-02 1 3 test foo
1 1 2013-01-02 1 3 train foo
2 1 2013-01-02 1 3 test foo
3 1 2013-01-02 1 3 train foo
>>> df.dtypes
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
列名を表示する
データフレームの列名の一覧を取得するには、columns アトリビュートにアクセスします。
# データフレーム df3 を作成
>>> dates = pd.date_range('20130101', periods=6)
>>> df3 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
# データフレーム df3 を表示
>>> df3
A B C D
2013-01-01 -0.666903 -1.775545 0.228287 0.954733
2013-01-02 -1.125206 1.574557 1.604302 1.251831
2013-01-03 0.710328 -1.294591 0.172905 1.224386
2013-01-04 -0.528866 0.308870 1.113429 -0.229602
2013-01-05 -0.211232 0.257651 0.555822 1.443542
2013-01-06 -0.218134 -0.359475 1.231674 -0.722727
>>> df3.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
行名 (index) を表示する
データフレームの行名 (インデックス) の一覧を取得するには、index アトリビュートにアクセスします。
>>> df3.index
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
'2013-01-05', '2013-01-06'],
dtype='datetime64[ns]', freq='D')
値のみを 2 次元行列として表示する
value アトリビュートにアクセスすることで、列名、行名を除いた値のみの行列を取得できます。
>>> df3.values
array([[-0.66690323, -1.77554512, 0.22828683, 0.95473339],
[-1.1252062 , 1.57455744, 1.60430238, 1.25183092],
[ 0.71032784, -1.29459063, 0.17290515, 1.22438594],
[-0.52886583, 0.30887016, 1.11342939, -0.22960171],
[-0.21123248, 0.25765062, 0.55582169, 1.4435418 ],
[-0.21813353, -0.359475 , 1.23167432, -0.72272684]])