2017-12-28 1 views
1

xlsx 파일에서 팬더로 읽은 데이터를 플롯하려고합니다. 이것은 새로운 문제가되지 않습니다 내가 바로이 문제를 다루는이 사이트의 페이지의 많은 따랐다Excel 파일 및 DataFrame 오류를 그릴 숫자 데이터가 없음

TypeError: Empty 'DataFrame': no numeric data to plot 

: 약간의 서식 및 데이터 품질 검사 후, 나는하기 matplotlib를 사용하여 플롯 그러나 다음과 같은 오류를 얻을려고 . 게시 된 제안은 불행히도 나를 위해 일하지 않았습니다.

내 데이터 세트 인해 그래픽에 문자열 (첫 번째 열을 샘플링 사이트의 위치와 제한), 날짜 (나는 pd.to_datetime를 사용하여 올바른 형식으로 변환 한) 많은 NaN 항목 (즉이 0으로 변환 할 수 없습니다 포함 분석), 다양한 분석 매개 변수를 나타내는 열 머리글. 이 사이트에서 읽을 제안의 일부 사항에 따라

, 나는 나에게 다음과 같은 오류 ValueError: could not convert string to float: 'Site 1' (사이트 1은 샘플링 위치)를 제공하는 다음 코드

  1. df = df.astype(float)

  2. 을 시도 df = df.apply(pd.to_numeric, errors='ignore') 이것은 다음을 제공합니다 : dtypes: float64(13), int64(1), object(65) 따라서 대부분의 데이터가 객체로 남아 있기 때문에 작동하지 않는 것 같습니다. 날짜 항목은 INT64하고 데이터 열의 일부는 float64 이유를 알아낼 수 없으며,이 작업이 NaN와 전체 DataFrame을 채 웁니다 가능성이 있기 때문에, 전체 DataFrame를 삭제

  3. df = df.apply(pd.to_numeric, errors='coerce') 객체 일부 남아?

나는 어떤 통찰력도 고맙게 생각합니다.

편집 나는 의견의 일부를 기반으로 내 자신의 질문을 해결할 수 있었다. 여기에 나를 위해 일한 것입니다 :

데이터 샘플없이 대답 할 수 있지만이 숫자 열을 100 % 숫자인지 확인하는 경우,이 아마 작동 하드
df = "path" 

header = [0] # keep column headings as first row of original data 
skip = [1]  # skip second row, which has units of measure 
na_val = ['.','-.','-+0.01'] # Convert spurious decimal points that have 
           # no number associated with them to NaN 
convert = {col: float for col in (4,...,80)} # Convert specific rows to 
               # float from original text 
parse_col = ("A","C","E:CC") # apply to specific columns 

df = pd.read_excel(df, header = header, skiprows = skip, 
na_values = na_val, converters = convert, parse_columns = parse_col) 

답변

1

:

for c in df.columns: 
try: 
    df[c] = df[c].astype(int) 
except: 
    pass 
+0

이 대답은 그러나 올바른 접근 방법은 몇 가지입니다.

    - OP는 접근 방식 2에서 올바른 방향으로 가고 있지만 전체 프레임 대 단일 열에 적용하려고 시도하고 있습니다. 그건 분명히 중요합니다. - 원본 질문을 기반으로 .astyle (float)이어야합니다. - try-except는 접근 방식을 구현하는 데 매우 추상적 인 방법입니다.

+0

@cop - 주석에 감사드립니다. 불행히도 도움이 될만 큼 명확하지 않습니다. 당신이 맞습니다, 나는 시각화를 촉진하기 위해 전체 데이터 세트에 부유 보정을 적용하려고합니다. 어떻게 당신의 제안에 'astyle (float)'을 적용해야합니까? – Newstudent14

+0

Ezer K의 astype (int) 대신에 astype (float)이어야합니다. "astyle"부분은 오타였습니다. –

관련 문제