mei_13のPython講座 ロゴ

【解説】データの魔法使いになろう:Pythonの強力なライブラリ「Pandas」基礎講座




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

データの魔法使いになろう:Pythonの強力なライブラリ「Pandas」基礎講座


Yukiのアイコン
【Yuki】 Hirokiくん、こんにちは。今日はPythonの中でも特に人気があって、とっても便利な「Pandas(パンダス)」というライブラリについて、一緒にお勉強していきましょうか。 データ分析や事務作業の効率化には欠かせないツールなので、覚えておくと、きっと何かの役に立つと思います……。


Hirokiのアイコン
【Hiroki】 Yukiさん、よろしくお願いします!Pandasっていう名前は聞いたことがあります。でも、具体的に何ができるのかはまだよくわかってなくて……。PythonでExcelみたいなことができるって本当ですか?


Yukiのアイコン
【Yuki】 ええ、その通りです。正確には、Excelで行うようなデータの集計や加工を、プログラムで自動化したり、もっと大規模なデータに対して高速に行ったりすることができるんです。 誰かの不便を解消するために生まれたツールって、どこか温かみがあって素敵ですよね……。Pandasも、煩雑なデータ処理を助けるために開発された、とても優しいライブラリなんですよ。

Pandasとは何か


Yukiのアイコン
【Yuki】 Pandasは、Pythonで「データ解析」を支援するためのライブラリです。 主に、数値の表や時系列データを操作するためのデータ構造と演算を提供しています。 例えば、数万行ある売上データの中から特定の商品の合計を計算したり、欠けているデータを補完したりするのが得意なんです。


Hirokiのアイコン
【Hiroki】 数万行……!それを手作業でやるのは大変そうですけど、プログラムなら一瞬なんですね。 まずは、どうやって使い始めるんですか?


Yukiのアイコン
【Yuki】 まずはインストールが必要ですが、一般的な環境であれば pip install pandas で導入できます。 プログラムの中で使うときは、このようにインポートするのが慣習になっています。

import pandas as pd


Yukiのアイコン
【Yuki】 as pd とすることで、以降は pd という短い名前でPandasの機能を使えるようになります。 ……これは、Pythonの世界では暗黙のルールのようになっているので、合わせておくと他の人のコードを読むときもスムーズかもしれません。

2つの主要なデータ構造:SeriesとDataFrame


Yukiのアイコン
【Yuki】 Pandasを理解する上で一番大切なのは、「Series(シリーズ)」「DataFrame(データフレーム)」という2つのデータ構造を知ることだと思います。


Hirokiのアイコン
【Hiroki】 シリーズとデータフレーム……。なんだか難しそうな名前ですね。


Yukiのアイコン
【Yuki】 ふふ、大丈夫ですよ。 Seriesは「1次元」のデータ、つまり列が1つだけのリストのようなものです。 それに対して、DataFrameは「2次元」のデータ、つまり縦横がある「表」そのものを指します。 基本的には、この「DataFrame」を操作することがメインになると思います。


Hirokiのアイコン
【Hiroki】 なるほど!1列ならSeries、表になったらDataFrame、ということですね。


Yukiのアイコン
【Yuki】 物分かりがいいですね、Hirokiくん。 実際に簡単なDataFrameを作ってみましょうか。Pythonの辞書形式から作ることができます。

import pandas as pd

data = {
    '名前': ['佐藤', '鈴木', '高橋', '田中'],
    '数学': [85, 70, 90, 60],
    '英語': [75, 80, 85, 95]
}

df = pd.DataFrame(data)
print(df)


Hirokiのアイコン
【Hiroki】 わあ、本当に綺麗な表形式で表示されました! これなら、どのデータが何を表しているのか一目でわかりますね。

データの読み込みと確認


Yukiのアイコン
【Yuki】 実際の作業では、このように手入力でデータを作ることは少ないかもしれません。 多くの場合、外部のCSVファイルやExcelファイルを読み込んで処理することになります。 例えば、data.csv というファイルを読み込むときは、このように書きます。

df = pd.read_csv('data.csv')


Yukiのアイコン
【Yuki】 読み込んだ後は、まず中身をさらっと確認するのが大事です。 全部を表示すると大変なことになる場合もあるので、最初の5行だけを表示する head() というメソッドをよく使います。

# 最初の5行を表示
print(df.head())

# データの行数や列数、型を確認
print(df.info())


Hirokiのアイコン
【Hiroki】 info() を使うと、データに欠けがないか(欠損値)とかもわかるんですね。 プログラミング初心者の僕でも、これならデータの全体像を把握しやすそうです。

データの抽出とフィルタリング


Hirokiのアイコン
【Hiroki】 Yukiさん、表の中から「特定の列」だけを取り出したり、「特定の条件に合う行」だけを探したりすることもできるんですか?


Yukiのアイコン
【Yuki】 ええ、もちろんです。それがPandasの得意分野ですから。 特定の列を取り出したいときは、辞書のキーを指定するように書くだけで大丈夫です。

# 「名前」列だけを取り出す
names = df['名前']


Yukiのアイコン
【Yuki】 条件で絞り込むのも、直感的かもしれません。 例えば、「数学の点数が80点以上の人」を探したいときは、このように書きます。

# 数学が80点以上の行を抽出
high_score = df[df['数学'] >= 80]
print(high_score)


Hirokiのアイコン
【Hiroki】 df[df['数学'] >= 80] ……。少し書き方に癖がある気がしますけど、慣れれば簡単そうですね。 Excelのフィルター機能みたいで面白いです!


Yukiのアイコン
【Yuki】 そうですね。複数の条件を組み合わせることもできるんですよ。 例えば「数学が80点以上、かつ英語も80点以上」という場合は、& 記号を使います。 ……あ、でも、条件ごとにカッコ () で囲うのを忘れないようにしてくださいね。私はたまに忘れてエラーを出してしまうので……。

データの加工と計算


Yukiのアイコン
【Yuki】 次に、新しい列を追加したり、計算したりする方法を見てみましょうか。 例えば、数学と英語の「合計点」という列を新しく作りたい場合は、とてもシンプルに書けます。

# 「合計」列を追加
df['合計'] = df['数学'] + df['英語']

# 平均点を計算
mean_math = df['数学'].mean()
print(f"数学の平均点: {mean_math}")


Hirokiのアイコン
【Hiroki】 えっ、df['数学'] + df['英語'] だけで、全ての行に対して足し算が行われるんですか? for文とかを使って1行ずつループさせなくていいんですね!


Yukiのアイコン
【Yuki】 そうなんです。これを「ベクトル演算」と呼んだりしますが、Pandas(内部ではNumPyというライブラリ)が裏側でまとめて計算してくれているんです。 コードが短くなりますし、処理速度もループよりずっと速いんですよ。 ……効率的なツールを使うと、空いた時間でゆっくりパフェのこととか考えられるので、私は大好きです。

欠損値の処理


Yukiのアイコン
【Yuki】 実際のデータには、よく「値が入っていない部分」……いわゆる「欠損値(NaN)」が含まれていることがあります。 これをそのままにしておくと、計算がうまくいかなかったり、予期せぬエラーの原因になったりします。


Hirokiのアイコン
【Hiroki】 空欄があるだけでエラーになっちゃうのは困りますね。どうすればいいんですか?


Yukiのアイコン
【Yuki】 主な対策は2つあります。 「欠損値がある行を消してしまう」か、「何か別の値で埋める」か、です。

# 欠損値がある行を削除する
df_clean = df.dropna()

# 欠損値を0で埋める
df_filled = df.fillna(0)


Yukiのアイコン
【Yuki】 どちらがいいかはデータの性質によりますが、データを大切に扱いたいときは、平均値などで埋めることもありますね。 不完全なものを整えていく作業って、なんだか少し、壊れたおもちゃを修理しているような、優しい気持ちになれる気がしませんか……?


Hirokiのアイコン
【Hiroki】 あはは、Yukiさんらしい考え方ですね。でも、データを綺麗にするのが大事だっていうのはよくわかりました!

データのグループ化と集計


Yukiのアイコン
【Yuki】 最後に、少し応用的な「グループ化」についてお話ししますね。 例えば、「性別」ごとの平均点や、「クラス」ごとの合計点を知りたいときに使います。 groupby() というメソッドを使うと、驚くほど簡単に集計できるんです。

# 仮に「クラス」列があるとして、クラスごとの平均を出す
class_summary = df.groupby('クラス').mean()


Hirokiのアイコン
【Hiroki】 これ、Excelのピボットテーブルみたいな機能ですね! 一行書くだけで集計が終わるなんて、今まで手計算していたのが馬鹿らしくなっちゃいそうです。


Yukiのアイコン
【Yuki】 ふふ、そう思ってもらえたなら、Pandasを教えた甲斐がありました。 複雑な集計も、Pandasなら数行で記述できることが多いんです。 ……あ、でも、あまりに複雑なことをしようとすると、たまに頭が熱くなって「熱暴走」しそうになるので、少しずつ試していくのがいいと思いますよ。

まとめ


Hirokiのアイコン
【Hiroki】 Yukiさん、今日はありがとうございました! Pandasを使うと、データの読み込みから加工、集計まで、流れるようにできるのがよくわかりました。 Pythonを勉強するモチベーションがさらに上がりました!


Yukiのアイコン
【Yuki】 それは良かったです。 Pandasは機能がとても豊富なので、一度に全部を覚える必要はありません。 「こんなことがしたいな」と思ったときに、その都度調べていくのが上達の近道だと思います……。 公式サイトのドキュメントも、情報が充実していておすすめですよ。

Pandas公式ドキュメント(英語) Pandas ユーザーガイド(日本語訳/一部)


Yukiのアイコン
【Yuki】 ……今日は少し長くお話ししすぎてしまったかもしれません。 お腹、空きませんでしたか? 私は……そうですね、この後、お気に入りのフォントを設定したエディタで、少しだけプログラムを書こうと思います。 夜は静かで、作業が捗るんです。


Hirokiのアイコン
【Hiroki】 夜行性ですね(笑)。僕も復習してから寝ることにします。 また次も、いろいろ教えてください!


Yukiのアイコン
【Yuki】 ええ、喜んで。Hirokiくんがデータの扱いに慣れて、いつか誰かの役に立つツールを作れるようになるのを、こっそり応援していますね。 それでは、お疲れ様でした……。



「Pandas」のサンプルコードを見る

< Matplotlib
コラム一覧に戻る
scikit-learn >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki