2016-06-27 2 views

답변

46

수동으로, 당신은 NumPy와 배열 (data)과 열 (columns)의 이름 목록을 제공 pd.DataFrame 생성자를 사용할 수 있습니다. 여기에 나는에 한 일을한다

import numpy as np 
import pandas as pd 
from sklearn.datasets import load_iris 

# save load_iris() sklearn dataset to iris 
# if you'd like to check dataset type use: type(load_iris()) 
# if you'd like to view list of attributes use: dir(load_iris()) 
iris = load_iris() 

# np.c_ is the numpy concatenate function 
# which is used to concat iris['data'] and iris['target'] arrays 
# for pandas column argument: concat iris['feature_names'] list 
# and string list (in this case one string); you can make this anything you'd like.. 
# the original dataset would probably call this ['Species'] 
data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']], 
        columns= iris['feature_names'] + ['target']) 
+3

이 코드를 설명하기 위해 약간의 글자를 추가 할 수 있습니까? 이것은 우리의 표준에 의해 다소 간략합니다. – gung

+1

일부 묶음은 feature_names를 ndarray로 사용하여 columns 매개 변수를 해제합니다. –

+0

데이터 프레임에 대한 "Species"키와 값이 누락되었습니다. – mastash3ff

0

가있을 수 있습니다 더 좋은 방법이 있지만 : 당신이 np.c_[...] 하나 개 NumPy와 배열로 기능과 대상을 연결할 수 있습니다, 하나 DataFrame 모든 것을 가지려면합니다 ([] 주)을

지금
items = data.items()       #Gets all the data from this Bunch - a huge list 
mydata = pd.DataFrame(items[1][1])   #Gets the Attributes 
mydata[len(mydata.columns)] = items[2][1]  #Adds a column for the Target Variable 
mydata.columns = items[-1][1] + [items[2][0]] #Gets the column names and updates the dataframe 

mydata을 당신이 필요로하는 모든 것입니다 - 변수, 속성을 대상으로하고

+1

TomDLT의 해결책은 제가 위에 제안한 것보다 훨씬 낫습니다. 그것은 똑같은 일을하지만 아주 우아하고 이해하기 쉽습니다. 그것을 사용하십시오! – Shanbhag

+0

'mydata = pd.DataFrame (items [1] [1])'throws'TypeError : 'dict_items'객체가 인덱싱을 지원하지 않습니다. ' –

17
from sklearn.datasets import load_iris 
import pandas as pd 

data = load_iris() 
df = pd.DataFrame(data.data, columns=data.feature_names) 
df.head() 
을 COLUMNNAMES : 과거와는 아주 잘 작동합니다 아마도 관심의

이 튜토리얼 : http://www.neural.cz/dataset-exploration-boston-house-pricing.html

+3

대상과 데이터를 연결해야합니다. df = pd.DataFrame (np.concatenate (iris.data, np.array ([iris.target]). T), 축 = 1), columns = iris.feature_names + [ 'target']) –

1

최선의 답을 근무하고 내 의견을 주소, 여기이 나를 위해 작동 변환

def bunch_to_dataframe(bunch): 
    fnames = bunch.feature_names 
    features = fnames.tolist() if isinstance(fnames, np.ndarray) else fnames 
    features += ['target'] 
    return pd.DataFrame(data= np.c_[bunch['data'], bunch['target']], 
       columns=features) 
2

하는 기능입니다.

dataFrame = pd.dataFrame(data = np.c_[ [iris['data'],iris['target'] ], 
columns=iris['feature_names'].tolist() + ['target']) 
7

TOMDLt의 솔루션은 scikit-learn의 모든 데이터 세트에 대해 충분히 일반적인 것은 아닙니다. 예를 들어 보스턴 주택 데이터 세트에서는 작동하지 않습니다. 나는 보편적 인 다른 해결책을 제안한다. numpy도 사용할 필요가 없습니다. 기본적으로 대신 이동 얻을, 방금 다음 기능의 매트릭스 데이터 프레임을 만들어에서 합치의

data = load_iris() 
df = pd.DataFrame(data['data'], columns=data['feature_names']) 
df['target'] = data['target'] 
df.head() 

: 그냥 내가 주위에 훨씬 쉽게 내 머리를 정리 수있는 대안으로

from sklearn import datasets 
import pandas as pd 

boston_data = datasets.load_boston() 
df_boston = pd.DataFrame(boston_data.data,columns=boston_data.feature_names) 
df_boston['target'] = pd.Series(boston_data.target) 
df_boston.head() 
5

데이터 세트로부터 목표 값 [ 'whatvername'] 데이터 목표 컬럼을 추가하고 잡아

0

import numpy as np 
import pandas as pd 
from sklearn.datasets import load_iris 

iris = load_iris() 
##iris.keys() 


df= pd.DataFrame(data= np.c_[iris['data'], iris['target']], 
       columns= iris['feature_names'] + ['target']) 

df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names) 
,174 이것을 알아 내게 2 시간 걸렸다

내 팬더의 종을 되 찾으십시오.

관련 문제