pandasについて
pandasはデータフレームという二次元の表形式のデータを扱うことができます
自分は主にスクレイピングして取得した情報をデータフレームに格納し、エクセル出力をするのに利用しています
環境
windows 11
pandas 2.2.3
まずはインストール
pip install pandas
インポートします 以後、使いやすいように pd とします
import pandas as pd
自分がよく使うメソッドは辞書型データをデータフレームに変換することです
例えばネット通販サイトを selenium でスクレイピングをして、商品情報を辞書型に格納します
その辞書型データをリストに追加していきます
#商品の詳細ページURLが item_href_list に格納されている
#item_pageとしてURLに1ページずつアクセス、情報取得
for item_page in item_href_list:
driver.get(item_page)
time.sleep(1)
#商品情報取得
title=driver.find_element(By.CSS_SELECTOR,"div.labelContainer__a7d91561>h1").text
price=driver.find_element(By.CSS_SELECTOR,"div[data-testid='price']").text
info=driver.find_element(By.CSS_SELECTOR,"pre[data-testid='description']").text
#商品情報リストに追加
item_dict={"タイトル":title,"価格":price,"詳細":info,"URL":item_page}
item_detail_list.append(item_dict)
この辞書型の商品情報が入ったリストをデータフレームに変換します
df=pd.DataFrame(item_detail_list)
データフレームを表示してみます
print(df)
# タイトル 価格 詳細 URL
# 0 商品A 1000 XXXXX https://XXXXX
# 1 商品B 1500 XXXXX https://XXXXX
# 2 商品C 800 XXXXX https://XXXXX
# 3 商品D 2500 XXXXX https://XXXXX
# 4 商品E 1100 XXXXX https://XXXXX
データフレームの値を取得します
a = df.at[2, '価格']
print(a)
# 800
データフレームの値を入力、または修正します
df.at[0, '価格'] = '3000'
print(df.at[0, '価格'])
# 3000
特定の列を抜き出して別のデータフレームを作成します
df_price=df['価格']
print(df_price)
# 価格
# 0 1000
# 1 1500
# 2 800
# 3 2500
# 4 1100
データフレームからリスト形式に変換
title_list = df["タイトル"].tolist()
print(title_list)
#['商品A','商品B','商品C','商品D','商品E']
CSVファイルに出力
df.to_csv('data.csv')
data.csv という名前のcsvファイルがカレントディレクトリに保存されます
保存先をパス指定するなら
df.to_csv(r"download\data.csv")
これは相対パス指定で、カレントディレクトリの中の downloadというディレクトリに、data.csvというファイル名で保存します
パスの指定にraw文字列を使用しています
raw文字列の使い方は以下の記事をご参考ください
同じようにエクセルファイルに出力
df.to_excel(r"download\data.xlsx", sheet_name='No.1')
第一引数に保存先パスと保存するファイル名を指定、第二引数に最初のシート名を指定します
シート名を省力すると、デフォルトの”Sheet1″というシート名になります
コメント