はじめに
自己紹介
Python勉強中の大学院生です。自分が詰まったところを記録していきます。
記事を書くに至った経緯
pandasのdataframeの並べ替えをしたいときに、どうやるんだっけと迷うことが多かったので、ここで記事にして整理しようと思いました。
本記事の概要
どんな人に読んでほしいか
- Pythonのpandasを学び始めた人
- pandasのdataframeの並べ替えのやり方をうまく整理できていない人
この記事に書くこと、わかること
dataframeの並べ替えのやり方がわかります。具体的なメソッドは以下の2つです。
- df.sort_values() (列の要素で並べ替え)
- df.sort_index()(インデックスで並べ替え)
具体的な方法
まずは適当にdataframeを作成します。
import pandas as pd
data = [[4, 2, 3, 1],
[5, 8, 6, 7],
[11, 10, 12, 9]]
df = pd.DataFrame(data=data,
index=['a', 'b', 'c', 'd'],
columns=['col1', 'col2', 'col3'])
df
col1 | col2 | col3 | |
---|---|---|---|
d | 4 | 5 | 11 |
b | 2 | 8 | 10 |
a | 3 | 6 | 12 |
c | 1 | 7 | 9 |
列の要素で並べ替え | df.sort_values()
例えば、今回のデータフレームを'col1'の大きさを基準に並べ替えたいときは
df.sort_values('col1')
とすることで、
col1 | col2 | col3 | |
---|---|---|---|
c | 1 | 7 | 9 |
b | 2 | 8 | 10 |
a | 3 | 6 | 12 |
d | 4 | 5 | 11 |
このように、col1の列で上から小さい順に並べ替えることができました。列基準で並べ替えたいときは.sort_values()
を用いてカラム名を指定することで実行できます。
並べ替えを小さい順(昇順)ではなく大きい順(降順)にしたい場合は、引数にascending=False
を加えます。
df.sort_values('col1', ascending=Fasle)
col1 | col2 | col3 | |
---|---|---|---|
d | 4 | 5 | 11 |
a | 3 | 6 | 12 |
b | 2 | 8 | 10 |
c | 1 | 7 | 9 |
※昇順の時は何も指定しなければ元々昇順になる設定になっているので、ascending=True
と表記しなくても大丈夫です。降順にしたいときは指定する必要があります。
インデックスで並べ替え | df.sort_index()
列の要素だけでなく、インデックス(行名)で並べ替えたい時もあると思います。そのときはシンプルに
df.sort_index()
を実行することで、
col1 | col2 | col3 | |
---|---|---|---|
a | 3 | 6 | 12 |
b | 2 | 8 | 10 |
c | 1 | 7 | 9 |
d | 4 | 5 | 11 |
インデックスをアルファベット順に並べることができました。逆にしたいときは、さっきと同じように
df.sort_index(ascending=False)
とすればOKです。
まとめ
- 列の要素で並べ替えたい→
.sort_values('column')
- インデックスで並べ替えたい→
.sort_index()
データフレームを並べ替えたい時にどっちだっけ?とよくごっちゃになっていたので、これを機に整理して使いこなしていきたいと思います。