こんにちは!
皆さんは、DataFrameのデータをソートしたいと思ったことはありませんか?
DataFrameのソートは、「sort_index()」や、「sort_values()」を使うと簡単にすることができますよ。
今回の記事では、以下の内容について紹介します。
- カラムやインデックスに基づいたソート
- 値に基づいたソート
今回は、irisデータセットを用いて説明をしていきます。
カラムやインデックスに基づいたソート
カラムやインデックスに基づいてソートを行うには、「sort_index()」を使います。
axis=0(デフォルト)でインデックスに基づいてソートし、
axis=1でカラムに基づいてソートします。
ascending=True(デフォルト)で昇順にソートし、
ascending=Falseで降順にソートします。
今回使用するirisデータセットでは、インデックスが昇順に付けられているため、降順にしてみましょう。
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target_names[iris.target]
print(df.sort_index(ascending=False))
実行結果
sepal length (cm) sepal width (cm) ... petal width (cm) species
149 5.9 3.0 ... 1.8 virginica
148 6.2 3.4 ... 2.3 virginica
147 6.5 3.0 ... 2.0 virginica
146 6.3 2.5 ... 1.9 virginica
145 6.7 3.0 ... 2.3 virginica
.. ... ... ... ... ...
4 5.0 3.6 ... 0.2 setosa
3 4.6 3.1 ... 0.2 setosa
2 4.7 3.2 ... 0.2 setosa
1 4.9 3.0 ... 0.2 setosa
0 5.1 3.5 ... 0.2 setosa
一番左のインデックスが降順に並べ替えられていることがわかると思います。
次に、カラムに基づいてソートを行ってみましょう。
print(df.sort_index(axis=1))
実行結果
petal length (cm) petal width (cm) ... sepal width (cm) species
0 1.4 0.2 ... 3.5 setosa
1 1.4 0.2 ... 3.0 setosa
2 1.3 0.2 ... 3.2 setosa
3 1.5 0.2 ... 3.1 setosa
4 1.4 0.2 ... 3.6 setosa
.. ... ... ... ... ...
145 5.2 2.3 ... 3.0 virginica
146 5.0 1.9 ... 2.5 virginica
147 5.2 2.0 ... 3.0 virginica
148 5.4 2.3 ... 3.4 virginica
149 5.1 1.8 ... 3.0 virginica
[150 rows x 5 columns]
カラムは文字列のためアルファベット順にソートされます。
値に基づいたソート
値に基づいてソートを行うには、「sort_values()」を使います。
「by」でカラム名を指定すると、その列の値に基づいてソートされます。
また、sort_index()の場合と同じように、
axis=0(デフォルト)でインデックスに基づいてソートし、
axis=1でカラムに基づいてソートします。
ascending=True(デフォルト)で昇順にソートし、
ascending=Falseで降順にソートします。
では、「sepal length (cm)」を元にソートしてみましょう。
print(df.sort_values(by='sepal length (cm)'))
実行結果
sepal length (cm) sepal width (cm) ... petal width (cm) species
13 4.3 3.0 ... 0.1 setosa
42 4.4 3.2 ... 0.2 setosa
38 4.4 3.0 ... 0.2 setosa
8 4.4 2.9 ... 0.2 setosa
41 4.5 2.3 ... 0.3 setosa
.. ... ... ... ... ...
122 7.7 2.8 ... 2.0 virginica
118 7.7 2.6 ... 2.3 virginica
117 7.7 3.8 ... 2.2 virginica
135 7.7 3.0 ... 2.3 virginica
131 7.9 3.8 ... 2.0 virginica
[150 rows x 5 columns]
まとめ
今回の記事では、以下の内容について紹介しました。
- カラムやインデックスに基づいたソート
→「sort_index()」を使用 - 値に基づいたソート
→「sort_values()」を使用
皆さんも、ソートの仕方を覚えて、データを上手く扱えるようになりましょう!