Pandasでデータを簡単に並べ替え!sortの使い方を徹底解説

「sort」の使い方 Pandas

Pandasは、Pythonでデータ分析を行う上で非常に便利なライブラリです。

特に、データをソート(並べ替え)する機能はよく使用されます。

この記事では、Pandasのsort_values()sort_index()を使ったデータの並べ替え方法について、初心者でもわかりやすく解説していきます。

指定した列を基にデータの並べ替え(sort_values)

sort_values()の基本的な使い方

Pandasのsort_values()関数は、指定した列を基にデータを並べ替えることができます。

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# 'Age'列でソート
sorted_df = df.sort_values(by='Age')

# 出力
print(sorted_df)
ゆーや
ゆーや

sort_values(by=’Age’)で、Age列を基に昇順でソートされています。
by引数には、ソートしたい列名を指定します。

昇順・降順の切り替え

デフォルトでは昇順にソートされますが、降順にソートしたい場合は、ascending=Falseを使用します!

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# 'Score'列で降順にソート
sorted_df = df.sort_values(by='Score', ascending=False)

# 出力
print(sorted_df)

複数のカラムでソートする方法

複数の列を基にソートすることもできます。

例えば、Ageで昇順にソートし、その次にScoreで降順にソートしたいとします!

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# 'Age'で昇順'Score'で降順にソート
sorted_df = df.sort_values(by=['Age', 'Score'], ascending=[True, False])

# 出力
print(sorted_df)

インデックスを並べ替える(sort_index)

データフレームにはインデックスが設定されていることが多く、これを基に並べ替えることも可能です。

sort_index()を使ってインデックスでソートする例を紹介します。

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# インデックスを降順にソート
sorted_df = df.sort_index(ascending=False)

# 出力
print(sorted_df)

sort_index()はインデックスを基にデータを並べ替えます!
ascending=Falseで降順に並べ替えができます!

並べ替えのパフォーマンスを考慮した

大量のデータを扱う場合、並べ替え操作は時間がかかることがあります。その際に役立つヒントをいくつか紹介します。

inplace=Trueでメモリ使用量を抑える

sort_values()やsort_index()ではinplace=Trueを設定することで、元のデータフレームを直接変更できます。

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# メモリ節約のためにinplace=Trueを使用
df.sort_values(by='Age', inplace=True)

# 出力
print(df)

kindオプションでソートアルゴリズムを指定

デフォルトでは、Pandasはquicksortアルゴリズムを使用しますが、データの特性に応じてmergesortheapsortを指定することでパフォーマンスが向上することがあります。

import pandas as pd

# サンプルデータを作成
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 19, 30, 22, 25],
    'Score': [85, 92, 78, 90, 88]
}

# データフレームを作成
df = pd.DataFrame(data)

# 'mergesort'を使用して安定ソート
df.sort_values(by='Age', kind='mergesort', inplace=True)

# 出力
print(df)
ゆーや
ゆーや

大量のデータを読み込んで、いろいろなソートを試してみよう!

まとめ

Pandasのsort_values()sort_index()を使えば、データの並べ替えが非常に簡単に行えます。

この記事で紹介した内容をマスターすれば、データの可読性が向上し、より効率的な分析が可能になるでしょう。

特に、複数のカラムでのソートやパフォーマンスを考慮したソートを覚えておくと、大量のデータを扱う際に役立ちます。

コメント

タイトルとURLをコピーしました