Importando datos en Python (I)

Índice de contenidos

Gran parte del potencial de Python reside en su capacidad en las fases previas al análisis de datos, es decir, lectura del raw data y depuración del mismo.

En esta serie nos centraremos en la lectura de datos en diversos formatos (ficheros planos, otras extensiones y bases de datos relacionales).

En posts anteriores pasamos de una introducción a Python a la visualización de datos en este lenguaje.

Ficheros planos

Son ficheros de texto que almacenan registros (filas de características o atributos).

En la primera fila podemos encontrar una cabecera con el nombre de cada una de las características o atributos.

Existen dos extensiones: .csv (valores separados por comas) y .txt (los valores pueden estar separados por coma, espacio, tabulador…).

Hagamos un breve recordatorio sobre el uso de librerías en Python. Para usar una función de una librería específica, previamente hemos de cargar la librería mediante import. Para hacer la llamada a dicha función usaremos nombre_librería.nombre_función() o bien alias_librería.nombre_función().

Otro aspecto a tener en cuenta es que los archivos a importar han de estar en el directorio de trabajo actual. Si no recordamos su ubicación, podemos comprobarlo:

ficheros planos

En Python hay dos librerías con las que importar ficheros planos: NumPy y pandas.

 

1. NumPy

Los datos importados se almacenan en una matriz.

  • Mismo tipo de datos.

La función loadtxt() de NumPy carga el archivo en una matriz.

El delimitador por defecto es espacio en blanco, si es otro habrá que pasarlo como segundo argumento delimiter (‘,’ en el caso de coma, ‘\t’ si es tabulador…).

Si el archivo tiene cabecera podemos saltar las filas correspondientes con skiprows (pasar el valor 0 es equivalente a omitir este argumento, devolviendo todas las filas).

Para fijar las columnas pasamos el argumento usecols=[…] con sus índices, recordando que a la primera columna corresponde el índice 0.

NumPy

Si nuestro archivo contiene valores no numéricos le indicamos que los guarde como cadena, añadiendo a la función loadtxt().astype(str)

NumPy

  • Diferente tipo de datos.

Si en nuestro archivo tenemos datos de diferentes tipos, podemos usar dos funciones: genfromtext() y recfromcsv().

genfromtext():

Cuando exista cabecera, especificaremos names=True.

Al pasar el argumento dtype=None, la función averigua qué tipo corresponde a cada columna.

python

En la salida podemos observar que las variables tipo cadena están precedidas por una ‘b’. Este carácter sólo indica que la cadena es de tipo ‘bytestring’, el valor almacenado es la cadena entre comillas simples.

Al contener datos de diferente tipo, el archivo importado será un objeto llamado matriz estructurada. Como las matrices NumPy han de contener elementos del mismo tipo, la matriz estructurada es unidimensional, donde cada uno de sus elementos corresponde a una fila del fichero plano importado.

El acceso a una matriz estructurada es muy intuitivo. Así:

• Filas (por índice): data[i] > fila i-ésima

• Columnas (por nombre): data[‘Nombre_columna’]

recfromcsv():

Análoga a la anterior, excepto que su valor por defecto para dtype es ‘None’.

Probemos a obtener el mismo resultado que en la ejecución anterior, pero limitando la impresión de datos a las 3 primeras filas.

2. pandas

Los datos importados se almacenan en un dataframe.

La librería pandas hace posible llevar a cabo todo el proceso (lectura de datos, depuración, análisis y modelización) sin necesidad de cambiar a un lenguaje más específico como R (idea difícil de encajar para un R lover ).

Encontramos aquí el concepto dataframe, análogo al de R, que no es más que un conjunto de observaciones y variables.

La función read_csv() lee un fichero plano y lo almacena en un dataframe.

El argumento nrows limita el número de filas a importar.

En caso de no tener cabecera, pasamos el argumento header=None.

Limitamos la visualización de datos con la función nombre_dataframe.head().

pandas

Vemos que los valores perdidos se han recodificado como NaN.

La función read_csv() puede tomar otros argumentos como:

sep: indica el tipo de separador.

comment: especifica el carácter que precede a un comentario.

na_values: pasa una lista de cadenas que queremos identificar como valores perdidos.

 

Nota: los ficheros que se han usado como muestra proceden de diferentes bancos de datos de acceso libre.

• demo.txt: ticdata2000.txt

• demo2.txt: Waterbase_Emissions_v1_codelist_HazardSubDeterminands.txt

• demo.csv:

Demographic_Profile_of_Family_Planning_Access_Care_and_Treatment_Clients_Served_by_Fiscal_Year.csv

Ya podemos empezar a importar nuestros ficheros planos en Python

Share on facebook
Share on twitter
Share on linkedin
Share on email
3 min
Suscríbete a nuestra newsletter

Los mejores artículos de analítica digital para potenciar tu negocio.

17 comentarios en “Importando datos en Python (I)”

  1. Disculpa tengo una duda yo estoy cargando mis datos que son al rededor de 3823 rows x 65 columns y quiero almacenarlos en una matriz de 10×10 para poder acceder a ellos, pero no se como. Alguien que me pueda ayudar?

  2. hola louerdes me gusta tus codigos, tengo una pregunta como haria para pasar los datos de fichero a una list()
    en mi codigo en python he creado asi :
    lista=list()
    Class Alumnos:
    Codigo=»»
    Nombre=»»
    lleno los atributos a la lista y luego los elementos de la lista los guardo en un fichero,
    y como haria parar cuando corra el programa los datos del fichero se alamcene en la lista ?
    porfa

  3. Hola Lourdes, muchas gracias por el artículo, es muy útil.
    Tengo una duda, espero que puedas ayudarme: estoy intentando utilizar read_csv para leer un fichero pero resulta que hay campos que me convierte en numéricos cuando quiero que los mantenga como textos (por ejemplo, el campo es 00012, y lo convierte a 12). Hay alguna forma de forzar que todo lo que lea sea texto? Gracias!

  4. yo guardo una matriz numpy en un archivo csv, pero no se como ponerle los nombres a las filas para que se muestre en el txt o csv? Gracias.

    1. Lourdes Hernández

      Hola Joel,

      Has probado a convertir tu matriz en dataframe con pandas? Puedes pasar un vector en el parámetro index que te permita acceder a tus filas.

  5. Que pasa si tengo un documento de texto .txt pero descargue una pagina web entera con sus clases (div, li, ul, td) pero quiero hacer un rastreo de todos los datos extrayendo listas y textos en un excel como podria hacerlo…

  6. Pingback: Importando datos en Python (III) - Doctor Metrics

  7. Pingback: Importando datos en Python (II) - Doctor Metrics

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas relacionadas

Comparativa de herramientas para procesos ETL

En este post haremos una revisión sobre algunos de los lenguajes/herramientas más utilizados en nuestro ecosistema de analítica digital en procesos de extracción, transformación y carga de datos.

3 minutos

Dificultad

Jupyter Notebook

Jupyter Notebook es una aplicación web de código abierto que permite incluir texto, vídeo, audio e imágenes.

4 minutos

Dificultad

Cómo integrar KNIME con R

Integrar KNIME con R nos permite construir flujos de análisis de datos fácilmente comprensibles.

2 minutos

Dificultad

Ir arriba

Esta web utiliza ‘cookies’ de terceros. Al clicar aceptar está aceptando el uso que realizamos de las cookies. Para más información puede consultar nuestra Política de cookies