HTTP の経路に明示的なプロキシ制御が必要な場合は、まず CSV を取得し、得られたバイトを pandas に処理させます。

from io import BytesIO
import pandas as pd
import requests

route = {
    'http': 'http://proxy.example:8080',
    'https': 'http://proxy.example:8080',
}
with requests.get(
    'https://data.example/report.csv',
    proxies=route,
    timeout=(5, 30),
) as response:
    response.raise_for_status()
    frame = pd.read_csv(BytesIO(response.content), encoding='utf-8')

プロキシが転送を担い、HTTP プロキシ一覧が公開 HTTP 経路向けのエンドポイント候補を提供します。pandas はファイルのようなオブジェクトを受け取り、通常どおりの区切り文字、列、エンコーディング、データ型のオプションを適用します。

解析の前に HTTP の結果を確認すれば、明らかな HTTP エラーの本文を表として扱うことを避けられます。想定外の内容も確認してください。ログインやポリシーのページが 200 を返しつつ、要求した CSV ではなく HTML である場合があります。

HTTP URL では、read_csv の storage_options はリクエストヘッダーとして転送されます。このインターフェースは Requests 形式の proxies マッピングではありません。

バッファにはアーカイブのファイル名がないため、圧縮の推定に使えません。取得したペイロードが必要とする場合は compression を指定してください。同じ「先に取得する」構成は read_excel とバイトバッファでも機能し、その形式に適した表計算エンジンを使います。

この例はレスポンス全体をメモリに保持します。大きなエクスポートでは、管理されたローカルファイルにストリームし、そのファイルを解析してください。データの流れが許す場合は分割して処理します。

関連記事