2017-03-09 3 views
1

이 주제에 관한 몇 가지 질문을 읽었지만 아무것도 나를 위해 작동하지 않는 것 같습니다.URL을 팬텀 데이터 프레임으로 열 이름 (파이썬 3)

열의 특정 이름을 사용하여이 페이지 "http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/heart/heart.dat"에서 데이터를 검색하려고합니다.

내 코드는 모든 단일 열이기 때문에 나, 데이터의 컬럼에 이름을 할당하지 않는 다음과 같은 :

import pandas as pd 
import io 
import requests 
url="http://archive.ics.uci.edu/ml/machine-learningdatabases/statlog/heart/heart.dat" 
s=requests.get(url).content 
header_row = ['age','sex','chestpain','restBP','chol','sugar','ecg','maxhr','angina','dep','exercise','fluor','thal','diagnosis'] 
c=pd.read_csv(io.StringIO(s.decode('utf-8')), names=header_row) 
print(c) 

출력은 다음과 같습니다

 age sex chestpain \ 
0 70.0 1.0 4.0 130.0 322.0 0.0 2.0 109.0 0.0 2.4... NaN  NaN 
1 67.0 0.0 3.0 115.0 564.0 0.0 2.0 160.0 0.0 1.6... NaN  NaN 
2 57.0 1.0 2.0 124.0 261.0 0.0 0.0 141.0 0.0 0.3... NaN  NaN 
3 64.0 1.0 4.0 128.0 263.0 0.0 0.0 105.0 1.0 0.2... NaN  NaN 

내 목표를 달성하려면 무엇을해야합니까?

대단히 감사합니다!

+0

당신은 확실한가요? 그것을 여는 중 404 오류가 발생했습니다 –

+0

올바른 URL https://archive.ics.uci.edu/ml/machine-learning-databases/statlog/heart/heart.dat –

답변

1

입력하신 링크에 하이픈이 누락되었습니다. 내 대답에서 그 문제를 해결했습니다. 기본적으로 s 문자열을 utf-8으로 디코딩 한 다음 \n으로 분할하여 각 행을 가져온 다음 각 행을 공백으로 분할하여 각 값을 따로 가져옵니다. 이렇게하면 판다 데이터 프레임으로 변환 할 수있는 데이터 세트의 중첩 목록 표현이 제공되고 나면 열 이름을 지정할 수 있습니다.

import pandas as pd 
import io 
import requests 
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/statlog/heart/heart.dat" 
s = requests.get(url).content 
s = s.decode('utf-8') 
s_rows = s.split('\n') 
s_rows_cols = [each.split() for each in s_rows] 
header_row = ['age','sex','chestpain','restBP','chol','sugar','ecg','maxhr','angina','dep','exercise','fluor','thal','diagnosis'] 
c = pd.DataFrame(s_rows_cols, columns = header_row) 
c.head() 
+0

대단히 감사합니다! 이것은 내가 필요로하는 것이었다! 친애하는!!! –

관련 문제