2012-06-13 8 views
24

मेरी समझ से, विज्ञान-सीख डेटा (एन-नमूना, एन-फीचर) प्रारूप में स्वीकार करता है जो एक 2 डी सरणी है। मान लीजिए मेरे पास फॉर्म में डेटा है ...विज्ञान में सीखने के लिए सीएसवी डेटा फ़ाइल कैसे आयात करें?

Stock prices indicator1 indicator2 
2.0    123   1252 
1.0    ..   .. 
..    .    . 
. 

मैं इसे कैसे आयात करूं?

उत्तर

46

यह एक CSV फ़ाइल नहीं है; यह सिर्फ एक स्पेस से अलग फ़ाइल है। मान लिया जाये कि कोई लापता मूल्यों देखते हैं, आप आसानी से यह एक Numpy सरणी data बुलाया में

import numpy as np 

f = open("filename.txt") 
f.readline() # skip the header 
data = np.loadtxt(f) 

साथ लोड कर सकते हैं शेयर की कीमत (, अपने y मूल्य में मामले scikit-जानें) क्या आप भविष्यवाणी करने के लिए चाहते हैं, तो आप

X = data[:, 1:] # select columns 1 through end 
y = data[:, 0] # select column 0, the stock price 

वैकल्पिक रूप से उपयोग कर रहा data विभाजित करना चाहिए, तो आप इस प्रकार की फ़ाइल से निपटने में standard Python csv module की मालिश करने में सक्षम हो सकता है।

+0

क्या इस विधि का उपयोग कर सुविधा नाम बनाए रखने का कोई तरीका है? – AlexFZ

+1

@AlexFZ: सीधे नहीं। केवल 'f.readline() 'के बजाय, आप' feature_names = f.readline()। Split() 'या इसके कुछ संस्करण (ओपी की हेडर लाइन अच्छी तरह से अलग-अलग जगह नहीं है) कर सकते हैं। [पांडस] (http://pandas.pydata.org) के लिए इसके लिए अच्छी कार्यक्षमता है। –

+4

हालांकि प्रश्नकर्ता ने एक स्पेस से अलग फ़ाइल प्रदान की, प्रश्न सीएसवी डेटा फ़ाइल के संबंध में देखा गया है। –

17

आप numpy में loadtxt फ़ंक्शन देख सकते हैं।

loadtxt विधि में वैकल्पिक इनपुट प्राप्त करने के लिए।

सीएसवी के लिए एक सरल परिवर्तन

data = np.loadtxt(fname = f, delimiter = ',') 
47

numpy loadtxt करने के लिए एक बहुत अच्छा विकल्प read_csv from Pandas है। डेटा को पांडस डेटाफ्रेम में लोड किया गया है जिससे बड़े लाभ के साथ यह मिश्रित डेटा प्रकारों को संभाल सकता है जैसे कि कुछ कॉलम में टेक्स्ट और अन्य कॉलम होते हैं। फिर आप आसानी से केवल संख्यात्मक कॉलम का चयन कर सकते हैं और as_matrix के साथ एक numpy सरणी में परिवर्तित कर सकते हैं। पांडस भी read/write excel files and a bunch of other formats होगा।

हम एक csv फ़ाइल "mydata.csv" नाम है:

point_latitude,point_longitude,line,construction,point_granularity 
30.102261, -81.711777, Residential, Masonry, 1 
30.063936, -81.707664, Residential, Masonry, 3 
30.089579, -81.700455, Residential, Wood , 1 
30.063236, -81.707703, Residential, Wood , 3 
30.060614, -81.702675, Residential, Wood , 1 

यह csv में पढ़ सकते हैं और scikit_learn के लिए एक numpy सरणी में सांख्यिक स्तंभ में परिवर्तित कर देंगे, फिर कॉलम के आदेश को संशोधित करने और लिखने Excel स्प्रेडशीट के लिए इसे बाहर:

import numpy as np 
import pandas as pd 

input_file = "mydata.csv" 


# comma delimited is the default 
df = pd.read_csv(input_file, header = 0) 

# for space delimited use: 
# df = pd.read_csv(input_file, header = 0, delimiter = " ") 

# for tab delimited use: 
# df = pd.read_csv(input_file, header = 0, delimiter = "\t") 

# put the original column names in a python list 
original_headers = list(df.columns.values) 

# remove the non-numeric columns 
df = df._get_numeric_data() 

# put the numeric column names in a python list 
numeric_headers = list(df.columns.values) 

# create a numpy array with the numeric values for input into scikit-learn 
numpy_array = df.as_matrix() 

# reverse the order of the columns 
numeric_headers.reverse() 
reverse_df = df[numeric_headers] 

# write the reverse_df to an excel spreadsheet 
reverse_df.to_excel('path_to_file.xls') 
+0

ठीक है लेकिन उस मैट्रिक्स से एक विज्ञानकिंड सीखने के डेटासेट कैसे बनाएं? –

+1

साइकिट सीखने के रूप में पांडा डेटाफ्रेम ले सकते हैं ताकि यह लगभग तैयार हो। यह मानते हुए कि "point_granularity" लक्ष्य चर है जो आप y = df ['point_granularity'] और X = df [['point_latitude' ', point_longitude', 'line, construction']] – denson

+1

कर सकते हैं क्योंकि कुछ विशेषताएं आपको स्पष्ट हैं अधिकांश scikit-learn मॉडल के लिए उन्हें एक-गर्म-एन्कोड करने की आवश्यकता होगी: https://stackoverflow.com/a/43038709/1810559 – denson

0

उपयोग numpy लोड करने के लिए

import numpy as np dataset = np.loadtxt('./example.csv', delimiter=",")

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