pandas なし vs pandas あり:Python でのデータ処理を比較してみた〜 文系でもできる!Python でのデータ処理 〜

この記事は広告を含みます。

はじめに

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)

③ スコアランキング(降順ソート)を作る

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 を試してみてください!