2016-12-25 2 views
1

파일을 읽을 DTYPE를 사용하여 팬더에서 누락 된 값 처리 이 부동 소수점 값이있는 열은 상승 및 오류가있는 누락 행을 갖습니다. 어떻게 처리 할 수 ​​있습니까?나는 각 열의 데이터의 유형을 지정 DTYPE를 사용하여 CSV 파일의 무리를 읽고 있어요

숫자 값의 경우 0, 이름의 경우 빈 문자열과 같은 기본값의 경우를 사용하고 싶습니다.

+1

'NaN'은 float dtype으로만 표현할 수 있으므로 여기에서 정확히 무엇을 원하십니까? 당신은 당신이 원하는 것을 진술하지 않고 문제가 있다고 말하고있는 것입니다. 누락 된 값을 대체하거나 삭제할 수 있습니다. – EdChum

+0

@EdChum 숫자 값의 경우 0, 이름의 경우 빈 문자열과 같은 기본값의 경우를 사용하고 싶습니다. –

답변

1

컨버터 사전을 사용 인수, 수입 컬럼에 사용자 정의 함수의 매핑 결과를 고려한다. 아래의 사용자 정의 메서드는 문자열의 모든 문자가 숫자 인 경우 True을 반환하는 내장 된 isdigit()을 사용하고 적어도 하나가 그렇지 않은 경우 False을 사용합니다. 문자열 대응 물로 isalpha(). 내용에 숫자를 허용 할 수 있도록 특히 문자열을 사용하여 필요에 맞게 조정하십시오.

import pandas as pd 

cleanFloat = lambda x: float(x if x.isdigit() else 0) 
cleanString = lambda x: str(x if x.isalpha() else '') 

dict_convert = {1:cleanFloat, 2:cleanString,} 
dict_type = {"columns_1":"int","column_2":"str"} 

df = pd.read_csv('Input.csv', converters=dict_convert, dtype=dict_type) 
0

누락 된 자리 표시자를 채우는 한 가지 방법은 데이터를 DataFrame으로 읽은 다음 채우기를 수행하는 것입니다. 같은

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import numpy as np 
import pandas as pd 

# csv data with missing data in each of the 2 columns 
csv_data = """number,colour 
3,blue 
12, 
2, 
2,red 
,yellow 
6,yellow 
14,purple 
4,green 
18,green 
11,orange""" 

df = pd.read_csv(pd.io.parsers.StringIO(csv_data)) 

df.number = df.number.fillna(-999) # fill missing numbers w/ -999 
df.colour = df.colour.fillna('UNK') # fill missing categorical w/ UNK 

print df 

# In [1]: run test.py 
# number colour 
# 0  3.0 blue 
# 1 12.0  UNK 
# 2  2.0  UNK 
# 3  2.0  red 
# 4 -999.0 yellow 
# 5  6.0 yellow 
# 6 14.0 purple 
# 7  4.0 green 
# 8 18.0 green 
# 9 11.0 orange