Pandas★便利な関数

2021年10月18日

Pandasには関数がたくさんあって全部は把握しきれないので、よみ見かける便利な関数をご紹介します。

型を操作

dtypes 型の確認

型の名前を返します。DataFrameはカラム毎の型を返します。

書き方

Seriesの場合

Series.dtypes

DataFrameの場合

DataFrame.dtypes

pandas.Series.dtypes 公式

pandas.DataFrame.dtypes 公式

【例】
import numpy as np
import pandas as pd
 
# Seriesを作成
se = pd.Series([0.25, 0.5, 0.75, 1.0],
          index=[2, 5, 3, 7])
# DataFrameを作成
da = pd.DataFrame(np.random.rand(3, 2),
             index=['a', 'b', 'c'],
             columns=['foo', 'bar'])
 
# 各々表示
display(se)
display(da)
2    0.25
5    0.50
3    0.75
7    1.00
dtype: float64

	foo 	bar
a 	0.916770 	0.253683
b 	0.867237 	0.914186
c 	0.782192 	0.899080
# dtypes表示
display(se.dtypes)
display(da.dtypes)
dtype('float64')

foo    float64
bar    float64
dtype: object

Numpyにはdtypeがあります。

Numpy★dtype 型の種類


astype 型のキャスト

元の型から指定した型へキャスト(変換)を行う。

書き方

Seriesの場合

Series.astype(dtype, copy=True, errors=’raise’)

DataFrameの場合

DataFrame.astype(dtype, copy=True, errors=’raise’)

dtype指定したdtype(データ型)に変換
dtype(データ型) 一覧
copyTrueの時、型キャストしたコピーを返す (default:True)
errors'raise’の時、例外発生の許可(default:’raise’)
'ignore’の時、例外を発生させない
【例】
import pandas as pd
 
ser = pd.Series([1, 2], dtype='int32')
display(ser)
 
# int64に型キャスト
ser1 = ser.astype('int64')
display(ser1)
【実行結果】
0    1
1    2
dtype: int32

0    1
1    2
dtype: int64

Numpyにもastypeがあります。

Numpy★astype

値の確認

unique ユニークな値

Seriesのユニークな値を返す(重複する値は取り除く)。DataFrameにはこの関数はない。

書き方

Series.unique()

pandas.Series.unique 公式

【例】
import pandas as pd
pd.Series([2, 1, 3, 3, 4, 2, 4, 5, 1, 1], name='A').unique()
【実行結果】
array([2, 1, 3, 4, 5], dtype=int64)

行・列の操作

pivot 行と列の置き換え

DataFrameで指定したカラムとインデックスを行と列に置き換える。

書き方

DataFrame.pivot(index=None, columns=None, values=None)

index(オプション) 文字列、オブジェクト、文字列のリスト
columns 文字列、オブジェクト、文字列のリスト
values(オプション) 文字列、オブジェクト、文字列のリスト

pandas.DataFrame.pivot 公式

【例】
import pandas as pd
 
df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two', 'two'],
                   'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6],
                   'zoo': ['x', 'y', 'z', 'q', 'w', 't']})
display(df)
df.pivot(index='foo', columns='bar', values='baz')
【実行結果】

	foo 	bar 	baz 	zoo
0 	one 	A 	1 	x
1 	one 	B 	2 	y
2 	one 	C 	3 	z
3 	two 	A 	4 	q
4 	two 	B 	5 	w
5 	two 	C 	6 	t

bar 	A 	B 	C
foo 			
one 	1 	2 	3
two 	4 	5 	6

解説

pivot前の状態では値が次のような状態でした。

pivot後では指定したカラムとインデックスが再配置され次のような状態に変わりました。

エラーになる場合

ここでエラーになる場合の例を紹介します。

【例】
df = pd.DataFrame({'foo': ['one', 'one', 'one', 'one', 'two', 'two'],
                   'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6],
                   'zoo': ['x', 'y', 'z', 'q', 'w', 't']})
display(df)
【実行結果】

	foo 	bar 	baz 	zoo
0 	one 	A 	1 	x
1 	one 	B 	2 	y
2 	one 	C 	3 	z
3 	one 	A 	4 	q
4 	two 	B 	5 	w
5 	two 	C 	6 	t

この結果は次のようになっています。

この状態で先ほどと同じpivot( df.pivot(index=’foo’, columns=’bar’, values=’baz’) )を実行するとエラーになります。

最初の例と比較すると

indexに指定したfooとcolumnsに指定したbarの組み合わせ(oneとA)が一意でなっています。
しかし、今回の場合はその値が二つ存在するためエラーになるという事です。

Pandas

Posted by Bright_Noah