Pandas DataFrame DataFrame.sort_values()関数

Suraj Joshi 2023年1月30日
  1. pandas.DataFrame.sort_values() の構文:
  2. コード例:単一の列に基づいて Pandas pandas.DataFrame.sort_values() で DataFrame を並べ替えます
  3. サンプルコード:複数の列に基づいて Pandas DataFrame.sort_values() で DataFrame を並べ替えます
  4. コード例:Pandas DataFrame.sort_values() を使用して降順で DataFrame を並べ替えます
  5. コード例:Pandas DataFrame.sort_values()NaN を最初に配置して DataFrame を並べ替えます
Pandas DataFrame DataFrame.sort_values()関数

Pandas DataFrame.sort_values() メソッドは、呼び出し元の DataFrame を、いずれかのインデックスに沿って、指定された列の値で昇順または降順に並べ替えます。

pandas.DataFrame.sort_values() の構文:

DataFrame.sort_values(
    by,
    axis=0,
    ascending=True,
    inplace=False,
    kind="quicksort",
    na_position="last",
    ignore_index=False,
)

パラメーター

by ソートする名前または名前のリスト
axis 行(axis = 0)または列(axis = 1)に沿って並べ替えます
ascending 昇順で並べ替え(ascending = True)または降順ascending = False
inplace ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します
kind 使用するソートアルゴリズム。デフォルト: quicksort
na_position NaN 値を最初(na_position=first)または最後(na_position=last)に配置します
ignore_index ブール。True の場合、元の DataFrame のインデックスは無視されます。デフォルト値は False で、インデックスが使用されます。
バージョン 1.0.0 の新機能

戻り値

inplaceTrue の場合、並べ替えられた DataFrame を返します。それ以外の場合は None

コード例:単一の列に基づいて Pandas pandas.DataFrame.sort_values() で DataFrame を並べ替えます

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)

出力:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
       Date  Sales  Price
1  April-11    300      1
2  April-12    400      2
5  April-16    300      2
0  April-10    200      3
4  April-14    300      3
3  April-13    200      4

DataFrame df を列 Price の値で昇順(デフォルト)にソートします。

並べ替えられた DataFrame のインデックスは、元の DataFrame と同じままです。

ソートされた DataFrame に新しいインデックス列を含める場合は、ignore_index(バージョン 1.0.0 から導入)を True に設定できます。

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]

df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")

出力:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-11    300      1
1  April-12    400      2
2  April-16    300      2
3  April-10    200      3
4  April-14    300      3
5  April-13    200      4

ここでは、ignore_index = True を使用して行に新しいインデックスを割り当て、元の DataFrame のインデックスを無視します。

サンプルコード:複数の列に基づいて Pandas DataFrame.sort_values() で DataFrame を並べ替えます

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
               ignore_index=True,
               inplace=True)
print("After Sorting:")
print(df)

出力:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-13    200      4
2  April-11    300      1
3  April-16    300      2
4  April-14    300      3
5  April-12    400      2

ここでは、最初に Sales が最初に昇順で並べ替えられ、次に各 SalesPrice も昇順で並べ替えられます。

df では、 200Sales 列の最小値であり、 3200Sales 値の Price 列の最小値です。

したがって、Sales 列が 200Price3 の行が一番上になります。

inplace = True により、sort_values() 関数を呼び出した後に元の DataFrame が変更されます。

コード例:Pandas DataFrame.sort_values() を使用して降順で DataFrame を並べ替えます

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
                         ignore_index=True,
                         ascending=False)
print("After Sorting:")
print(sorted_df)

出力:


Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-12    400      2
1  April-11    300      1
2  April-14    300      3
3  April-16    300      2
4  April-10    200      3
5  April-13    200      4

DataFrame df を列 Sales の値の降順で並べ替えます。

400Sales 列の最大値です。したがって、エントリは一番上に移動し、他の行はそれに応じてソートされます。

コード例:Pandas DataFrame.sort_values()NaN を最初に配置して DataFrame を並べ替えます

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)

出力:

Before Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-11    300    1.0
2  April-12    400    2.0
3  April-13    200    4.0
4  April-14    300    3.0
5  April-16    300    NaN
After Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-16    300    NaN
2  April-11    300    1.0
3  April-12    400    2.0
4  April-14    300    3.0
5  April-13    200    4.0

デフォルトでは、並べ替え後、NaN 値は DataFrame の最後に配置されます。

しかし、na_position = first を設定することで、NaN 値を DataFrame の先頭に配置できます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame