Skip to content
チュートリアル
Pandas
インデックスでPandas DataFrameをソートする

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

Pandasの最も強力な機能の中でも、Pandas DataFrameのソートに関して、fundamentalなメソッドの一つである、sort_index() メソッドについて解説していきます。このメソッドを使用することで、数値または文字列ベースのインデックスを持つPandas DataFrame をソートすることができます。このチュートリアルの最後まで進めることで、sort_index()を使用してデータをソートし、データ操作スキルを向上させる方法について、正確に理解できるようになります。

しかし、sort_index() メソッドに進む前に、まずPandas DataFrameとは何かについて簡単に説明しましょう。

Pythonでデータの視覚化を迅速に作成したい場合。

PyGWalkerは、Jupyter Notebookベースの環境から直接データ分析と可視化のワークフローを高速化するのに役立つ、オープンソースのPythonプロジェクトです。

PyGWalker (opens in a new tab)は、Pandas DataFrame(またはPolars DataFrame)を視覚的UIに変換し、変数をドラッグアンドドロップして簡単にグラフを作成することができます。以下のコードを使用するだけです:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

PyGWalkerをすぐに実行するには、次のオンラインノートブックを使用してください:

そして、GitHubで提供されるプロジェクトに⭐️をつけてください!

KaggleノートブックでPyGWalkerを実行 (opens in a new tab)Google ColabでPyGWalkerを実行 (opens in a new tab)PyGWalkerに⭐️をつける (opens in a new tab)
Run PyGWalker in Kaggle Notebook (opens in a new tab)Run PyGWalker in Google Colab (opens in a new tab)Run PyGWalker in Google Colab (opens in a new tab)

Pandas DataFrameとは?

Pandas DataFrameは、行と列にラベルが付けられた2次元テーブルです。スプレッドシートまたはSQLテーブルに似ています。DataFrameでは、行は観測値またはレコードを表し、列は変数または特徴を表します。

PandasはNumPyの上に構築されているため、大規模なデータセットのハンドリングや操作、ビジュアライゼーションが非常に高速に行えます。また、データクリーニング、データ操作、データビジュアライゼーションのための組み込みメソッドが提供されています。

Pandas DataFrameの基本的な理解を得たので、sort_index() メソッドに進みましょう。

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

sort_index() メソッドは、Pandas DataFrameをインデックス別にソートするために使用されます。DataFrameのインデックスは、スプレッドシートの行番号のようなものです。DataFrameの各行を識別します。

例を見てみましょう。

import pandas as pd 
 
 
# ディクショナリーを作成する
data = {'名前': ['ジョン', 'マーク', 'サラ', 'アンナ', 'ポール'],
       '年齢': [24, 34, 21, 19, 26],
       '都市': ['ニューヨーク', 'パリ', 'ロンドン', 'ベルリン', 'サンフランシスコ']}
 
# DataFrameを作成する 
df = pd.DataFrame(data, index=['b', 'a', 'd', 'c', 'e'])
 
# インデックスによってDataFrameをソートする 
df = df.sort_index()
print(df)

出力結果:

    名前  年齢               都市
a   マーク  34            パリ
b   ジョン  24         ニューヨーク
c   アンナ  19           ベルリン
d   サラ   21           ロンドン
e   ポール  26  サンフランシスコ

上記の例では、名前年齢都市の3つのキーを持つ辞書dataを作成しています。次に、この辞書を使用して、指定されたインデックスを持つDataFrame dfを作成しました。

DataFrameを作成した後、 sort_index()メソッドを使用して、インデックスによってDataFrameをソートしました。上記の例では、sort_index()メソッドは、DataFrameを昇順でインデックスすることを示しています。

インデックスを降順でソートする場合は、 sort_index(ascending = False)メソッドを使用できます。

# 降順にインデックスでDataFrameをソートする
df = df.sort_index(ascending=False)
print(df)

出力結果:

    名前  年齢               都市
e   ポール  26  サンフランシスコ
d   サラ   21          ロンドン
c   アンナ  19          ベルリン
b   ジョン  24        ニューヨーク
a   マーク  34            パリ

上記の例では、 sort_index(ascending = False)メソッドを使用して、DataFrameを降順でソートしています。

Pandasシリーズをインデックスでソートする

Pandasシリーズは、1次元のラベル付き配列です。これは、スプレッドシートの列に似ています。 DataFrameと同様に、Seriesにもインデックスがあります。

Pandasシリーズをインデックスでソートするには、 sort_index()メソッドを使用できます。

import pandas as pd 
 
# create a dictionary 
data = {'name': ['John', 'Mark', 'Sara', 'Anna', 'Paul'],
        'age': [24, 34, 21, 19, 26]}
 
# create a Series 
s = pd.Series(data['age'], index=data['name'])
 
# sort the Series by index 
s = s.sort_index()
print(s)

出力結果:

Anna    19
John    24
Mark    34
Paul    26
Sara    21
dtype: int64

上記の例では、 data['name']data['age']の2つのキーを持つ辞書dataを作成しました。次に、この辞書を使用して、シリーズ sを作成しました。このシリーズには、nameをインデックスとして、ageを値として持つ要素が含まれています。

シリーズを作成した後、 sort_index()メソッドを使用して、インデックスによってシリーズをソートしました。上記の例では、sort_index()メソッドは、シリーズを昇順でインデックスすることを示しています。

また、 sort_index(ascending = False)メソッドを使用して、インデックスを降順でソートすることもできます。

`'age': [24, 34, 21, 19, 26],
       'city': ['New York', 'Paris', 'London', 'Berlin', 'San Francisco']}`
 
# DataFrameを作成する
df = pd.DataFrame(data, index=['b', 'a', 'd', 'c', 'e'])
 
# DataFrameからSeriesを選択する
s = df['name']
 
# Seriesをインデックスでソートする
s = s.sort_index()
print(s)

出力:

a     Mark
b     John
c     Anna
d     Sara
e     Paul
Name: name, dtype: object

上記のコードでは、まずDataFrame df を指定したインデックスで作成しました。その後、変数sはDataFrameからname列をSeriesとして選択します。sort_index()メソッドを使用して、Seriesをそのインデックスでソートできます。

結論

このチュートリアルでは、PandasのDataFrameやSeriesをインデックスでソートするsort_index()メソッドの使い方について学びました。これは、大きなデータセットを簡単にクリーニングや操作するための強力な方法です。このチュートリアルが役立ち、参考になったことを願っています。