Próbuję rozpakować plik csv i przekazać go do pand, aby móc pracować nad plikiem.
Kod, który do tej pory wypróbowałem, to:
import requests, zipfile, StringIO
r = requests.get('http://data.octo.dc.gov/feeds/crime_incidents/archive/crime_incidents_2013_CSV.zip')
z = zipfile.ZipFile(StringIO.StringIO(r.content))
crime2013 = pandas.read_csv(z.read('crime_incidents_2013_CSV.csv'))
Po ostatnim wierszu, mimo że Python jest w stanie pobrać plik, na końcu błędu pojawia się komunikat „nie istnieje”.
Czy ktoś może mi powiedzieć, co robię nieprawidłowo?
quotechar
?.tar.gz
plik, ale prawdopodobnie działa tylko z.gz
plikiem.Myślę, że chcesz
open
ZipFile, który zwraca obiekt podobny do pliku, a nieread
:źródło
pd.read_csv(z.open('crime_incidents_2013_CSV.csv'), parse_dates=['REPORTDATETIME', 'LASTMODIFIEDDATE'])
pd.read_csv(z.open(z.infolist()[0].filename))
Wygląda na to, że nie musisz już nawet określać kompresji. Poniższy fragment kodu ładuje dane z filename.zip do df.
(Oczywiście będziesz musiał określić separator, nagłówek itp., Jeśli różnią się one od wartości domyślnych).
źródło
W przypadku plików „ zip ” możesz użyć,
import zipfile
a Twój kod będzie działał po prostu z następującymi wierszami:Rezultatem będzie:
źródło
https://www.kaggle.com/jboysen/quick-gz-pandas-tutorial
Proszę skorzystać z tego linku.
źródło