압축된 파일을 Panda DataFrame으로 읽기
csv 파일의 압축을 풀고 파일 작업을 할 수 있도록 판다에게 전달하려고 합니다.
제가 지금까지 시도한 코드는 다음과 같습니다.
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'))
마지막 줄 이후에 파이썬이 파일을 가져올 수 있지만 오류 끝에 "존재하지 않습니다"라는 메시지가 나타납니다.
제가 뭘 잘못하고 있는지 누가 알려주실 수 있나요?
압축된 파일이나 tar.gz 파일을 팬더 데이터 프레임으로 읽고 싶다면,read_csv
메소드에는 이러한 특정 구현이 포함됩니다.
df = pd.read_csv('filename.zip')
또는 긴 형식:
df = pd.read_csv('filename.zip', compression='zip', header=0, sep=',', quotechar='"')
문서의 압축 인수에 대한 설명:
압축: {'infer', 'gzip', 'bz2', 'zip', 'xz', 'None', 기본값인 'infer' 디스크 데이터의 즉각적인 압축 해제를 위해 사용합니다.'infer' 및 filepath_or_buffer가 경로와 유사한 경우 '.gz', '.bz2', '.zip' 또는 '.xz'(그렇지 않으면 압축 해제 없음)의 확장에서 압축을 검색합니다.'zip'을 사용하는 경우 ZIP 파일에는 읽을 데이터 파일이 하나만 포함되어야 합니다.압축을 풀지 않으려면 없음으로 설정합니다.
버전 0.18.1의 새로운 기능: 'zip' 및 'xz' 압축 지원.
내 생각에 당신은 다음보다 파일과 같은 객체를 반환하는 ZipFile을 원할 것입니다.
In [11]: crime2013 = pd.read_csv(z.open('crime_incidents_2013_CSV.csv'))
In [12]: crime2013
Out[12]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 24567 entries, 0 to 24566
Data columns (total 15 columns):
CCN 24567 non-null values
REPORTDATETIME 24567 non-null values
SHIFT 24567 non-null values
OFFENSE 24567 non-null values
METHOD 24567 non-null values
LASTMODIFIEDDATE 24567 non-null values
BLOCKSITEADDRESS 24567 non-null values
BLOCKXCOORD 24567 non-null values
BLOCKYCOORD 24567 non-null values
WARD 24563 non-null values
ANC 24567 non-null values
DISTRICT 24567 non-null values
PSA 24567 non-null values
NEIGHBORHOODCLUSTER 24263 non-null values
BUSINESSIMPROVEMENTDISTRICT 3613 non-null values
dtypes: float64(4), int64(1), object(10)
압축을 더 이상 지정할 필요가 없는 것 같습니다.다음 코드 조각은 파일 이름에서 데이터를 로드합니다.df에 지퍼를 채웁니다.
import pandas as pd
df = pd.read_csv('filename.zip')
기본값과 다른 경우 구분자, 머리글 등을 지정해야 합니다.
"zip" 파일의 경우 다음을 사용할 수 있습니다.import zipfile
코드는 다음 행으로 간단하게 작동합니다.
import zipfile
import pandas as pd
with zipfile.ZipFile("Crime_Incidents_in_2013.zip") as z:
with z.open("Crime_Incidents_in_2013.csv") as f:
train = pd.read_csv(f, header=0, delimiter="\t")
print(train.head()) # print the first 5 rows
결과는 다음과 같습니다.
X,Y,CCN,REPORT_DAT,SHIFT,METHOD,OFFENSE,BLOCK,XBLOCK,YBLOCK,WARD,ANC,DISTRICT,PSA,NEIGHBORHOOD_CLUSTER,BLOCK_GROUP,CENSUS_TRACT,VOTING_PRECINCT,XCOORD,YCOORD,LATITUDE,LONGITUDE,BID,START_DATE,END_DATE,OBJECTID
0 -77.054968548763071,38.899775938598317,0925135...
1 -76.967309569035052,38.872119553647011,1003352...
2 -76.996184958456539,38.927921847721443,1101010...
3 -76.943077541353617,38.883686046653935,1104551...
4 -76.939209158039446,38.892278093281632,1125028...
당신의 외모는 다음과 같습니다.
from io import BytesIO
import requests
import pandas as pd
result = requests.get("https://www.xxx.zzz/file.zip")
df = pd.read_csv(BytesIO(result.content),compression='zip', header=0, sep=',', quotechar='"')
다음 기사를 읽고 이유를 알아보십시오. https://medium.com/dev-bits/ultimate-guide-for-working-with-i-o-streams-and-zip-archives-in-python-3-6f3cf96dca50
https://www.kaggle.com/jboysen/quick-gz-pandas-tutorial
이 링크를 따라오세요.
import pandas as pd
traffic_station_df = pd.read_csv('C:\\Folders\\Jupiter_Feed.txt.gz', compression='gzip',
header=1, sep='\t', quotechar='"')
#traffic_station_df['Address'] = 'address'
#traffic_station_df.append(traffic_station_df)
print(traffic_station_df)
언급URL : https://stackoverflow.com/questions/18885175/read-a-zipped-file-as-a-pandas-dataframe
'programing' 카테고리의 다른 글
메모리 제한 초과로 인해 Firebase의 클라우드 기능이 중지되었습니다. (0) | 2023.07.07 |
---|---|
MongoDB 집계 프레임워크를 사용하여 소수점 이하 2자리로 반올림 (0) | 2023.07.07 |
텍스트의 언어를 결정하는 방법은 무엇입니까? (0) | 2023.07.02 |
Python에서 지정된 URL에 매개 변수 추가 (0) | 2023.07.02 |
인터페이스에 클래스 바인딩 (0) | 2023.07.02 |