値の並べ替え
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 39/60。
最も多く得点したのは誰でしょうか?並べ替えると答えがひと目でわかります。.sort_values("col")は列で行を並べ替え、最小値を先頭にします。ascending=Falseにすると、最大値が先頭になります。
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は元のままなので、結果を変数に保存しましょう。
チャレンジ
中級アプリストアには、列 app、downloads_k(千単位)、rating を含む apps.csv にアプリの一覧があります。プログラムは列名と数値 n を読み取り、次を出力します。
- その列の値が最も大きい
n行を、値の大きい順に出力します。 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']}")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
データとプロットのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ