AI資格ドリル
資格を選ぶ

用語比較

sort_valuesとsort_indexの違い|列の値で並べるか、行のラベルで並べるか(Python3データ分析)

sort_values は、列などの値を基準に並べ替えます。sort_index は、行や列のラベルを基準に並べ替えます。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。

sort_valuesとsort_indexの要点

sort_values

列などの値を基準に並べ替える。基準にする列は by に渡す。複数の列を渡すと、先頭の列が同じ行を次の列で並べる。

sort_index

行や列のラベルを基準に並べ替える。by は無い。axis で、行のラベルか列のラベルかを選ぶ。

違いを表で確認

比較軸sort_valuessort_index
並べる基準列などの値行や列のラベル
基準の指定by に列名(または列名のリスト)を渡すby は無い。axis で行か列かを選ぶ(既定は 0 で行)
欠損値(NaN)の位置na_position で選ぶ(既定は last で末尾)na_position で選ぶ(既定は last。MultiIndex では未実装)
同じ値の並びDataFrame では、単一の列や単一のラベルで並べるときだけ kind が使われるMultiIndex や level を指定したときは kind が無視される

Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

点数の高い順に行を並べたい人

sort_values を使い、by に列名を渡して ascending=False を指定します。

02

行のラベル(日付や ID)の順に戻したい人

sort_index を使います。値ではなくラベルで並ぶので、列の中身は基準になりません。

03

並べ替えたあと、行の番号を 0 から振り直したい人

どちらも ignore_index=True を指定できます。結果の軸が 0, 1, …, n - 1 になります。

具体例で使い分ける

例 1

sort_values は列の値で並べ、NaN は末尾になる

公式の例の df(col1 が A・A・B・NaN・D・C の6行)に、df.sort_values(by=["col1"]) を使います。

  • 結果の col1 は、A・A・B・C・D・NaN の順です。
  • 元の index は、0・1・2・5・4・3 の順に入れ替わります。
  • NaN の行は、既定の na_position="last" により、最後に置かれます。

結論: sort_values は、行の中身(値)を基準に並べるので、index は元のラベルのまま移動します。

例 2

sort_values は複数の列で段階的に並べられる

同じ df に、df.sort_values(by=["col1", "col2"]) を使います。

  • まず col1 で並べ、col1 が同じ行を col2 で並べます。
  • col1 が A の2行は、col2 が 1 の行(index 1)が先、2 の行(index 0)が後になります。

結論: by にリストを渡すと、先頭の列が同じ行だけを、次の列で並べます。

例 3

sort_index はラベルの順に並べる

公式の例の df(列 A が 1〜5、index が 100・29・234・1・150)に、df.sort_index() を使います。

  • 結果の index は、1・29・100・150・234 の順です。
  • A の値は、4・2・1・5・3 になります。行の中身は変わらず、行の順番だけが入れ替わります。
  • ascending=False を指定すると、234・150・100・29・1 の順です。

結論: sort_index は、値ではなくラベルを基準に並べます。

問題文から答えを選ぶ手順

  1. 1

    並べる基準を決める

    列の値なら sort_values、行や列のラベルなら sort_index です。

  2. 2

    基準の列を決める

    sort_values なら by に列名を渡します。複数なら、優先する列を先に書きます。

  3. 3

    順序と欠損値を決める

    降順は ascending=False、NaN を先頭にしたいときは na_position="first" を指定します。

試験での見分け方

  • 1列の値で並べるときは、sort_values を使う。
  • 2行や列のラベルで並べるときは、sort_index を使う。
  • 3sort_values では、基準にする列を by で必ず指定する。
  • 4NaN の位置は、どちらも na_position で選べる(既定は末尾)。

誤答しやすい選択肢

sort_index で、列の値の順に並ぶと考える

修正: sort_index はラベルを基準にします。列の値の順にしたいなら、sort_values の by に列名を渡します。

sort_values の結果の index が 0 から振り直されると考える

修正: 既定の ignore_index=False では、元のラベルが残ります。振り直したいときは ignore_index=True を指定します。

NaN が先頭に来ると考える

修正: 既定の na_position は "last" で、NaN は末尾です。先頭にするには "first" を指定します。

確認問題

Q1列の値を基準に並べ替える DataFrame のメソッドは?

答え: sort_values

公式は、sort_values を値を基準にした並べ替えとしています。

Q2行や列のラベルを基準に並べ替えるメソッドは?

答え: sort_index

公式は、sort_index を Sort object by labels と説明しています。

Q3並べ替えで NaN を先頭に置く引数と値は?

答え: na_position="first"

公式は、first なら先頭、last なら末尾に NaN を置くと書いています。既定は last です。

Q4並べ替えのあと、軸を 0, 1, …, n - 1 に振り直す引数は?

答え: ignore_index=True

公式は、True にすると結果の軸が 0 から n - 1 のラベルになると書いています。

到達チェック

  • sort_values が値、sort_index がラベルを基準にすると言える
  • sort_values の by の役割を説明できる
  • na_position の既定が末尾であることを答えられる
  • ignore_index=True の役割を説明できる

同じ資格で次に知りたいこと

よくある質問

Qsort_valuesとsort_indexの違いは?

A

sort_values は列などの値を基準に、sort_index は行や列のラベルを基準に並べ替えます。

Qsort_valuesでNaNはどこに置かれますか?

A

既定では末尾です。na_position="first" を指定すると先頭になります。

Q並べ替えたあとのindexを振り直すには?

A

ignore_index=True を指定します。結果の軸が 0, 1, …, n - 1 になります。

Qデータ分析試験の範囲?

A

本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)