Una muy buena alternativa a numpy loadtxt es read_csv from Pandas. Los datos se cargan en un marco de datos de Pandas con la gran ventaja de que puede manejar tipos de datos mixtos, como algunas columnas contienen texto y otras columnas contienen números. A continuación, puede seleccionar fácilmente solo las columnas numéricas y convertir a una matriz numpy con as_matrix. Pandas también será read/write excel files and a bunch of other formats.
Si tenemos un archivo CSV denominado "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
Esto permitirá la lectura en el csv y convertir las columnas numéricas en una matriz de numpy scikit_learn, a continuación, modificar el orden de las columnas y escribir hacia fuera a una hoja de cálculo 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')
¿Hay alguna manera de mantener los nombres de las funciones con este método? – AlexFZ
@AlexFZ: no directamente. En lugar de simplemente 'f.readline()', puede hacer 'feature_names = f.readline(). Split()' o alguna variante de la misma (la línea del encabezado del OP no está bien separada del espacio). [Pandas] (http://pandas.pydata.org) tiene una funcionalidad más agradable para esto. –
Aunque el interlocutor proporcionó un archivo separado por espacios, la pregunta se plantea con respecto a un archivo de datos csv. –