みなさんこんにちは、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
# インデックス="出席番号"の降順に並び変わっています。
コメント