PandasのDataFrameは強力なデータ操作ツールを提供し、ソートは基本的な操作です。この記事では、重要なsort_values()
メソッドとその主要な引数であるascending
とna_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を効率的かつ正確にソートし、データ分析ワークフローを合理化できます。