Una buona alternativa al numpy loadtxt è read_csv from Pandas. I dati vengono caricati in un dataframe di Pandas con il grande vantaggio di poter gestire tipi di dati misti come alcune colonne contengono testo e altre colonne contengono numeri. È quindi possibile selezionare facilmente solo le colonne numeriche e convertirle in un array numpy con as_matrix. Panda anche read/write excel files and a bunch of other formats.
Se abbiamo un file CSV denominato "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
Questo leggerà in csv e convertire le colonne numeriche in un array NumPy per scikit_learn, quindi modificare l'ordine delle colonne e scrivere fuori un foglio 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')
C'è un modo per mantenere i nomi delle funzionalità usando questo metodo? – AlexFZ
@AlexFZ: non direttamente. Invece di solo 'f.readline()', puoi fare 'feature_names = f.readline(). Split()' o alcune varianti di esso (la riga dell'intestazione dell'OP non è separata da spazi). [Pandas] (http://pandas.pydata.org) ha una funzionalità migliore per questo. –
Sebbene l'interrogante abbia fornito un file separato da spazi, la domanda è posta in relazione a un file di dati CSV. –