Pandasを用いたスクレイピングデータのクリーニングと保存
By JoeVu, at: 2023年12月17日22:05
Estimated Reading Time: __READING_TIME__ minutes


ウェブスクレイピングは、多くの場合、大量の非構造化データを生成し、効果的に使用するには、クレンジングと整理が必要です。Pandasは、Pythonの強力なデータ操作ライブラリであり、このタスクに最適なツールです。
このガイドでは、Pandasを使用してスクレイピングされたデータをクレンジングして保存するための基本的なテクニックについて説明します。
Pandas入門
Pandasは、データ構造とデータ分析ツールを提供するPythonライブラリです。構造化データの処理に非常に強力であり、CSV、Excel、SQLデータベースなど、さまざまなファイル形式を処理できます。Pandasの主要なコンポーネントを以下に示します。
- Series: 任意のデータ型を保持できる1次元ラベル付き配列。
- DataFrame: スプレッドシートやSQLテーブルと同様に、潜在的に異なるデータ型の列を持つ2次元ラベル付きデータ構造。
スクレイピングされたデータをPandasに読み込む
まず、スクレイピングされたデータをPandas DataFrameに読み込む必要があります。スクレイピングされたデータを辞書のリストに格納していると仮定すると、次のように読み込むことができます。
import pandas as pd
# サンプルのスクレイピングデータ
data = [
{'name': 'Comic book', 'price': 28.8, 'author': 'Joey'},
{'name': 'Earphone', 'price': 34.2, 'author': 'Snowy'},
{'name': 'iPhone 5 case', 'price': 22.9, 'author': 'Chiky'}
]
# DataFrameにデータを読み込む
df = pd.DataFrame(data)
print(df)
データのクレンジング
データクレンジングは、データを分析の準備をする上で重要なステップです。欠損値の処理、重複の削除、矛盾の修正が含まれます。一般的なデータクレンジングタスクを以下に示します。
欠損値の処理
欠損値は、コンテキストと欠損データの重要性に応じて、いくつかの方法で処理できます。
-
欠損値の特定:
print(df.isnull().sum())
-
欠損値の補完:
df['price'].fillna(df['price'].mean(), inplace=True) # 平均値で欠損値を補完
-
欠損値を含む行の削除:
df.dropna(inplace=True)
重複の削除
重複は分析を歪める可能性があるため、削除することが重要です。
df.drop_duplicates(inplace=True)
矛盾の修正
入力ミスやフォーマットの違いにより、データに矛盾が生じる可能性があります。データの標準化が重要です。
df['city'] = df['city'].str.title() # 市名をタイトルケースに標準化
データの変換
データの変換には、データを必要な形式または構造に変換することが含まれます。
データ型の変換
各列が適切なデータ型であることを確認します。
df['price'] = df['price'].astype(float)
新しい列の作成
既存の列から派生した新しい列を作成する必要がある場合があります。
df['price_category'] = df['price'].apply(lambda x: 'Expensive' if x >= 100 else 'Cheap')
クレンジングされたデータの保存
データがクレンジングおよび変換されたら、後で簡単にアクセスして分析できる形式で保存する必要があります。
CSVへのデータ保存
CSVは、表形式データを保存するための一般的な形式です。
df.to_csv('cleaned_data.csv', index=False)
Excelへのデータ保存
Excel形式は、より複雑なデータ保存に役立ちます。
df.to_excel('cleaned_data.xlsx', index=False)
データベースへのデータ保存
大規模なデータセットの場合、SQLデータベースにデータを保存する方が効率的です。
from sqlalchemy import create_engine
engine = create_engine('sqlite:///scraped_data.db')
df.to_sql('data', engine, index=False, if_exists='replace')
結論
スクレイピングされたデータのクレンジングと保存は、データ分析パイプラインにおける重要なステップです。Pandasを使用することで、大規模なデータセットを効率的に処理し、データの正確性、一貫性、および整理を確保できます。
これにより、より優れた分析が促進されるだけでなく、データの信頼性と実用性も向上します。