English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas ソート

Pandasのソート方法は2種類あります:

タグでソート 実際の値でソート

以下の例を参照してください。

 import pandas as pd
 import numpy as np
 unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
 mns=['col2','col1'])
 print(unsorted_df)

実行結果:

    col2       col1
1  -2.063177   0.537527
4   0.142932  -0.684884
6   0.012667  -0.389340
2  -0.548797   1.848743
3  -1.044160   0.837381
5   0.385605   1.300185
9   1.031425  -1.002967
8  -0.407374  -0.435142
0   2.237453  -1.067139
7  -1.445831  -1.701035

unsorted_dfでは、タグと値がソートされていません。ソート方法を見てみましょう。

タグでソート

sort_index()メソッドを使用して、軸パラメータとソート順序を渡すことで、DataFrameをソートできます。デフォルトでは、行タグを昇順にソートします。

 import pandas as pd
 import numpy as np
 unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
    mns = ['col2','col1'])
 sorted_df=unsorted_df.sort_index()
 print(sorted_df)

実行結果:

     col2        col1
9    0.825697    0.374463
8   -1.699509    0.510373
7   -0.581378    0.622958
6   -0.202951    0.954300
5   -1.289321   -1.551250
4    1.302561    0.851385
3   -0.157915   -0.388659
2   -1.222295    0.166609
1    0.584890   -0.291048
0    0.668444   -0.061294

ソートの順序

昇順パラメータにブール値を渡すことで、ソートの順序を制御できます。以下の例を参照して、同じ状況を理解してください。

 import pandas as pd
 import numpy as np
 unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
    mns = ['col2','col1'])
 sorted_df = unsorted_df.sort_index(ascending=False)
 print(sorted_df)

実行結果:

     col2        col1
9    0.825697    0.374463
8   -1.699509    0.510373
7   -0.581378    0.622958
6   -0.202951    0.954300
5   -1.289321   -1.551250
4    1.302561    0.851385
3   -0.157915   -0.388659
2   -1.222295    0.166609
1    0.584890   -0.291048
0    0.668444   -0.061294

行にソート

軸パラメータを値0または1、列タグでソートすることができます。デフォルトでは、axis = 0 で行にソートされます。以下の例を参照して、同じ状況を理解してください。

 import pandas as pd
 import numpy as np
  
 unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
    mns = ['col2','col1'])
  
 sorted_df=unsorted_df.sort_index(axis=1)
 print(sorted_df)

実行結果:

     col1        col2
1   -0.291048    0.584890
4    0.851385    1.302561
6    0.954300   -0.202951
2    0.166609   -1.222295
3   -0.388659   -0.157915
5   -1.551250   -1.289321
9    0.374463    0.825697
8    0.510373   -1.699509
0   -0.061294    0.668444
7    0.622958   -0.581378

値によるソート

sort_values()は値をソートする方法です。それは'by'パラメータを受け取り、値をソートするためのDataFrameの列名を使用します。

import pandas as pd
 import numpy as np
 unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
    sorted_df = unsorted_df.sort_values(by='col1')
 print(sorted_df)

実行結果:

   col1  col2
1    1    3
2    1    2
3    1    4
0    2    1

注意、col1値がソートされ、対応するcol2値と行インデックスはcol1を一緒に変更します。したがって、それらはカテゴリに分類されていません。

'by' パラメータは列値リストを使用します。

 import pandas as pd
 import numpy as np
 unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
    sorted_df = unsorted_df.sort_values(by=['col1','col2'])
 print(sorted_df)

実行結果:

  col1 col2
2   1   2
1   1   3
3   1   4
0   2   1

ソートアルゴリズム

sort_values() mergesort、heapsort、quicksortの選択アルゴリズムの指定を提供しています。mergesortは唯一の安定アルゴリズムです。

 import pandas as pd
 import numpy as np
 unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
 sorted_df = unsorted_df.sort_values(by='col1','kind='mergesort')
 print(sorted_df)

実行結果:

  col1 col2
1    1    3
2    1    2
3    1    4
0    2    1