2012-03-29 4 views
1

CSV 파일을 읽으려면 팬더를 사용하고 있습니다. 데이터는 숫자이지만 csv 파일에 텍스트로 저장됩니다. 값 중 일부는 잘못되었거나 누락 된 경우 숫자가 아닙니다. 어떻게 이러한 값을 걸러 내고 나머지 데이터를 정수로 변환합니까?파이썬 판다에서 csv 읽기 및 잘못된 값 처리

모든 값을 반복하고 isdigit()을 사용하여 숫자가 아닌지 테스트하는 것이 더 빠르고 더 빠르다고 가정합니다.

팬더 또는 numpy는 판독기에서 잘못된 값을 인식하는 방법이 있습니까? 그렇지 않다면 가장 쉬운 방법은 무엇입니까? 이 작업을 수행하려면 d 유형을 구체적으로해야합니까?

답변

3

pandas.read_csv 매개 변수 na_values있다 :이 나쁜 값을 정의 할 수 있습니다

na_values : list-like, default None 
    List of additional strings to recognize as NA/NaN 

.

+0

좋습니다. 이것은 내가 찾고 있었던 것 같다. – Dave31415

+0

문자열이 열 종속적 인 경우 na_values를 사용할 수 있습니까? 예를 들어, 음수 값이 나쁜 일부 열은 있지만 다른 위치는 괜찮습니다. – Shawn

+1

@Shawn 없음. 이상적으로는 각 열에 대해 다르게 수행 할 수있는 na_values가 없습니다. 음수 값 처리는 데이터 사전 처리/정리 중에 수행해야합니다. – JKC

1

NumPy는 특별히이 목적으로 genfromtxt() 기능을 제공합니다. 연결된 문서의 첫 번째 문장 :

지정된 값으로 처리 된 누락 된 값이있는 텍스트 파일에서 데이터를로드하십시오.

+0

감사합니다. 나는 팬더가 더 높은 수준의 부가 기능으로되어 있다고 생각했다. 나는이 기능을 거기에서 기대하고 있었다. 그럼 그냥 사용하고 그것을 데이터 프레임으로 변환 하시겠습니까? – Dave31415

+0

@ Dave31415 : 데이터가 어떻게 보이는지 정확하게 알지 못합니다.하지만 이것이 가장 먼저 시도 할 방법입니다. –

+0

'pandas.read_csv'가 필요한 것을하지 않으면 GitHub에서 문제를 만드십시오 : http://github.com/pydata/pandas/issues –

3

pandas.read_csv을 사용하여 누락 된 것으로 처리 될 값의 사용자 지정 목록을 전달할 수 있습니다. 또는 함수를 converters 인수에 전달할 수 있습니다.