python_pandas

Pandasでデータをソートする方法:ステップバイステップガイド

はじめに

データ分析において、データを特定の順序でソートすることは基本中の基本です。Pythonのデータ解析ライブラリであるPandasを使用すれば、データのソートを簡単かつ柔軟に行うことができます。本記事では、初心者の方でも理解できるように、Pandasを使ったデータのソート方法をステップバイステップで解説します。


Pandasとは?

Pandasは、Pythonでデータ操作や分析を行うためのライブラリです。表形式のデータを扱うのに便利なDataFrameというデータ構造を提供しており、データの読み込み、操作、分析、可視化など、多彩な機能を備えています。


データの準備

まずは、サンプルデータを用意します。以下のコードを実行して、サンプルのデータフレームを作成しましょう。

import pandas as pd

# サンプルデータの作成
data = {
    'Product': ['A', 'B', 'C', 'D', 'E'],
    'Price': [500, 1500, 800, 1200, 700],
    'Quantity': [5, 2, 7, 3, 9]
}

df = pd.DataFrame(data)
print(df)

出力結果

  Product  Price  Quantity
0       A    500         5
1       B   1500         2
2       C    800         7
3       D   1200         3
4       E    700         9

データをソートする基本的な方法

Pandasでデータをソートするには、sort_values() メソッドを使用します。

4.1 昇順でソートする

Price 列を昇順(小さい順)でソートしてみましょう。

# Price列で昇順ソート
df_sorted_asc = df.sort_values(by='Price')
print(df_sorted_asc)

出力結果

  Product  Price  Quantity
0       A    500         5
4       E    700         9
2       C    800         7
3       D   1200         3
1       B   1500         2

4.2 降順でソートする

Price 列を降順(大きい順)でソートする場合は、ascending=False を指定します。

# Price列で降順ソート
df_sorted_desc = df.sort_values(by='Price', ascending=False)
print(df_sorted_desc)

出力結果

  Product  Price  Quantity
1       B   1500         2
3       D   1200         3
2       C    800         7
4       E    700         9
0       A    500         5

複数の列でソートする

複数の列を基準にソートすることも可能です。by パラメータにリストで列名を渡します。

# Priceを昇順、Quantityを降順でソート
df_sorted_multi = df.sort_values(by=['Price', 'Quantity'], ascending=[True, False])
print(df_sorted_multi)

出力結果

  Product  Price  Quantity
0       A    500         5
4       E    700         9
2       C    800         7
3       D   1200         3
1       B   1500         2

インデックスでソートする

データフレームのインデックス自体をソートするには、sort_index() メソッドを使用します。

# インデックスでソート(降順)
df_sorted_index = df.sort_index(ascending=False)
print(df_sorted_index)

出力結果

  Product  Price  Quantity
4       E    700         9
3       D   1200         3
2       C    800         7
1       B   1500         2
0       A    500         5

ソート結果を保持する方法

デフォルトでは、sort_values()sort_index() はソート後の新しいデータフレームを返します。元のデータフレームを変更したい場合は、inplace=True を指定します。

# 元のデータフレームを変更して昇順ソート
df.sort_values(by='Price', inplace=True)
print(df)

出力結果

  Product  Price  Quantity
0       A    500         5
4       E    700         9
2       C    800         7
3       D   1200         3
1       B   1500         2

実践例:売上データのソート

ステップ1:データの読み込み

売上データを含む sales_data.csv ファイルを読み込みます。

# sales_data.csv の読み込み
df_sales = pd.read_csv('sales_data.csv')
print(df_sales.head())

例のデータ

   OrderID Customer   Amount
0        1     John    2500
1        2     Mike    1500
2        3     Sara    3200
3        4     Mike    2800
4        5     John    3000

ステップ2:特定の列でソート

Amount 列で降順ソートして、売上金額の高い順に並べます。

# Amount列で降順ソート
df_sales_sorted = df_sales.sort_values(by='Amount', ascending=False)
print(df_sales_sorted.head())

出力結果

   OrderID Customer   Amount
2        3     Sara    3200
4        5     John    3000
3        4     Mike    2800
0        1     John    2500
1        2     Mike    1500

ステップ3:複数の列でソート

Customer 列で昇順、Amount 列で降順にソートして、顧客ごとに売上金額の高い順に並べます。

# Customerを昇順、Amountを降順でソート
df_sales_sorted_multi = df_sales.sort_values(by=['Customer', 'Amount'], ascending=[True, False])
print(df_sales_sorted_multi)

出力結果

   OrderID Customer   Amount
4        5     John    3000
0        1     John    2500
3        4     Mike    2800
1        2     Mike    1500
2        3     Sara    3200

まとめ

Pandasを使用すると、データを簡単にソートすることができます。sort_values() メソッドを活用して、さまざまな条件でデータを並び替えましょう。

重要なポイント

  • 単一の列でソートsort_values(by='列名')
  • 複数の列でソートsort_values(by=['列名1', '列名2'], ascending=[True, False])
  • インデックスでソートsort_index()
  • 元のデータフレームを変更inplace=True を指定

関連キーワード

  • Pandas
  • データソート
  • sort_values
  • データ分析
  • Python
  • DataFrame
  • 昇順ソート
  • 降順ソート
  • インデックスソート
  • データ操作

参考リンク


ご質問・ご意見

データのソートに関する疑問やご意見がありましたら、お気軽にコメントやお問い合わせください。


注意事項

データの取り扱いに関する法律や規約を遵守してください。


上部へスクロール