Importar datos CSV usando Pandas.read_csv ()

Tabla de contenido:

Anonim

En este tutorial, aprenderá:

  • Importar CSV
  • Agrupar por

Importar CSV

Durante el tutorial de TensorFlow, usará el conjunto de datos para adultos. A menudo se usa con la tarea de clasificación. Está disponible en esta URL https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

Los datos se almacenan en formato CSV. Este conjunto de datos incluye ocho variables categóricas:

Este conjunto de datos incluye ocho variables categóricas:

  • clase de trabajo
  • educación
  • marital
  • ocupación
  • relación
  • raza
  • sexo
  • patria

además, seis variables continuas:

  • edad
  • fnlwgt
  • número_educación
  • ganancia capital
  • perdida de capital

hours_week

Para importar un conjunto de datos CSV, puede utilizar el objeto pd.read_csv (). El argumento básico en el interior es:

Sintaxis:

pandas.read_csv(filepath_or_buffer,sep=', ',`names=None`,`index_col=None`,`skipinitialspace=False`)
  • filepath_or_buffer: ruta o URL con los datos
  • sep = ',': define el delimitador que se utilizará
  • `names = None`: Nombra las columnas. Si el conjunto de datos tiene diez columnas, debe pasar diez nombres
  • `index_col = None`: Si es así, la primera columna se usa como índice de fila
  • `skipinitialspace = False`: Omitir espacios después del delimitador.

Para obtener más información sobre readcsv (), consulte la documentación oficial

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html.

Considere el siguiente ejemplo

## Import csvimport pandas as pd## Define path dataCOLUMNS = ['age','workclass', 'fnlwgt', 'education', 'education_num', 'marital','occupation', 'relationship', 'race', 'sex', 'capital_gain', 'capital_loss','hours_week', 'native_country', 'label']PATH = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"df_train = pd.read_csv(PATH,skipinitialspace=True,names = COLUMNS,index_col=False)df_train.shape

Producción:

(32561, 15)

Agrupar por

Una forma sencilla de ver los datos es utilizar el método groupby. Este método puede ayudarlo a resumir los datos por grupo. A continuación se muestra una lista de métodos disponibles con groupby:

  • contar: contar
  • min: min
  • max: max
  • significar: significar
  • mediana: mediana
  • desviación estándar: sdt
  • etc

Dentro de groupby (), puede usar la columna a la que desea aplicar el método.

Echemos un vistazo a una sola agrupación con el conjunto de datos de adultos. Obtendrá la media de todas las variables continuas por tipo de ingresos, es decir, por encima de 50k o por debajo de 50k

df_train.groupby(['label']).mean() 
edad fnlwgt número_educación ganancia capital perdida de capital hours_week
etiqueta
<= 50 K 36.783738 190340.86517 9.595065 148.752468 53.142921 38.840210
> 50 K 44.249841 188005.00000 11.611657 4006.142456 195.001530 45.473026

Puedes obtener la edad mínima por tipo de hogar

df_train.groupby (['etiqueta']) ['edad']. min ()

label<=50K 17>50K 19Name: age, dtype: int64 

También puede agrupar por varias columnas. Por ejemplo, puede obtener la máxima ganancia de capital según el tipo de hogar y el estado civil.

df_train.groupby(['label', 'marital'])['capital_gain'].max()label marital<=50K Divorced 34095Married-AF-spouse 2653Married-civ-spouse 41310Married-spouse-absent 6849Never-married 34095Separated 7443Widowed 6849>50K Divorced 99999Married-AF-spouse 7298Married-civ-spouse 99999Married-spouse-absent 99999Never-married 99999Separated 99999Widowed 99999Name: capital_gain, dtype: int64

Puede crear una trama siguiendo groupby. Una forma de hacerlo es utilizar un gráfico después de la agrupación.

Para crear un gráfico más excelente, usará unstack () después de mean () para que tenga el mismo índice multinivel, o unir los valores por ingresos inferiores a 50k y superiores a 50k. En este caso, la trama tendrá dos grupos en lugar de 14 (2 * 7).

Si usa Jupyter Notebook, asegúrese de agregar% matplotlib en línea; de lo contrario, no se mostrará ningún gráfico

%matplotlib inlinedf_plot = df_train.groupby(['label', 'marital'])['capital_gain'].mean().unstack()df_plot