Python DataFrameでの表のソートの仕方を紹介
(本記事のコードを作成した開発環境はGoogle Colaboratory Python 3.7.13 となります。)
Excelで表を作成するときに昇順、降順などのソートをかけることは多いと思います。PythonでもExcelと同じようにソートをかけることができます。
それだけではなくExcelでは手間のかかる、2つのキーを選択してのソートや、列ではなく行でのソートをかけることが簡単にできます。
本記事では、例を使ってソートをするときのコードを紹介していきたいと思います。
- データのソートの仕方
- 複数キーに対するソート
- indexをキーにしたソート
- index名、column名に対するソート
元データとなるexcelファイルを下記に用意しました。ファイル内のSheet1を「df01」として使っていきます。
データのソートの仕方
データのソートにはsort_valuesメソッドを使います。
引数名 | デフォルト値 | 備考 |
by | 必須で指定 | キーとなるcolumn名、もしくはindex名を指定 |
ascending | True | Trueなら昇順 Falseなら降順 |
na_position | ー | ソートしたときの欠損値の位置を指定 デフォルトは末尾 firstにすると先頭 |
inplace | False | Trueなら元のDataFrameの変更 |
axis | 0 | 0でindexのソート 1でcolumnのソート |
「df01」の「売上金額」を降順でソートしてみます。
1 |
df01.sort_values(by = "売上金額", ascending = False) |
複数キーに対するソート
sort_valuesメソッドでは複数のcolumnをキーに選択することができます。その場合、リストで選択して引数「by」に渡します。「店名」と「売上金額」の降順でソートしてみます。
1 |
df01.sort_values(by = ["店名","売上金額"], ascending =False) |
ソートできましたが降順のため店名の順番がD点→A店になりました。引数「ascending」をリストで指示することでA点→D店にすることができます。
1 |
df01.sort_values(by = ["店名","売上金額"], ascending =[True, False]) |
indexをキーにしたソート
sort_valuesメソッドではindexをキーにしたソートもcolumnをキーにしたソートと同じように行うことができます。
例として下記のようなDataFrame「df02」を作成しました。
1 2 3 4 |
df02 = pd.DataFrame(data = [[5,8,2],[1,9,3],[6,7,4]], columns = ["col2","col1","col3"], index = ["idx2","idx1","idx3"],) df02 |
「df02」のindex「idx2」に対してソートをかけてみます。引数「axis」を「1」にすることでindexをキーにしたソートをすることができます。
1 |
df02.sort_values(by = "idx2", axis = 1) |
index名、column名に対するソート
index名、column名のソートにはsort_indexメソッドを使います。
引数名 | デフォルト値 | 備考 |
ascending | True | Trueなら昇順 Falseなら降順 |
na_position | ー | ソートしたときの欠損値の位置を指定 デフォルトは末尾 firstにすると先頭 |
inplace | FALSE | Trueなら元のDataFrameの変更 |
axis | 0 | 0でindexのソート 1でcolumnのソート |
先ほど作成したDataFrame「df02」をindexでソートしてみたいと思います。
1 |
df02.sort_index() |
index名に対してソートすることができました。column名に対してソートしたい場合は、「axis」を「1」にすればできます。
1 |
df02.sort_index(axis = 1) |