Menu
CoddyTech

値の並べ替え

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 39/60。

最も多く得点したのは誰でしょうか?並べ替えると答えがひと目でわかります。.sort_values("col")は列で行を並べ替え、最小値を先頭にします。ascending=Falseにすると、最大値が先頭になります。

左側は元の順序の選手テーブル、矢印の先の右側はポイントの降順(31から8)に並べ替えたテーブル。すべての行でラベルはそのままで、上位2人のBenとDeeにはhead(2)の印が付いている

players = pd.DataFrame({
    "player": ["Ada", "Ben", "Cy", "Dee", "Eli"],
    "points": [14, 31, 8, 22, 17],
})
top = players.sort_values("points", ascending=False)
print(top.head(2))

上位 2 件を出力します:

  player  points
1    Ben      31
3    Dee      22

行はラベルも一緒に保持されます。Ben のラベルは 1 のままです。そのため、top の最初の行は top.iloc[0] ですが、top.loc[0] は引き続き Ada です。

sort_valuesは新しいテーブルを返し、playersは元のままなので、結果を変数に保存しましょう。

challenge icon

チャレンジ

中級

アプリストアには、列 app、downloads_k(千単位)、rating を含む apps.csv にアプリの一覧があります。プログラムは列名と数値 n を読み取り、次を出力します。

  1. その列の値が最も大きい n 行を、値の大きい順に出力します。
  2. Lowest: と、値が最も小さいアプリを出力します。

スターターコードには、並べ替えの誤りが2つあります。両方を修正してください。別のストアで、rating と n = 2 の場合:

       app  downloads_k  rating
2   PetPal           88     4.9
0  Zipline          512     4.5
Lowest: Mosaic

自分で試してみよう

import pandas as pd

apps = pd.read_csv("apps.csv")
column = input()
n = int(input())

# このコードは誤った結果を出力します。修正してください
apps.sort_values(column, ascending=False)
print(apps.head(n))
lowest = apps.sort_values(column, ascending=False)
print(f"Lowest: {lowest.iloc[0]['app']}")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ