Data Analysis

Pandas DataFrame 高度なソート術:網羅ガイド

Spread the love

PandasのDataFrameは強力なデータ操作ツールを提供し、ソートは基本的な操作です。この記事では、重要なsort_values()メソッドとその主要な引数であるascendingna_positionに焦点を当てて、DataFrameを単一列で効率的にソートする方法について説明します。

目次

ascendingによるソート順の制御

sort_values()メソッドは、ソート方向を簡単に制御できます。ascending引数(デフォルトはTrue(昇順))は、昇順または降順でソートするかどうかを決定します。


import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 22, 28],
        'Score': [85, 92, 78, 88]}

df = pd.DataFrame(data)

# 'Age'列で昇順ソート
df_ascending = df.sort_values(by='Age')
print("昇順:n", df_ascending)

# 'Age'列で降順ソート
df_descending = df.sort_values(by='Age', ascending=False)
print("n降順:n", df_descending)

na_positionによる欠損値の処理

欠損値(NaN)を含むデータセットを扱う場合、na_position引数は、ソートされた列内でのこれらの値の配置を制御します。2つの値を受け入れます。

  • 'first'(デフォルト):NaN値をソートされた列の先頭に配置します。
  • 'last':NaN値をソートされた列の末尾に配置します。

import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
        'Age': [25, 30, np.nan, 28, 22],
        'Score': [85, 92, 78, 88, 95]}

df = pd.DataFrame(data)

# NaN値を先頭に
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaNを先頭に:n", df_na_first)

# NaN値を末尾に
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaNを末尾に:n", df_na_last)

複数列によるソート

by引数にリストを渡すことで、複数の列でソートすることも簡単にできます。Pandasは、リスト内の最初の列、次に2番目の列などでソートします。


# Age列(昇順)、次にScore列(降順)でソート
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("n複数列によるソート:n", df_multi)

インプレースソート

デフォルトでは、sort_values()は新しいソート済みDataFrameを返します。DataFrameを直接変更するには、inplace引数をTrueに設定します。これは元のDataFrameを変更するため、注意が必要です。


df.sort_values(by='Age', inplace=True)
print("nインプレースソート:n", df)

これらの引数を理解して使用することで、Pandas DataFrameを効率的かつ正確にソートし、データ分析ワークフローを合理化できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です