2013-05-03 5 views
-1

팬더에서 Excel 데이터를 사용하려고하며 float64 데이터를 정수 유형으로 변환해야하지만 구문 오류가 계속 발생합니다. 필자는 프로그래밍 언어에 대한 완전한 초보자입니다. 가능한 한 많은 도움을 주시면 감사하겠습니다. 팬더에서 Excel 파일을 여는 방법을 알아 내려고 일주일이 걸렸습니다. 이제는 문제가 발생합니다. matplotlib에서 사용할 수있는 형식으로 변환합니다. 내가 잘못 뭐하는 거지float64에서 정수로 변환 할 때 구문 오류가 발생했습니다.

Spectral Type = Spectral Type.astype('int') 
       ^
SyntaxError: invalid syntax 

:이 프로그램을 실행할 때

from pandas import ExcelFile 
import pandas as pd 
# Create ExcelFile object 
xlsx = ExcelFile('filename.xlsx') 
xlsx.parse(sheetname, parse_cols=6, index_col=None, na_values= ['NA'] 
# Convert float data types to integer 
Spectral Type = Spectral Type.astype('int') 

나는 좀 .. 내가 사용한 코드는 다음, 그래서 누군가가 도움이 될 수 있습니다 희망?

matplotlib에서 그래프를 만들 수 있도록 Excel 데이터에 액세스하고 사용하는 더 좋은 방법이 있습니까?

Type Value1 time1 Value2 time2 Value3 time3 

M0 8.87 41.11 8.41 41.11 8.16 65.78; 

가 M1에서 M6에 값을 계속 :

M6  13.95 4392.03 14.41 10395.13 14.66 25988.32 

스크립트 실행 :

`from pandas import ExcelFile` 
`import pandas as pd` 
`# Create ExcelFile object` 
`xlsx = ExcelFile('filename.xlsx')` 
`xlsx.parse(sheetname', parse_cols=6, index_col=None, na_values= ['NA'])` 
`df` 
을 unutbu에 응답 내 댓글 다시

내 데이터의 형식은

(구문 분석 작업에 지정된 열 이름이 추가됨)

반환 다음과 같은 출력 :

<class 'pandas.core.frame.DataFrame'> Int64Index : 11 개 항목, 0 ~ 10 데이터 열에 : 스펙트럼 형 크기 제한 10 null 이외의 값 (1.3 ") 10 null 이외의 값 1.3 @ 노출 시간 ", 초 10이 아닌 값 제한 크기 (2.0") 10이 아닌 값 노출 시간 @ 2.0 ", 10 초 null이 아닌 값 제한 크기 (2.5") 10이 아닌 값 10 노출 시간 @ 2.5 ", 초 10 이외의 값 dtypes : float64 (6), object (1)`

그래서, 지금 요청해야 할 질문은 다음과 같습니다

  1. 는 데이터 진수 것을 감안할 때 제한 크기 및 노출 시간 열의 내 데이터 유형을 변경하는 것이 필요하다?

  2. 필자는 스펙트럼 유형 열을 그대로 유지해야합니다. 어떻게해야합니까?

  3. 그래프를 작성할 수 있도록 데이터를 적절한 표 형식으로 배치하려면 어떻게해야합니까? Spectral Typexlsx에서 열 이름이면

답변

-1

다음 시도 :

import pandas as pd 
# Create ExcelFile object 
xlsx = pd.ExcelFile('filename.xlsx') 
df = xlsx.parse('sheetname', parse_cols=6, index_col=None, na_values= ['NA']) 

Spectral Type

df['Spectral Type'] 

는 DTYPE object이며 이러한 M0 같은 값을 포함한다. 이것들은 아마도 문자열 일 것입니다.어떤 경우이든, dtype은 int으로 변환 될 수 없습니다. 이것이 이유입니다.

df['Spectral Type'] = df['Spectral Type'].astype('int') 

오류가 발생했습니다. 대신, 당신은 다음 int에 DTYPE float의 열을 변환하려면

df['Limiting magnitude (1.3")'] = df['Limiting magnitude (1.3")'].astype('int') 

이 작동 것이다 - 나는 올바른 열의 이름을 가지고 가정.


는 데이터가 소수임을 감안할 때 제한 크기와 노출 시간 열의 내 데이터 유형을 변경하는 것이 필요하다? 당신이 게시 된 출력의 끝에서

는 팬더이 당신의 DataFrame의 일곱 개 기둥의, 6 DTYPE float64의이고 하나는 DTYPE object의 것을 말한다

dtypes: float64(6), object(1) 

를보고합니다. 크기 및 노출 시간 제한이 dtype float64이고 스펙트럼 유형이 dtype이 object 인 열 이름을 추측합니다.

이러한 추측이 맞으면 float64으로 조작하려는 경우 제한 강도 및 노출 시간 유형을 변경하지 않아도됩니다.


나는 그대로 스펙트럼 유형 열을 계속해야합니다; 어떻게해야합니까?

나는 그 질문을 이해하지 못한다. 정교하게 써 주시겠습니까?


내가 적절한 표 형식으로 내 데이터를 입력 할 수 있도록 어떻게해야합니까, 는 그래서 그것을 그래프 수 있습니까?

귀하의 데이터는 다음과 같이 표 형식으로 인쇄 할 수 있습니다 :

pd.set_option('display.max_columns', 7) 
print(df) 

당신이 matplotlib을 사용할 수, 플롯을 만들려면. 팬더에는 functions for plotting도 있습니다.

+0

'xlsx.parse' 줄의 구문 오류를 제외하고 결과는'xlsx'에 다시 바인딩되지 않는 것처럼 보이므로'xlsx'는'DataFrame'이 아닌'ExcelFile'이 아니십니까? 나는 보통'df = xlsx.parse (etc) '패턴을 사용한다. – DSM

+0

죄송합니다. 충분히 신중하게 읽지 않았습니다. 수정 해줘서 고마워. – unutbu

+0

unutbu 및 DSM 덕분에 데이터 형식을 변환 할 수 없습니다. 내가 시도한 것은 다음과 같다 : – user2324693

관련 문제