Darllen CSV drwy ddirprwy gyda pandas a Requests
Estynnwch CSV gyda thrawsport Requests wedi'i ffurfweddu, gwiriwch ei ganlyniad HTTP, a rhowch buffer beit i pandas ar gyfer dosrannu.
Pan fo'r llwybr HTTP angen rheolaeth ddirprwyol benodol, estynnwch y CSV yn gyntaf a gadewch i pandas drin y beit sy'n deillio:
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')
Mae'r dirprwy'n trin y cludiant; mae'r rhestr ddirprwy HTTP yn darparu ymgeiswyr pen draw ar gyfer llwybr HTTP cyhoeddus. Mae pandas yn derbyn gwrthrych tebyg i ffeil ac yn cymhwyso ei opsiynau arferol ar gyfer rhanadwy, colofnau, amgodi a mathau data.
Mae gwirio'r canlyniad HTTP cyn dosrannu yn osgoi trin corff gwall HTTP amlwg fel tabl. Archwiliwch gynnwys annisgwyl hefyd: gall tudalen mewngofnodi neu bolisi ddychwelyd 200 ac fod yn HTML o hyd yn lle'r CSV a ofynnwyd amdano.
Ar gyfer URLau HTTP, anfonir storage_options read_csv fel pennawdau cais. Nid yw'r rhyngwyneb hwnnw'n fapio proxies ar ffordd Requests.
Nid oes gan buffer enw archif i lywio casgliad cywasgu. Nodwch compression pan fo'r llwyth a gafwyd yn gofyn amdano. Mae'r un drefn estyn-yn-gyntaf yn gweithio gyda read_excel a buffer beit, gan ddefnyddio'r peiriant taenlen sy'n addas i'r fformat hwnnw.
Mae'r enghraifft hon yn cadw'r ymateb cyfan yn y cof. Ar gyfer allforiad mawr, ffrydiwch ef i ffeil leol a reolir a dosrennwch y ffeil honno, gyda darnio lle mae'r llif gwaith data yn cefnogi hynny.