(1時間4,000円の伴走型ビデオチャット指導も受付中!)
データの魔法使いになろう:Pythonの強力なライブラリ「Pandas」基礎講座
![]()
【Yuki】
Hirokiくん、こんにちは。今日はPythonの中でも特に人気があって、とっても便利な「Pandas(パンダス)」というライブラリについて、一緒にお勉強していきましょうか。
データ分析や事務作業の効率化には欠かせないツールなので、覚えておくと、きっと何かの役に立つと思います……。
![]()
【Hiroki】
Yukiさん、よろしくお願いします!Pandasっていう名前は聞いたことがあります。でも、具体的に何ができるのかはまだよくわかってなくて……。PythonでExcelみたいなことができるって本当ですか?
![]()
【Yuki】
ええ、その通りです。正確には、Excelで行うようなデータの集計や加工を、プログラムで自動化したり、もっと大規模なデータに対して高速に行ったりすることができるんです。
誰かの不便を解消するために生まれたツールって、どこか温かみがあって素敵ですよね……。Pandasも、煩雑なデータ処理を助けるために開発された、とても優しいライブラリなんですよ。
Pandasとは何か
![]()
【Yuki】
Pandasは、Pythonで「データ解析」を支援するためのライブラリです。
主に、数値の表や時系列データを操作するためのデータ構造と演算を提供しています。
例えば、数万行ある売上データの中から特定の商品の合計を計算したり、欠けているデータを補完したりするのが得意なんです。
![]()
【Hiroki】
数万行……!それを手作業でやるのは大変そうですけど、プログラムなら一瞬なんですね。
まずは、どうやって使い始めるんですか?
![]()
【Yuki】
まずはインストールが必要ですが、一般的な環境であれば pip install pandas で導入できます。
プログラムの中で使うときは、このようにインポートするのが慣習になっています。
import pandas as pd
![]()
【Yuki】
as pd とすることで、以降は pd という短い名前でPandasの機能を使えるようになります。
……これは、Pythonの世界では暗黙のルールのようになっているので、合わせておくと他の人のコードを読むときもスムーズかもしれません。
2つの主要なデータ構造:SeriesとDataFrame
![]()
【Yuki】
Pandasを理解する上で一番大切なのは、「Series(シリーズ)」と「DataFrame(データフレーム)」という2つのデータ構造を知ることだと思います。
![]()
【Hiroki】
シリーズとデータフレーム……。なんだか難しそうな名前ですね。
![]()
【Yuki】
ふふ、大丈夫ですよ。
Seriesは「1次元」のデータ、つまり列が1つだけのリストのようなものです。
それに対して、DataFrameは「2次元」のデータ、つまり縦横がある「表」そのものを指します。
基本的には、この「DataFrame」を操作することがメインになると思います。
![]()
【Hiroki】
なるほど!1列ならSeries、表になったらDataFrame、ということですね。
![]()
【Yuki】
物分かりがいいですね、Hirokiくん。
実際に簡単なDataFrameを作ってみましょうか。Pythonの辞書形式から作ることができます。
import pandas as pd
data = {
'名前': ['佐藤', '鈴木', '高橋', '田中'],
'数学': [85, 70, 90, 60],
'英語': [75, 80, 85, 95]
}
df = pd.DataFrame(data)
print(df)
![]()
【Hiroki】
わあ、本当に綺麗な表形式で表示されました!
これなら、どのデータが何を表しているのか一目でわかりますね。
データの読み込みと確認
![]()
【Yuki】
実際の作業では、このように手入力でデータを作ることは少ないかもしれません。
多くの場合、外部のCSVファイルやExcelファイルを読み込んで処理することになります。
例えば、data.csv というファイルを読み込むときは、このように書きます。
df = pd.read_csv('data.csv')
![]()
【Yuki】
読み込んだ後は、まず中身をさらっと確認するのが大事です。
全部を表示すると大変なことになる場合もあるので、最初の5行だけを表示する head() というメソッドをよく使います。
# 最初の5行を表示
print(df.head())
# データの行数や列数、型を確認
print(df.info())
![]()
【Hiroki】
info() を使うと、データに欠けがないか(欠損値)とかもわかるんですね。
プログラミング初心者の僕でも、これならデータの全体像を把握しやすそうです。
データの抽出とフィルタリング
![]()
【Hiroki】
Yukiさん、表の中から「特定の列」だけを取り出したり、「特定の条件に合う行」だけを探したりすることもできるんですか?
![]()
【Yuki】
ええ、もちろんです。それがPandasの得意分野ですから。
特定の列を取り出したいときは、辞書のキーを指定するように書くだけで大丈夫です。
# 「名前」列だけを取り出す
names = df['名前']
![]()
【Yuki】
条件で絞り込むのも、直感的かもしれません。
例えば、「数学の点数が80点以上の人」を探したいときは、このように書きます。
# 数学が80点以上の行を抽出
high_score = df[df['数学'] >= 80]
print(high_score)
![]()
【Hiroki】
df[df['数学'] >= 80] ……。少し書き方に癖がある気がしますけど、慣れれば簡単そうですね。
Excelのフィルター機能みたいで面白いです!
![]()
【Yuki】
そうですね。複数の条件を組み合わせることもできるんですよ。
例えば「数学が80点以上、かつ英語も80点以上」という場合は、& 記号を使います。
……あ、でも、条件ごとにカッコ () で囲うのを忘れないようにしてくださいね。私はたまに忘れてエラーを出してしまうので……。
データの加工と計算
![]()
【Yuki】
次に、新しい列を追加したり、計算したりする方法を見てみましょうか。
例えば、数学と英語の「合計点」という列を新しく作りたい場合は、とてもシンプルに書けます。
# 「合計」列を追加
df['合計'] = df['数学'] + df['英語']
# 平均点を計算
mean_math = df['数学'].mean()
print(f"数学の平均点: {mean_math}")
![]()
【Hiroki】
えっ、df['数学'] + df['英語'] だけで、全ての行に対して足し算が行われるんですか?
for文とかを使って1行ずつループさせなくていいんですね!
![]()
【Yuki】
そうなんです。これを「ベクトル演算」と呼んだりしますが、Pandas(内部ではNumPyというライブラリ)が裏側でまとめて計算してくれているんです。
コードが短くなりますし、処理速度もループよりずっと速いんですよ。
……効率的なツールを使うと、空いた時間でゆっくりパフェのこととか考えられるので、私は大好きです。
欠損値の処理
![]()
【Yuki】
実際のデータには、よく「値が入っていない部分」……いわゆる「欠損値(NaN)」が含まれていることがあります。
これをそのままにしておくと、計算がうまくいかなかったり、予期せぬエラーの原因になったりします。
![]()
【Hiroki】
空欄があるだけでエラーになっちゃうのは困りますね。どうすればいいんですか?
![]()
【Yuki】
主な対策は2つあります。
「欠損値がある行を消してしまう」か、「何か別の値で埋める」か、です。
# 欠損値がある行を削除する
df_clean = df.dropna()
# 欠損値を0で埋める
df_filled = df.fillna(0)
![]()
【Yuki】
どちらがいいかはデータの性質によりますが、データを大切に扱いたいときは、平均値などで埋めることもありますね。
不完全なものを整えていく作業って、なんだか少し、壊れたおもちゃを修理しているような、優しい気持ちになれる気がしませんか……?
![]()
【Hiroki】
あはは、Yukiさんらしい考え方ですね。でも、データを綺麗にするのが大事だっていうのはよくわかりました!
データのグループ化と集計
![]()
【Yuki】
最後に、少し応用的な「グループ化」についてお話ししますね。
例えば、「性別」ごとの平均点や、「クラス」ごとの合計点を知りたいときに使います。
groupby() というメソッドを使うと、驚くほど簡単に集計できるんです。
# 仮に「クラス」列があるとして、クラスごとの平均を出す
class_summary = df.groupby('クラス').mean()
![]()
【Hiroki】
これ、Excelのピボットテーブルみたいな機能ですね!
一行書くだけで集計が終わるなんて、今まで手計算していたのが馬鹿らしくなっちゃいそうです。
![]()
【Yuki】
ふふ、そう思ってもらえたなら、Pandasを教えた甲斐がありました。
複雑な集計も、Pandasなら数行で記述できることが多いんです。
……あ、でも、あまりに複雑なことをしようとすると、たまに頭が熱くなって「熱暴走」しそうになるので、少しずつ試していくのがいいと思いますよ。
まとめ
![]()
【Hiroki】
Yukiさん、今日はありがとうございました!
Pandasを使うと、データの読み込みから加工、集計まで、流れるようにできるのがよくわかりました。
Pythonを勉強するモチベーションがさらに上がりました!
![]()
【Yuki】
それは良かったです。
Pandasは機能がとても豊富なので、一度に全部を覚える必要はありません。
「こんなことがしたいな」と思ったときに、その都度調べていくのが上達の近道だと思います……。
公式サイトのドキュメントも、情報が充実していておすすめですよ。
Pandas公式ドキュメント(英語) Pandas ユーザーガイド(日本語訳/一部)
![]()
【Yuki】
……今日は少し長くお話ししすぎてしまったかもしれません。
お腹、空きませんでしたか?
私は……そうですね、この後、お気に入りのフォントを設定したエディタで、少しだけプログラムを書こうと思います。
夜は静かで、作業が捗るんです。
![]()
【Hiroki】
夜行性ですね(笑)。僕も復習してから寝ることにします。
また次も、いろいろ教えてください!
![]()
【Yuki】
ええ、喜んで。Hirokiくんがデータの扱いに慣れて、いつか誰かの役に立つツールを作れるようになるのを、こっそり応援していますね。
それでは、お疲れ様でした……。
「Pandas」のサンプルコードを見る
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

