今回は、PythonでDataFrameをソートする方法を詳しく説明します。
sort_values() 関数によるデータフレームの並べ替え
Python Pandasモジュールは、大規模なデータレコードを扱うための様々な関数を提供しています。
データフレームでデータレコードを扱っていると、データをソートして出力を表現する必要がある場面によく出くわします。
このとき、Pythonのpandas.dataframe.sort_values()関数が威力を発揮します。
sort_values()関数は、カスタマイズされた方法でデータを昇順または降順にソートします。
次のセクションでは、この関数の構造について説明します。
この記事もチェック:Pandasのデータフレームに行を追加する5つの簡単な方法
sort_values() のシンタックス
以下の構文を見てください。
pandas.DataFrame.sort_values(by, axis = 0 , ascending = True , kind = ’mergesort’)
|
- で指定します。ソートされる列のリストを表します。
- 軸:0は行単位、1は列単位でソートすることを表します。
- 昇順。昇順:True の場合、データフレームを昇順でソートします。
- kind: 3つの値を持つことができます。Quicksort
,
mergesort,
heapsort`’ の3つの値があります。
次のセクションでは、sort_values()関数の実装に焦点を当てます。
この記事もチェック:Pythonによるバブルソートの昇順、降順の実装方法とコードを解説する
Pythonでデータフレームをソートするサンプルコード
この例では、最初に pandas.dataframe()
関数でデータフレームを作成しました。
さらに、sort_values()関数を使用して、列 ‘RATE’ を降順にソートしています。
例えば、以下の様になります。
import pandas as pd
data = pd.DataFrame([[ 3 , 0 , 1 ], [ 4 , 4 , 4 ], [ 1 , 7 , 7 ], [ 10 , 10 , 10 ]],
index = [ 'Python' , 'Java' , 'C' , 'Kotlin' ],
columns = [ 'RATE' , 'EE' , 'AA' ])
sort = data.sort_values( "RATE" , axis = 0 , ascending = False )
print ( "Data before sorting: )
print (data)
print ( "Data after sorting: )
print (sort)
|
結果は以下の通りです。
Data before sorting: RATE EE AA
Python 3 0 1
Java 4 4 4
C 1 7 7
Kotlin 10 10 10
Data after sorting: RATE EE AA
Kotlin 10 10 10
Java 4 4 4
Python 3 0 1
C 1 7 7
|
以下の例では、上記のデータフレームを2つのカラム(’EE’と’AA’)でソートしています。
例えば、以下の様になります。
import pandas as pd
data = pd.DataFrame([[ 3 , 0 , 1 ], [ 4 , 4 , 4 ], [ 1 , 7 , 7 ], [ 10 , 10 , 10 ]],
index = [ 'Python' , 'Java' , 'C' , 'Kotlin' ],
columns = [ 'RATE' , 'EE' , 'AA' ])
sort = data.sort_values([ "EE" , "AA" ], axis = 0 , ascending = True )
print ( "Data before sorting: )
print (data)
print ( "Data after sorting: )
print (sort)
|
出力。
下の図のように、データフレームは’EE’と’AA’の列でそれぞれ昇順にソートされます。
Data before sorting: RATE EE AA
Python 3 0 1
Java 4 4 4
C 1 7 7
Kotlin 10 10 10
Data after sorting: RATE EE AA
Python 3 0 1
Java 4 4 4
C 1 7 7
Kotlin 10 10 10
|
まとめ
ここまでで、このトピックは終了です。
sort_values()関数がデータフレームをソートする機能を理解しました。
もし何か疑問があれば、お気軽にコメントください。