Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでCSVファイルを複数の列(カラム)でソートする方法【pandasのsort_values徹底解説】

はじめに

データ分析の現場では、CSVファイルを読み込んで特定の条件で並べ替えたい場面がよくあります。本記事では、Pythonのpandasライブラリを使って、CSVファイルを複数の列(カラム)でソートする方法をわかりやすく解説します。

sort_values()メソッドとは

CSVを複数の列でソートするには、pandasのsort_values()メソッドを使用します。複数列でのソートとは、1つ目の指定列に同じ値が重複している場合、その行同士の並び順は2番目に指定した列の値によって決まるという仕組みです。

手順1:CSVファイルを読み込む

まず、入力用のCSVファイル「SalesRecords.csv」を読み込みます。

dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")

手順2:複数の列を指定してソートする

次に、「Reg_Price」(登録価格)と「Car」(車名)の2つの列を基準にソートします。

dataFrame.sort_values(["Reg_Price","Car"],axis=0, ascending=True,inplace=True,na_position='first')

ここで使用している主な引数は以下の通りです。

  • 第1引数(リスト):ソートの基準となる列名を優先度の高い順に指定します
  • axis=0:行方向(縦)にソートすることを意味します
  • ascending=True:昇順でソートします(降順にしたい場合はFalseを指定)
  • inplace=True:元のDataFrameを直接書き換えます
  • na_position='first':欠損値(NaN)を先頭に配置します

サンプルコード全体

以下に、読み込みからソート、結果表示までの一連のコードを示します。

import pandas as pd

# 入力CSVファイルを読み込む
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")
print("\nInput CSV file = \n", dataFrame)

# 複数の列を基準にソート
dataFrame.sort_values(["Reg_Price","Car"],axis=0, ascending=True,inplace=True,na_position='first')

print("\nSorted CSV file (according to multiple columns) = \n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Input CSV file =
         Car   Date_of_Purchase   Reg_Price
0        BMW        10/10/2020        1000
1      Lexus        10/12/2020         750
2       Audi        10/17/2020         750
3     Jaguar        10/16/2020        1500
4    Mustang        10/19/2020        1100
5 Lamborghini     10/22/2020        1000

Sorted CSV file (according to multiple columns) =
         Car   Date_of_Purchase   Reg_Price
2       Audi        10/17/2020         750
1      Lexus        10/12/2020         750
0        BMW        10/10/2020        1000
5 Lamborghini     10/22/2020        1000
4    Mustang        10/19/2020        1100
3     Jaguar        10/16/2020        1500

実行結果のポイント

出力結果を見ると、まず「Reg_Price」の昇順(750 → 1000 → 1100 → 1500)で並べ替えられていることがわかります。さらに注目すべきは、Reg_Priceが「750」で重複しているAudiとLexusの行です。この2行は、2番目に指定した「Car」列のアルファベット順(Audi → Lexus)で並んでいます。同様に「1000」で重複しているBMWとLamborghiniも、車名順にソートされています。

このように、sort_values()メソッドに列名のリストを渡すだけで、優先順位をつけた複数列ソートが簡単に実現できます。大量のデータを扱う際にも非常に便利なテクニックなので、ぜひ活用してみてください。

  1. Python・PandasのDataFrameから複数の列を選択する方法

    Pandasでは、CSVファイルから読み込んだDataFrameに対して、二重の角括弧 [[ ]] を使うことで、複数の列を簡単に選択できます。本記事では、具体的な手順とサンプルコードを交えて解説します。 前提:サンプルデータについて ここでは、Microsoft Excelで開いた以下のような内容のCSVファイル(SalesData.csv)を例にします。このデータには「Car(車名)」「Reg_Price(登録価格)」「Units(台数)」の3つの列が含まれています。 ステップ1:CSVファイルをPandas DataFrameに読み込む まず、read_csv() メソッドを使って、C

  2. 【Python入門】Matplotlibで複数のグラフを1つの図に組み合わせる方法(subplot・twinx活用)

    はじめに Matplotlibは、同じグラフ上に複数のプロットを重ねて描画できる強力なPythonの可視化ライブラリです。本チュートリアルでは、2つの異なるY軸を使いながら、1つの図の中に複数のデータを組み合わせて表示する方法を、実際に動くコード例とともにわかりやすく解説します。 事前準備:Matplotlibのインストール まず、Pythonのコマンドプロンプト(ターミナル)を開き、以下のコマンドでmatplotlibをインストールしてください。 pip install matplotlib 手順1:表示するデータを準備する ここでは、iPhone・Galaxy・Pixelの3機種につい