2016-06-27 32 views

cevap

46

Elle, bir numpy dizisi (data) ve sütunlar (columns) ait isim listesini vererek pd.DataFrame kurucu kullanabilirsiniz. Burada ben yaptıklarınızı edilir

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

Bu kodu açıklamak için biraz metin ekleyebilir misiniz? Bu standartlarımız tarafından biraz özet. – gung

+1

Bazı demetlerin, özellik_adı sütunlar parametresini kıracak bir ndarray olarak var. –

+0

Eksik "Türler" anahtarı ve veri çerçevesi için değerler. – mastash3ff

0

da olabilir daha iyi bir yol ama: sen np.c_[...] ile bir numpy diziye özellikleri ve hedef arada kullanabilirsiniz, tek DataFrame her şeyi sahip olmak ([] dikkat edin)

Şimdi
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 ihtiyacınız olan herşeye sahip olacak - değişken özellikler hedefleyip

+1

TomDLT'nin çözümü, yukarıda önerdiğimden çok daha üstün. Aynı şeyi yapıyor ama çok zarif ve anlaşılması kolay. Bunu kullan! – Shanbhag

+0

'mydata = pd.DataFrame (öğeler [1] [1])' atar TypeError: 'dict_items' nesnesi, dizinlemeyi desteklemiyor ' –

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: geçmiş ve oldukça iyi çalışıyor belki ilgi

Bu eğitimde: http://www.neural.cz/dataset-exploration-boston-house-pricing.html

+3

Hedefle verileri birleştirmek gerekiyor: df = pd.DataFrame (np.concatenate ((iris.data, np.array ([iris.target]). T), eksen = 1), sütunlar = iris.feature_names + ['target']) –

1

iyi yanıtı kapalı Çalışma ve benim yorumunu adresleme, burada bu benim için çalışıyor dönüşüm

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

için bir işlevdir.

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

TOMDLt'in çözümü, scikit-learn'deki tüm veri kümeleri için yeterli genel değildir. Örneğin, boston konut veri kümesi için çalışmaz. Daha evrensel olan farklı bir çözüm öneririm. Numpy'yi de kullanmaya gerek yok. Temelde bunun yerine gitmek olsun, sadece tam o sırada özellikleri matris ile bir veri çerçevesi yapmak ve gelen bitiştirme

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

: Sadece etrafta çok daha kolay kafamı sarabilirdiniz alternatif olarak

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

veri kümesi hedef değerleri [ 'whatvername'] veri hedef sütun ekleyin ve kapmak

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) 
bu anlamaya beni 2 saat sürdü

Pandalarım için türünü geri al