【pandas】データのソート総まとめ(sort_values・sort_index)【データ分析】

データフレームをpythonで取り込んでデータ分析したいんだけど、データのソート(並べ替え)の方法が分からないな…。



本記事では、データ分析初学者向けに、データのソート方法をわかりやすく解説します。


結論、sort_valuesメソッド、sort_indexメソッドを使うことで、簡単にソートをすることができます。


引数の使い方をマスターすることで、様々な並び替えをすることができます。

本記事では、よく使う引数を厳選してご紹介します。


早速行きましょう!



データ列の並び替え【sort_valuesメソッド】

データ列でソートする時に使うのが、sort_valuesメソッドです。



指定したカラムを昇順

by=”並び替えたいカラム名”で指定することで、引数で指定したデータ列を昇順に並び替えます。

byは省略できるため、カラム名のみを指定することもできます

sort_valuesメソッドでは、カラム名の指定は必須です。




df_sorted = df.sort_values(by = "カラム名")
#df_sorted = df.sort_values("カラム名")でもOK



昇順とは、数値なら小さい順、文字列ならA→Zに並べることです。
降順は、昇順の逆です。




複数カラムを指定することもできます。

df_sorted = df.sort_values(["カラム名1", "カラム名2"])




昇順・降順を変更

引数ascendingで、昇順・降順が選べます。


  • 昇順:ascending=True
  • 降順:ascending=False



何も指定しない場合のデフォルトは、昇順です。

そのため、ascendingは降順に並び替えたい場合に「ascending=False」と指定しましょう。


df.sort_values("カラム名", ascending=False)




欠損値を指定した位置に持ってくる

欠損値を行の最初に持ってきたり、最後に持ってきたりと指定する場合は、引数na_positionを指定します。

欠損値というのは、データが無い箇所のことだったね。
NaNなどと表記されることが多いよ。


na_positionの指定は次の通りです。

  • 欠損値を先頭に表示:na_position=”first”
  • 欠損値を末尾に表示(デフォルト):na_position=”last”



df.sort_values("カラム名", na_position="first")




行の中で並び替え

行ではなく、列を並び変える場合は、引数axisを指定します。


他のメソッドでも、axisは行・列を指定することが多いので、見覚えがある方も多いでしょう。

数字と文字などが一緒に入っている場合は、並び替えできないので、注意しましょう。

  • axis=1:列を指定
  • axis=0:行を指定



df.sort_values("カラム名", axis=1)




先頭からn行を指定する

先頭から指定した行数分を表示するには、head()を使いましょう。

引数には、表示したい行数を指定できます。


何も指定しない場合は、5行分が表示されます

df.sort_values("カラム名", axis=1).head(10)

インデックスの並び替え【sort_indexメソッド】

データだけでなく、インデックス(列名・行名)で並び替えることもできます。



インデックスというのは、列・行の項目のことだね。
下の例では、科目名(JapaneseやMath)の入れ替えや、生徒名(No.1、No.2)の入れ替えができます

#データフレームの定義
data = [[60,45,25],
        [84,70,47],
        [44,43,33],
        [90,25,25],
        [81,70,87],
        [64,33,83]]

df = pd.DataFrame(data, index = ["No.5","No.3","No.2","No.4","No.1","No.6"], columns = ["English","Math","Japanese"])
df
インデックスを並び替えたいデータフレーム



sort_valuesメソッドは、各データの値を並び替えたけど、
sort_indexメソッドは、項目ごと並び替えるんだね!





行名でソートする

行名でソートする時には、引数なしでsort_indexメソッドを使います。

df.sort_index()
df.sort_index()の実行結果




昇順・降順の変更

sort_valuesメソッドと同様、引数ascendingで昇順・降順が選べます。

  • 昇順:ascending=True
  • 降順:ascending=False




何も指定しない場合のデフォルトは、昇順です。

そのため、ascendingは降順に並び替えたい場合に「ascending=False」と指定しましょう。



下記の指定では、行名を降順にソートできます。

df.sort_index(ascending=False)


df.sort_index(ascending=False)の実行結果





列名でソートする

列名を昇順にする場合は、引数axis=1を指定しましょう。

#列名を昇順にする。アルファベット順
df.sort_index(axis=1)
df.sort_index(axis=1)の実行結果



降順にしたい場合は、ascending=Falseに指定します。

#列名を降順にする
df3.sort_index(axis=1, ascending=False)
df3.sort_index(axis=1, ascending=False)の実行結果




最後に

ythonでデータ分析・データサイエンスをしたい初心者向けに、Pythonデータ分析徹底解説総まとめページを作成しました。


流れに沿って実装することで、データ分析の基礎が固められます。

【総集編】データ前処理をPythonで実装【機械学習入門】

2022年9月25日




また、専門の講師と一緒に挫折せずに学習したい方は、データサイエンススクールがおすすめです。

こちらもぜひ御覧ください。

【2023年最新版】データサイエンスが学べるおすすめスクール5選

2022年6月4日