
Advent Calendar 2013 - 19
Python で解析! - DataFrame 14
今回は sort を取り上げる。だいたい想像している通りのことができる。
1. データの準備
では、いつもの通りのデータの準備を。
import pandas as pd
df = pd.DataFrame({
u'1_睦月': [18100, 22000, 6800, 14100],
u'2_如月': [14600, 29000, 8800, 12100],
u'3_弥生': [9900, 12000, 12000, 8500]
}, index = [u'山田', u'鈴木', u'佐藤', u'木村'])
1_睦月 2_如月 3_弥生
山田 18100 14600 9900
鈴木 22000 29000 12000
佐藤 6800 8800 12000
木村 14100 12100 8500
2. index で並び替え
引数なしでソートすると、 index でのソートになる。
df.sort()
1_睦月 2_如月 3_弥生
佐藤 6800 8800 12000
山田 18100 14600 9900
木村 14100 12100 8500
鈴木 22000 29000 12000
漢字の場合、文字コード順で並び替えることは実用的ではないので、ふりがななどの適切なデータを使うところだが、あえて漢字で実験してみた。
なお、明示的に index を指定しない場合は、シーケンス番号が index として振られるので、sort() を呼び出しても何も起こらない。
3, 指定したカラムで並び替え
カラムを指定したソートは次の通り。
df.sort(u'3_弥生')
1_睦月 2_如月 3_弥生
木村 14100 12100 8500
山田 18100 14600 9900
鈴木 22000 29000 12000
佐藤 6800 8800 12000
複数のカラムを指定することもできる。
df.sort([u'3_弥生', u'2_如月'])
1_睦月 2_如月 3_弥生
木村 14100 12100 8500
山田 18100 14600 9900
佐藤 6800 8800 12000
鈴木 22000 29000 12000
3, 指定したカラムで降順で並び替え
デフォルトでは昇順だが、降順も指定できる。
df.sort(u'3_弥生', ascending=False)
1_睦月 2_如月 3_弥生
佐藤 6800 8800 12000
鈴木 22000 29000 12000
山田 18100 14600 9900
木村 14100 12100 8500
複数のカラムで、昇順と降順を混在させることもできる。
df.sort([u'3_弥生', u'2_如月'], ascending=[True, False])
1_睦月 2_如月 3_弥生
木村 14100 12100 8500
山田 18100 14600 9900
鈴木 22000 29000 12000
佐藤 6800 8800 12000
4, 列の並び替え
axis を指定すれば、列の並び替えもできる。
df.sort(axis=1, ascending=False)
3_弥生 2_如月 1_睦月
山田 9900 14600 18100
鈴木 12000 29000 22000
佐藤 12000 8800 6800
木村 8500 12100 14100
axis は 0 が縦方向、 1 が横方向を意味する。
axis を使わずに、こんなやり方もできる。
df.T.sort(ascending=False).T
3_弥生 2_如月 1_睦月
山田 9900 14600 18100
鈴木 12000 29000 22000
佐藤 12000 8800 6800
木村 8500 12100 14100
今回はこんなところで。