【python】DataFrameの並び替え

pandasのDataFrameの並び替えの方法について。
DataFrame.sort()ではエラーになってしまったので調べてみると、
0.19.0以降のバージョンからメソッドが削除されていて、
並び替えをするにはsort_values(), sort_index()を使用する必要がある。


まずはnumpyとpandasのインポート。

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

#ランダムなデータを作るために、randnもインポート
from numpy.random import randn

sort_values(), sort_index()での並び替え

テスト用のDataFrameの作成

#randnを使用して、ランダムな5*3のDataFrameを作成
dframe = DataFrame(randn(15).reshape((5,3)) ,index=['A','C','D','B','E'],columns=['col1','col2','col3'])

#出力結果
	col1    	col2    	col3
A	1.065672	1.747904	0.035748
C	0.955697	0.472874	0.463158
D	0.286586	-0.695141	0.856504
B	-1.279603	0.537965	-1.070702
E	1.100331	0.165572	-1.151672

sort_values()

sort_value()では、「by=''」で列を指定し、対象列を基準に並び替えされる。
降順にする場合は、ascending=Falseを指定する。

#sort_value()では、「by=''」で列を指定する
dframe.sort_values(by='col2')

#出力結果
	col1  	col2  	col3
D	0.286586	-0.695141	0.856504
E	1.100331	0.165572	-1.151672
C	0.955697	0.472874	0.463158
B	-1.279603	0.537965	-1.070702
A	1.065672	1.747904	0.035748


#降順にする場合は、ascending=Falseを指定する
dframe.sort_values(by='col2', ascending=False)

#出力結果
	col1  	col2  	col3
A	1.065672	1.747904	0.035748
B	-1.279603	0.537965	-1.070702
C	0.955697	0.472874	0.463158
E	1.100331	0.165572	-1.151672
D	0.286586	-0.695141	0.856504


#列の並び替えはaxis=1を指定する
dframe.sort_values(by='B', axis=1)

#出力結果
	col1  	col3  	col2
A	1.065672	0.035748	1.747904
C	0.955697	0.463158	0.472874
D	0.286586	0.856504	-0.695141
B	-1.279603	-1.070702	0.537965
E	1.100331	-1.151672	0.165572

sort_index()

sort_index()も同様に並び替えが出来る。
「by=''」は必要ない。

#indexで並び替え
dframe.sort_index()

#出力結果
	col1    	col2    	col3
A	1.065672	1.747904	0.035748
B	-1.279603	0.537965	-1.070702
C	0.955697	0.472874	0.463158
D	0.286586	-0.695141	0.856504
E	1.100331	0.165572	-1.151672



#columnで並び替え
dframe.sort_index(axis=1, ascending=False)

#出力結果
    col3    	col2  	col1
A	0.035748	1.747904	1.065672
C	0.463158	0.472874	0.955697
D	0.856504	-0.695141	0.286586
B	-1.070702	0.537965	-1.279603
E	-1.151672	0.165572	1.100331

まとめ

DataFrameは、sort_index(), sort_values()で並び替えが出来る。