
【第7回】スクレイピングデータをCSVに保存し、Pandasで活用しよう
以下では、前回の記事(【第6回】超入門!Webスクレイピングに挑戦)に続いて、スクレイピングしたデータをCSVに保存し、Pandasを使って活用する方法を具体的に解説します。
初心者の方でも動かしながら理解できるよう、できるだけ噛み砕いて書いてみましたので、ぜひ参考にしてみてください!
【第7回】スクレイピングデータをCSVに保存し、Pandasで活用しよう
こんにちは!
前回は requests + BeautifulSoup を使ったWebスクレイピングの基礎を学びました。
ページのHTMLを解析して欲しい情報だけを抜き出せると、いろいろなサイトからデータを収集できて便利ですよね。
しかし、スクレイピングしたデータをただ出力するだけではもったいない!
今回は、「取得したデータをCSVファイルに保存 → Pandasで読み込んでみる」 という流れを体験してみましょう。
「CSVに保存すると何がいいの?」 「Pandasってデータ分析以外でも便利なの?」 「実際のコードが知りたい!」
こんな疑問を解消しつつ、具体的なサンプルを通して「スクレイピング + データ活用」の入り口を開いていきましょう。
▼ 目次
なぜCSV保存が便利なのか?
Pandasをインストールして準備する
スクレイピングコードにCSV出力を追加しよう
PandasでCSVを読み込み・表示してみる
ちょっと応用:データを並べ替えたり集計してみる
次回予告:グラフ描画&可視化に挑戦!
1. なぜCSV保存が便利なのか?
1-1. CSVファイルとは?
CSV(Comma-Separated Values)は、文字通りカンマ区切りでデータを並べたテキストファイル。
ExcelやGoogleスプレッドシートなど、多くのソフトで手軽に読み込み・編集が可能です。
プログラムでも扱いやすいため、スクレイピングなどで取得したデータの保存先としてよく使われます。
1-2. CSVのメリット
汎用性が高い: ほぼすべての表計算ソフトやプログラミング言語で扱える。
軽量でシンプル: バイナリ形式ではなくテキスト形式なので、Gitなどで差分管理もしやすい。
Pandasなどのツールと相性抜群: Pythonで表形式のデータを扱うときにスムーズ。
2. Pandasをインストールして準備する
2-1. 仮想環境をアクティブに
前回同様、プロジェクトフォルダで仮想環境をアクティベートしましょう。
cd /path/to/your/project
source venv_sample/bin/activate # Mac/Linux
# Windowsなら:
.\venv_sample\Scripts\Activate.ps1
2-2. インストール
pip install pandas
これで Pandas が使えるようになります。
Pandasはデータ分析ライブラリとして有名ですが、CSVの読み書き、整形、集計などの機能が非常に充実しています。
3. スクレイピングコードにCSV出力を追加しよう
まずは前回のスクレイピング例を少し改造して、取得したデータをCSVファイルに保存してみましょう。
例として、「Scraping Club」のサイトから商品名と価格を抜き出すサンプルコードを用意しました。
import requests
from bs4 import BeautifulSoup
import csv
def scrape_and_save_csv():
url = "https://scrapingclub.com/exercise/list_basic/?page=1"
response = requests.get(url)
if response.status_code != 200:
print("エラーが発生しました:", response.status_code)
return
soup = BeautifulSoup(response.text, "html.parser")
# 商品がまとめられている要素を取得
cards = soup.find_all("div", class_="p-4")
# CSVにまとめるためのリスト
data_list = []
for card in cards:
# 商品名 (h4タグ)
title_tag = card.find("h4")
title = title_tag.text.strip() if title_tag else "No Title"
# 価格 (h5タグ) ※サイトの構造によって適宜変更
price_tag = card.find("h5")
price = price_tag.text.strip() if price_tag else "No Price"
data_list.append([title, price])
# CSVファイルに書き込み
with open("products.csv", mode="w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
# ヘッダー行
writer.writerow(["Title", "Price"])
# データ本体
writer.writerows(data_list)
print("CSVファイル『products.csv』にデータを保存しました。")
if __name__ == "__main__":
scrape_and_save_csv()
コード解説
import csv
Pythonの標準ライブラリcsvを使うと、CSVへの書き込みがラクになります。
with open("products.csv", mode="w", ...) as f:
products.csv という名前で、書き込みモード(w)でファイルを開く。
csv.writer(f) でCSVファイルへ書き込むための writer オブジェクトを作る。
writer.writerow(["Title", "Price"]) でヘッダー行を書き込み。
writer.writerows(data_list) で、複数の行を一括で書き込む。
data_list は [ [商品名1, 価格1], [商品名2, 価格2], ... ] という二次元リスト。
このスクリプトを実行すると、同じフォルダに products.csv が生成され、取得した商品名と価格が表形式で保存されます。
4. PandasでCSVを読み込み・表示してみる
では、次にPandasを使って、この products.csv を読み込んでみましょう。
import pandas as pd
def load_and_show_csv():
df = pd.read_csv("products.csv", encoding="utf-8")
print("CSVをDataFrameとして読み込みました!")
print(df)
if __name__ == "__main__":
load_and_show_csv()
コード解説
import pandas as pd : Pandasは pd の省略名で使うのが一般的。
pd.read_csv("products.csv", encoding="utf-8") : CSVを読み込んでDataFrameという表形式のデータ構造に変換。
print(df) : df を表示すると、エクセルやスプレッドシートのような行列データが出力されます。
このスクリプトを実行すると、ターミナル上にタイトルと価格の一覧がきれいに表示されるはず。
Pandasを使うと、CSVを「1行目→カラム名」「2行目以降→データ」として自動で解析し、扱いやすい形にしてくれます。
5. ちょっと応用:データを並べ替えたり集計してみる
5-1. 価格データを数値に変換
前の例では、価格が $24.99 のように文字列になっています。
数値計算したいときは、文字列→数値型への変換が必要です。
df["Price"] = df["Price"].str.replace("$", "").astype(float)
print(df)
str.replace("$", "") で $ を空文字に置き換え。
.astype(float) で文字列を浮動小数点数にキャスト。
5-2. 並べ替え(ソート)
df_sorted = df.sort_values(by="Price", ascending=False)
print("価格が高い順に並べ替え:")
print(df_sorted)
sort_values で並べ替えができる。by にカラム名を指定。
ascending=False で降順(大きい→小さい順)に。
5-3. 基本統計量
print("基本統計情報:")
print(df["Price"].describe())
describe() で、平均値や標準偏差、最小値・最大値などが一気に表示される。
初心者のうちは「とりあえず describe() をかけてみる」だけでも、データの概要が把握できるのでおすすめです。
余力があれば、先ほどのコードにこれらを追記して、dfの中身を編集したり、見てみたりしましょう!
6. 次回予告:グラフ描画&可視化に挑戦!
今回の記事では、
スクレイピングしたデータをCSVに保存
PandasでCSVを読み込み・表示し、並べ替えや統計を試す
といった流れを体験しました。
「ただデータを取得するだけ」で終わらず、表形式で整理して活用することで、さらに応用の幅が広がるはずです。
次回は、PandasやMatplotlibなどを使って、グラフ描画や可視化に挑戦してみましょう。
集めたデータを棒グラフや折れ線グラフにするだけで、新たな発見や見やすさが生まれます。
「プログラムでデータを扱う楽しさ」を、ぜひ一緒に味わっていきましょう!
まとめ
CSV形式は軽量&汎用性が高いフォーマット:スクレイピングしたデータの保存先として便利
Pandasを使うと、CSVを簡単に表(DataFrame)として扱える
数値変換→並べ替え→基本統計 など、少しのコードでデータ処理が可能
今回は価格データの例を挙げたが、いろんな数値データに応用できる
スクレイピングで収集したデータは、そのまま眺めても大変ですが、CSV保存→Pandasで整理すると扱いやすい状態に変わります。
このスキルを身につければ、「手作業でコピペする苦労」から一歩解放されるかもしれません。
ぜひ実際にコードを動かしてみて、
「こんなサイトからデータを取ってみよう!」
「取得したデータをExcelで開いてみよう!」
「Pythonで軽く分析してみよう!」
といったステップに挑戦してみてください。
最後まで読んでいただき、ありがとうございました!
次回はグラフ描画&可視化に挑戦し、ビジュアル面からデータを楽しむ方法を学んでいきましょう。
編集後記
初心者の方は「スクレイピングも学んで、Pandasも使って…覚えることが多い!」と感じるかもしれません。
最初は「動くサンプルを写経(コピーして実行)」でもOKです。
動くものを手元で試して、少しずつ改変してみると「こういうふうにやればいいのか!」という実感が得られます。
Pandasは奥が深く、もっと覚えたい機能が山ほどありますが、まずはCSV読み書きと基本的な操作ができれば十分実用的です。
ぜひ次の記事も参考にして、Pythonでのデータ処理の楽しさに触れていきましょう!