この記事は広告を含みます。
- はじめに
- 今回のテーマ:ゲームのスコアランキングを作る
- ① CSV を読み込む
- ② スコアが 80 以上のプレイヤーを取得
- ③ スコアランキング(降順ソート)を作る
- ④ 上位 3 人のランキングを取得
- 結論:「pandas を使わない理由がない!」
はじめに
「Python でデータを扱うなら pandas は必須」と言われるけど、最初から pandas を使わなくてもいいんじゃない? そう思って、Python の標準機能(リストや辞書)だけで頑張ってみた。
結果… めっちゃわかりにくい?感じになる!
実は、僕は 文系出身 で、プログラミングは理系の知識がなくてもコードは書けるけど、なるべく簡単な方法でデータ処理をしたい!
そこで今回は、「pandas なし vs pandas あり」 のコードを比較しながら、 pandas を使うとどれだけ楽になるのか? を解説する。
本日は文系でもわかるように! をモットーに、分かりやすく説明してみますので、よろしくお願いいたします。
⸻
今回のテーマ:ゲームのスコアランキングを作る
題材として、ゲームのスコアランキングを作る というシンプルな例を使ってみました。 データは scores.csv というCSVファイルに、プレイヤー名とスコアが入っている。
スコアデータ(scores.csv)
name,score たろう,95 くにお,88 ありさわ,72 David,100 どんがばちょ,85
やりたいこと
1. CSV を読み込む
2. スコアが 80 以上のプレイヤーを取得
3. スコアランキング(降順ソート)を作る
4. 上位 3 人のランキングを取得
では、pandas を使わない場合と、使う場合を比較してみます。
⸻
① CSV を読み込む
pandas なし(リスト+辞書)
import csv with open("scores.csv", newline="") as f: reader = csv.DictReader(f) data = [row for row in reader] print(data)
- 📌 データは辞書のリストになる(各行が辞書)
- 📌 "score" の値が文字列になっているので、数値に変換しないと後で面倒!
pandas あり
import pandas as pd df = pd.read_csv("scores.csv") print(df)
- ✅ たった1行で CSV をデータフレームに変換!
- ✅ score の値も自動で数値型に変換されるので楽!
② スコアが 80 以上のプレイヤーを取得
pandas なし
high_scores = [row for row in data if int(row["score"]) >= 80] print(high_scores)
- 📌 リスト内包表記でフィルタリング
- 📌 毎回 int(row["score"]) を使わないと数値比較できないのが面倒!
pandas あり
high_scores = df[df["score"] >= 80] print(high_scores)
- ✅ ワンライナーで OK!
- ✅ 数値変換の手間なし!
③ スコアランキング(降順ソート)を作る
pandas なし
sorted_scores = sorted(data, key=lambda x: int(x["score"]), reverse=True) print(sorted_scores)
- 📌 sorted() を使って並べ替える
- 📌 int() を使わないとソートが正しく動かない
- 📌 コードの見た目が複雑で可読性が低い
pandas あり
ranked_df = df.sort_values(by="score", ascending=False) print(ranked_df)
- ✅ sort_values() を使うだけで降順ソートができる!
- ✅ シンプルで可読性が高い!
④ 上位 3 人のランキングを取得
pandas なし
top3 = sorted_scores[:3] print(top3)
- 📌 スライスを使って上位 3 人を取得
- 📌 前の処理(ソート済みリスト)を前提としているので分かりにくい
pandas あり
top3 = df.nlargest(3, "score") print(top3)
- ✅ nlargest(3, "score") でワンライナー!
- ✅ 明確に「上位3人を取得する」という意味が伝わる!
pandas なし vs pandas あり の比較表
処理 | pandas なし | pandas あり |
---|---|---|
CSV 読み込み | csv.DictReader() を使う |
pd.read_csv() で一発 |
データのフィルタ | for + if でリストを再構築 |
df[df["score"] >= 80] でOK |
降順ソート | sorted() を使う |
sort_values() でシンプル |
上位 3 人取得 | [:3] を使う |
nlargest(3, "score") で明快 |
- ✅ pandas の方が圧倒的に簡単!
- ✅ データ型の変換を気にしなくていい!
- ✅ 処理がシンプルで可読性が高い!
結論:「pandas を使わない理由がない!」
僕はもともと文系出身で、プログラミングも後から学んだ。 だからこそ、「難しいことはなるべく避けたい」 という気持ちはすごくわかる。
でも、pandas を使わずに Python の標準機能(リストや辞書)だけでデータを処理しようとすると… めっちゃ面倒 だった。
pandas を使えば、「コードが短くなる」「可読性が上がる」「数値変換の手間がない」 というメリットがある。
結論として、「データ処理をするなら、最初から pandas を使うのが正解!」
文系でも大丈夫!プログラミングは理系じゃなくてもできる!? だからこそ、最初から 楽できる方法 を選びたいものです。 気になる人は、ぜひ pandas を試してみてください!