用語比較
sort_valuesとsort_indexの違い|列の値で並べるか、行のラベルで並べるか(Python3データ分析)
sort_values は、列などの値を基準に並べ替えます。sort_index は、行や列のラベルを基準に並べ替えます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
sort_valuesとsort_indexの要点
sort_values
列などの値を基準に並べ替える。基準にする列は by に渡す。複数の列を渡すと、先頭の列が同じ行を次の列で並べる。
sort_index
行や列のラベルを基準に並べ替える。by は無い。axis で、行のラベルか列のラベルかを選ぶ。
違いを表で確認
| 比較軸 | sort_values | sort_index |
|---|---|---|
| 並べる基準 | 列などの値 | 行や列のラベル |
| 基準の指定 | by に列名(または列名のリスト)を渡す | by は無い。axis で行か列かを選ぶ(既定は 0 で行) |
欠損値(NaN)の位置 | na_position で選ぶ(既定は last で末尾) | na_position で選ぶ(既定は last。MultiIndex では未実装) |
| 同じ値の並び | DataFrame では、単一の列や単一のラベルで並べるときだけ kind が使われる | MultiIndex や level を指定したときは kind が無視される |
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
点数の高い順に行を並べたい人
sort_values を使い、by に列名を渡して ascending=False を指定します。
行のラベル(日付や ID)の順に戻したい人
sort_index を使います。値ではなくラベルで並ぶので、列の中身は基準になりません。
並べ替えたあと、行の番号を 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
並べる基準を決める
列の値なら sort_values、行や列のラベルなら sort_index です。
- 2
基準の列を決める
sort_values なら by に列名を渡します。複数なら、優先する列を先に書きます。
- 3
順序と欠損値を決める
降順は ascending=False、
NaNを先頭にしたいときは na_position="first" を指定します。
試験での見分け方
- 1列の値で並べるときは、sort_values を使う。
- 2行や列のラベルで並べるときは、sort_index を使う。
- 3sort_values では、基準にする列を by で必ず指定する。
- 4
NaNの位置は、どちらも 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 の役割を説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- groupbyのaggとtransformの違い|グループごとに1行へまとめるか、元と同じ行数で返すか(Python3データ分析)
pandasのgroupbyで使うaggregate(agg。グループごとの要約値)とtransform(元と同じindexの結果)の違いを、行数、index、使いどころで整理します。pandas公式ユーザーガイドの例で、animalsのgroupby("kind").sum()がcatとdogの2行になり、cumsum()が元の5行のままになる点つきです。
- np.whereとnp.selectの違い|2択で値を選ぶか、複数の条件から選ぶか(Python3データ分析)
NumPyのnp.where(条件が真ならx、偽ならy)とnp.select(条件のリストと選択肢のリストから選ぶ)の違いを、条件の数、default、複数の条件が真のときの扱いで整理します。NumPy公式リファレンスの例で、np.selectの結果が0・-1・-2・42・16・25になる点つきです。
- Series.mapとapplyの違い|dictで置き換えるか、関数や引数つきで処理するか(Python3データ分析)
pandasのSeries.map(dictやSeriesによる置き換え、na_action)とSeries.apply(関数やNumPyのufunc、args)の違いを、dictにない値の扱い、欠損値の扱い、戻り値で整理します。pandas公式リファレンスの例で、dictにないキーが
NaNになる点つきです。
よくある質問
Qsort_valuesとsort_indexの違いは?
sort_values は列などの値を基準に、sort_index は行や列のラベルを基準に並べ替えます。
Qsort_valuesでNaNはどこに置かれますか?
既定では末尾です。na_position="first" を指定すると先頭になります。
Q並べ替えたあとのindexを振り直すには?
ignore_index=True を指定します。結果の軸が 0, 1, …, n - 1 になります。
Qデータ分析試験の範囲?
本サイトの第4章 pandas で扱います。出題の形式や範囲は、受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
