【Python】Pandasの基礎と使い方5 – DataFrameのソート(並び替え)方法

みなさんこんにちは、ZeroTerasu(@ZeroTerasu)です。

前回は、Pythonのデータ分析ライブラリ「Pandas」の第3回講座としてDataFrameの行・列の追加と削除について解説致しました。

今回は、DataFrameのソート(並び替え)方法について解説致します。

今回も下記のDataFrameを使用致します。(今回は、indexに’出席番号’列を指定したDataFrameを使用します。)

今回使用するDataFrame(index = ‘出席番号’列)
import pandas as pd
df = pd.DataFrame({
    '出席番号':[1,2,3],
    '名前':['佐藤さん','鈴木さん','田中さん'],
    '国語':[65,70,75],
    '数学':[90,70,50],
    '英語':[50,70,95],
})
df.set_index('出席番号', inplace=True)
df
# 実行結果
# 	          名前	 国語 数学	英語
# 出席番号				
# 1	       佐藤さん	65	90	50
# 2	       鈴木さん	70	70	70
# 3	       田中さん	75	50	95

要素でソートする:sort_values()

・DataFrameのソートにはsort_values()メソッドを使用します。

・第一引数=”by”にカラム名(列名)を指定することで、指定された列が昇順に並び替えされます。

・第四引数:”ascending”=”True”=>昇順。”ascending”=”False”=>降順。

・第五引数:”inplace”=”True”=>元のオブジェクトを上書き保存。(デフォルトでは新たなオブジェクトが返され、元のオブジェクトは変化なし。)

sort_values()メソッド 引数
DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', 
             na_position='last', ignore_index=False, key=None)
公式ドキュメントURL:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html

ラベル名(列名)でソート

ラベル名(列名)をsort_values()の引数に指定すると、指定した列の昇順に並び変わります。
 <=最も基本的な使い方になります。

ラベル名(列名)をsort_values()の引数に指定
import pandas as pd
df = pd.DataFrame({
    '出席番号':[1,2,3],
    '名前':['佐藤さん','鈴木さん','田中さん'],
    '国語':[65,70,75],
    '数学':[90,70,50],
    '英語':[50,70,95],
})
df.set_index('出席番号', inplace=True)
df.sort_values('数学')
df
# 実行結果
#          名前	国語	数学	英語
# 出席番号				
# 3	    田中さん	 75	 50	 95
# 2	    鈴木さん	 70	 70	 70
# 1	    佐藤さん	 65	 90	 50
# 数学列の昇順に並び変わっています。

昇順・降順を指定してソート

・引数=ascending=True昇順ascending=False降順。に並び変わる。通常、下記に記載する通り、ラベル名(列名)の指定と一緒に使用する。カラム名(列名)を指定しない場合、インデックスの昇順・降順に並び変わる。

・デフォルトは”昇順” => 引数=”asceding”を指定しなければ、昇順になる。

ラベル名(列名)をsort_values()の引数に指定すると、指定した列の昇順に並び変わります。

引数=”ascending”を明記して昇順・降順を指定
import pandas as pd
df = pd.DataFrame({
    '出席番号':[1,2,3],
    '名前':['佐藤さん','鈴木さん','田中さん'],
    '国語':[65,70,75],
    '数学':[90,70,50],
    '英語':[50,70,95],
})
df.set_index('出席番号', inplace=True)
df.sort_values('数学', ascending=False)
df
# 実行結果
# 	          名前	 国語 数学	英語
# 出席番号				
# 1	       佐藤さん	65	90	50
# 2	       鈴木さん	70	70	70
# 3	       田中さん	75	50	95
# 数学列の降順に並び変わっています。

インデックス(行名・列名)でソート:sort_index()

・インデックスでソートする場合、DataFrame.sort_index()メソッドを使用する。

・デフォルトは昇順。

・inplace等の引数は、sort_values()メソッドと共通。

sort_index()メソッドを使ってインデックスでソートする。
import pandas as pd
df = pd.DataFrame({
    '出席番号':[1,2,3],
    '名前':['佐藤さん','鈴木さん','田中さん'],
    '国語':[65,70,75],
    '数学':[90,70,50],
    '英語':[50,70,95],
})
df.set_index('出席番号', inplace=True)
df.sort_index(ascending=False)
df
# 実行結果
#          名前	国語	数学	英語
# 出席番号				
# 3	    田中さん	 75	 50	 95
# 2	    鈴木さん	 70	 70	 70
# 1	    佐藤さん	 65	 90	 50
# インデックス="出席番号"の降順に並び変わっています。

コメント

タイトルとURLをコピーしました