2016-10-01 5 views
2

팬더 데이터 프레임으로 CSV 데이터를 가져올 때 누락 된 데이터 문제에 대한 만족스러운 해결책을 찾지 못했습니다.팬더에서 누락 된 데이터 다루기 read_csv

나는 이 어떤 열이나 데이터 형식이인지 미리 알지 못하는 데이터 세트가 있습니다. 나는 판다가 데이터를 읽는 방법을 추론하는 더 나은 일을하고 싶습니다.

정말 도움이되는 na_values=...의 조합을 찾지 못했습니다.

no_holes.csv

letter,number 
a,1 
b,2 
c,3 
d,4 

with_holes.csv

letter,number 
a,1 
,2 
b, 
,4 

empty_column.csv

:

는 다음 CSV 파일을 고려

letters,numbers 
,1 
,2 
,3 
,4 

with_NA.csv 여기

letter,number 
a,1 
b,NA 
NA,3 
d,4 

내가 DataFrame (아래 코드)로 읽을 때 발생하는 것입니다 :

**no holes** 
    letter number 
0  a  1 
1  b  2 
2  c  3 
3  d  4 
letter object 
number  int64 
dtype: object 

**with holes** 
    letter number 
0  a  1 
1 NaN  2 
2  b  
3 NaN  4 
letter object 
number object 
dtype: object 

**empty_column** 
    letters numbers 
0  NaN  1 
1  NaN  2 
2  NaN  3 
3  NaN  4 
letters float64 
numbers  int64 
dtype: object 

**with NA** 
    letter number 
0  a  1.0 
1  b  NaN 
2 NaN  3.0 
3  d  4.0 
letter  object 
number float64 
dtype: object 

빈 가정 팬더을 말할 수있는 방법이 있나요 값은 object 유형입니까? 나는 na_values=[""]을 시도했다.

demo_holes.py

import pandas as pd 

with_holes = pd.read_csv("with_holes.csv") 
no_holes = pd.read_csv("no_holes.csv") 
empty_column = pd.read_csv("empty_column.csv") 
with_NA = pd.read_csv("with_NA.csv") 

print("\n**no holes**") 
print(no_holes.head()) 
print(no_holes.dtypes) 
print("\n**with holes**") 
print(with_holes.head()) 
print(with_holes.dtypes) 
print("\n**empty_column**") 
print(empty_column.head()) 
print(empty_column.dtypes) 
print("\n**with NA**") 
print(with_NA.head()) 
print(with_NA.dtypes) 
+0

fillna는'na_values의 = "을"하려고 사용하는'하나 개의 공간 문자로. – HYRY

답변

2

당신이 매개 변수 skipinitialspace=True

설정

no_holes = """letter,number 
a,1 
b,2 
c,3 
d,4""" 

with_holes = """letter,number 
a,1 
,2 
b, 
,4""" 

empty_column = """letters,numbers 
,1 
,2 
,3 
,4""" 

with_NA = """letter,number 
a,1 
b,NA 
NA,3 
d,4""" 

from StringIO import StringIO 
import pandas as pd 

d1 = pd.read_csv(StringIO(no_holes), skipinitialspace=True) 
d2 = pd.read_csv(StringIO(with_holes), skipinitialspace=True) 
d3 = pd.read_csv(StringIO(empty_column), skipinitialspace=True) 
d4 = pd.read_csv(StringIO(with_NA), skipinitialspace=True) 

pd.concat([d1, d2, d3, d4], axis=1, 
      keys=['no_holes', 'with_holes', 
       'empty_column', 'with_NA']) 

enter image description here

를 사용하려면 당신이 그 NaN'' 수 있도록하려면

다음

d1 = pd.read_csv(StringIO(no_holes), skipinitialspace=True).fillna('') 
d2 = pd.read_csv(StringIO(with_holes), skipinitialspace=True).fillna('') 
d3 = pd.read_csv(StringIO(empty_column), skipinitialspace=True).fillna('') 
d4 = pd.read_csv(StringIO(with_NA), skipinitialspace=True).fillna('') 

pd.concat([d1, d2, d3, d4], axis=1, 
      keys=['no_holes', 'with_holes', 
       'empty_column', 'with_NA']) 

enter image description here