본문 바로가기
파이썬

파이썬 numpy.genfromtxt를 사용하여 쉼표가 포함 된 문자열이있는 csv 파일 읽기

by º기록 2021. 1. 11.
반응형

numpy.genfromtxt 로 csv 파일을 읽으려고하는데 일부 필드는 쉼표가 포함 된 문자열입니다. 문자열은 따옴표 안에 있지만 numpy는 따옴표를 단일 문자열을 정의하는 것으로 인식하지 않습니다. 예를 들어 't.csv'의 데이터를 사용하는 경우 :

2012, "Louisville KY", 3.5
2011, "Lexington, KY", 4.0

코드

np.genfromtxt('t.csv', delimiter=',')

오류를 생성합니다.

ValueError : 일부 오류가 감지되었습니다! 줄 # 2 (3 대신 4 개의 열이 있음)

내가 찾고있는 데이터 구조는 다음과 같습니다.

array([['2012', 'Louisville KY', '3.5'],
       ['2011', 'Lexington, KY', '4.0']], 
      dtype='|S13')

문서를 살펴보면이 문제를 처리 할 수있는 옵션이 없습니다. numpy로 할 수있는 방법이 있습니까, 아니면 csv 모듈로 데이터를 읽은 다음 numpy 배열로 변환해야합니까?

 

해결 방법

 


quotechar : 문자열

The character to used to denote the start and end of a quoted item. Quoted items 
can include the delimiter and it will be ignored.

기본값은 "입니다. 예 :

In [1]: import pandas as pd

In [2]: from StringIO import StringIO

In [3]: s="""year, city, value
   ...: 2012, "Louisville KY", 3.5
   ...: 2011, "Lexington, KY", 4.0"""

In [4]: pd.read_csv(StringIO(s), quotechar='"', skipinitialspace=True)
Out[4]:
   year           city  value
0  2012  Louisville KY    3.5
1  2011  Lexington, KY    4.0

여기서 트릭은 쉼표 구분 기호 뒤의 공백을 처리하기 위해 skipinitialspace = True 를 사용해야한다는 것입니다.

강력한 csv 리더 외에도 보유하고있는 이기종 데이터에 pandas를 사용하도록 강력하게 조언 할 수 있습니다 (정형 배열을 사용할 수 있지만 numpy의 예제 출력은 모두 문자열 임).

 

참조 페이지 https://stackoverflow.com/questions/17933282

 

 

반응형

댓글