[python] pandas 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 파일을 pandas 데이터 프레임으로 읽으려면 read_csv메서드에이 특정 구현이 포함됩니다.

df = pd.read_csv('filename.zip')

또는 긴 형식 :

df = pd.read_csv('filename.zip', compression='zip', header=0, sep=',', quotechar='"')

문서 의 압축 인수에 대한 설명 :

compression : { ‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}, 기본값 ‘infer’온 디스크 데이터의 즉석 압축 해제 용. ‘infer’및 filepath_or_buffer가 경로와 유사한 경우 ‘.gz’, ‘.bz2’, ‘.zip’또는 ‘.xz'(그렇지 않으면 압축 해제 없음) 확장자에서 압축을 감지합니다. ‘zip’을 사용하는 경우 ZIP 파일에는 읽을 데이터 파일이 하나만 있어야합니다. 압축을 풀지 않으려면 없음으로 설정하십시오.

버전 0.18.1의 새로운 기능 : ‘zip’및 ‘xz’압축 지원.


답변

나는 당신이 open대신 파일과 같은 객체를 반환하는 ZipFile 을 원한다고 생각합니다 read.

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)


답변

더 이상 압축을 지정할 필요가없는 것 같습니다. 다음 스 니펫은 filename.zip의 데이터를 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...


답변

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)


답변