2016-06-27 10 views
30

मैं एक विज्ञान-सीखने के गुच्छा ऑब्जेक्ट से डेटा को पांडस डेटाफ्रेम में कैसे परिवर्तित करूं?एक विज्ञान-सीखने वाले डेटासेट को पांडस डेटासेट में कैसे परिवर्तित करें?

from sklearn.datasets import load_iris 
import pandas as pd 
data = load_iris() 
print(type(data)) 
data1 = pd. # Is there a Pandas method to accomplish this? 

उत्तर

46

मैन्युअल, आप pd.DataFrame निर्माता का उपयोग कर सकते हैं, एक numpy सरणी (data) और स्तंभ (columns) के नामों की एक सूची दे रही है। एक बेहतर तरीका

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

कुछ बंच में सुविधा_नाम एक एनड्रे के रूप में होते हैं जो कॉलम पैरामीटर को तोड़ देगा। –

+0

डेटाफ्रेम के लिए "प्रजातियां" कुंजी और मान गुम है। – mastash3ff

0

हो सकती है, लेकिन यहाँ मैं में क्या किया है किया गया है: एक DataFrame में सब कुछ करने के लिए आप np.c_[...] के साथ एक numpy सरणी में सुविधाओं और लक्ष्य को श्रेणीबद्ध कर सकते हैं ([] ध्यान दें) अतीत और यह काफी अच्छी तरह से काम करता है:

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 सब कुछ आप की जरूरत होगा -, गुण चर लक्षित करते हैं और COLUMNNAMES

+1

टॉम डीएलटी का समाधान ऊपर बताए गए सुझावों से काफी बेहतर है। यह वही काम करता है लेकिन समझने में बहुत ही सुरुचिपूर्ण और आसान है। उसका उपयोग करें! – Shanbhag

+0

'mydata = pd.DataFrame (आइटम [1] [1]) 'फेंकता है' टाइपरर: '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() 

यह शायद ब्याज की ट्यूटोरियल: http://www.neural.cz/dataset-exploration-boston-house-pricing.html

+3

लक्ष्य के साथ डेटा को संयोजित करने की आवश्यकता है: df = pd.DataFrame (np.concatenate ((iris.data, np.array ([iris.target])। टी), अक्ष = 1), कॉलम = 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

टीओएमडीएलटी का समाधान विज्ञान-सीखने के सभी डेटासेट के लिए सामान्य नहीं है। उदाहरण के लिए यह बोस्टन हाउसिंग डेटासेट के लिए काम नहीं करता है। मैं एक अलग समाधान का प्रस्ताव करता हूं जो अधिक सार्वभौमिक है। 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

मुझे 2 घंटे लिया

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) 
इस यह पता लगाने की

मेरे पांडा के लिए प्रजातियों को वापस प्राप्त करें

संबंधित मुद्दे