Python en Español

Tutorial de Python pandas: Iniciando con DataFrames

Pandas es una biblioteca de código abierto de Python que proporciona análisis y manipulación de datos en la programación en Python.

Es una biblioteca muy prometedora de representación de datos, filtrado y programación estadística. La pieza más importante en pandas es el DataFrame donde almacena y juega con los datos.


En este tutorial, aprenderás qué es un DataFrame, cómo crearlo desde diferentes fuentes, cómo exportarlo a diferentes resultados y cómo manipular sus datos.

 

Instalar pandas

Puedes instalar pandas en Python usando pip. Ejecuta el siguiente comando en cmd:

pip install pandas

Instalar pandas

Además, puedes instalar pandas usando conda así:

conda install pandas

 

Leer un archivo de Excel

Puedes leer desde un archivo de Excel usando el método read_excel () de pandas. Para esto, necesitas importar un módulo más llamado xlrd.

Instala xlrd usando pip:

pip install xlrd

Instalar xlrd

El siguiente ejemplo muestra cómo leer de una hoja de Excel:

  1. Creamos una hoja de Excel con los siguientes contenidos:
    Excel sheet
  2. Importa el módulo de pandas.

import pandas

  1. Pasaremos el nombre del archivo de Excel y el número de hoja del que necesitamos leer los datos al método read_excel ().

pandas.read_excel('pandasExcel.xlsx', 'Sheet1')

El fragmento anterior generará el siguiente resultado:

Leer archivo de Excel

Si verificas el tipo de salida usando la palabra clave de type, te dará el siguiente resultado:

<class 'pandas.core.frame.DataFrame'>

¡Este resultado es llamado DataFrame! Esa es la unidad básica de pandas con la que vamos a tratar hasta el final del tutorial.

El DataFrame es una estructura de 2 dimensiones etiquetada donde podemos almacenar datos de diferentes tipos. DataFrame es similar a una tabla SQL o una hoja de cálculo de Excel.

 


Importar archivo CSV

Para leer un archivo CSV, puedes usar el método read_csv () de pandas.

Importa el módulo de pandas:

import pandas

Ahora llama al método read_csv () de la siguiente manera:

pandas.read_csv('Book1.csv')

Book1.csv tiene el siguiente contenido:

Archivo CSV

El código generará el siguiente DataFrame:

Importar archivo CSV

Leer un archivo de texto

También podemos usar el método read_csv de pandas para leer desde un archivo de texto; Considera el siguiente ejemplo:

El myFile.txt tiene el siguiente formato:

Archivo de texto

La salida del código anterior será:

Leer archivo de texto

Este archivo de texto se trata como un archivo CSV porque tenemos elementos separados por comas. El archivo también puede usar otro delimitador, como un punto y coma, un tabulador, etc.

Supongamos que tenemos un delimitador de tabulador y el archivo se ve así:

Delimitador de tabulador

Cuando el delimitador es una un tabulador, tendremos el siguiente resultado:

Leer archivo de texto con delimitador de pestañas

Como pandas no tiene idea del delimitador, traduce el tabulador a \ t.

Para definir el carácter de tabulación como un delimitador, pase el argumento delimiter de esta manera:

pandas.read_csv('myFile.txt', delimiter='\t')

Ahora la salida será:

Especificar delimitador de tab

Parece correcto ahora.

 


Leer SQL

Puede usar el método read_sql () de pandas para leer desde una base de datos SQL. Esto se demuestra en el siguiente ejemplo:

En este ejemplo, nos conectamos a una base de datos SQLite3 que tiene una tabla llamada “Empleado”. Usando el método read_sql () de pandas, pasamos una consulta y un objeto de conexión al método read_sql (). La consulta recupera todos los datos de la tabla.

Nuestra tabla de empleados se parece a la siguiente:

Tabla SQLite3

Cuando ejecutes el código anterior, la salida será como la siguiente:

Lee SQL usando pandas

 

Seleccionar columnas

Supongamos que tenemos tres columnas en la tabla Empleado de esta manera:

Columnas de la tabla SQLite3

Para seleccionar columnas de la tabla, pasaremos la siguiente consulta:

select Name, Job from Employee

La sentencia del código de pandas será la siguiente:

pandas.read_sql('select Name, Job from Employee', con)

Usa SQL para seleccionar datos

También podemos seleccionar una columna de una tabla accediendo al DataFrame a. Considera el siguiente ejemplo:

El resultado será el siguiente:

Obtener columnas

 

Seleccionar filas por valor

Primero, crearemos un DataFrame desde el cual seleccionaremos filas.

Para crear un DataFrame, considera el siguiente código:

En este código, creamos un DataFrame con tres columnas y tres filas usando el método DataFrame () de pandas. El resultado será el siguiente:

Crear un DataFrame

Para seleccionar una fila de acuerdo a su valor, ejecute la siguiente sentencia

df.loc[df['name'] == 'Jason']

df.loc [] o DataFrame.loc [] es una arreglo booleano que se puede usar para acceder a filas o columnas mediante valores o etiquetas. En el código anterior, se buscará la fila donde el nombre es igual a Jason.

La salida será:

Seleccione filas por valor de DataFrame

 


Seleccionar fila por índice

Para seleccionar una fila por su índice, podemos usar el operador de segmentación (:) o el arreglo df.loc [].

Considera el siguiente código:

Creamos un DataFrame. Ahora vamos a acceder a una fila usando df.loc []:

>>> df.loc[1]

Obtener DataFrame fila

Como puedes ver, recuperamos una fila. Podemos hacer lo mismo usando el operador de segmentación de la siguiente manera:

>>> df[1:2]

Operador de segmentación

 

Cambiar tipo de columna

El tipo de datos de una columna se puede cambiar usando el atributo astype () de DataFrame. Para verificar el tipo de datos de las columnas, usamos el atributo dtypes de DataFrame.

>>> df.dtypes

La salida será:

Cambiar pandas DataFrame tipo de columna

Ahora para convertir el tipo de datos de uno a otro:

>>> df.name = df.name.astype(str)

Buscamos la columna ‘name’ de nuestro DataFrame y cambiamos su tipo de datos de objeto a cadena de caracteres.

Aplicar una función a columnas / filas

Para aplicar una función en una columna o fila, puedes usar el método apply () de DataFrame.

Considere el siguiente ejemplo:

Creamos un DataFrame y agregamos valores de tipo entero en las filas. Para aplicar una función, por ejemplo, la raíz cuadrada en los valores, importaremos el módulo numpy para usar la función sqrt de esta manera:

La salida será la siguiente:

Aplicar una función a las columnas.

Para aplicar una función de suma, el código será:

>>> df.apply(np.sum)

Aplicar la función de suma

Para aplicar la función a una columna especifica, puedes especificar la columna de la siguiente forma:

>>>df['A'].apply(np.sqrt)

 

Ordenar valores / ordenar por columna

Para ordenar los valores en un DataFrame, utiliza el método sort_values () del DataFrame.

Crea un DataFrame con valores enteros:

Ahora para ordenar los valores:

>>> df.sort_values(by=['A'])

La salida será:

Ordenar los valores

El método sort_values () tiene un atributo “by” que es necesario. En el código anterior, los valores se ordenan por la columna A. Para ordenar por varias columnas, el código es el siguiente:

>>> df.sort_values(by=['A', 'B'])

Si desea ordenar en orden descendente, establece el atributo ascending de set_values en False de la siguiente manera:

>>> df.sort_values(by=['A'], ascending=False)

La salida será:

Desea ordenar en orden descendente

 


Quitar / Eliminar duplicados

Para eliminar filas duplicadas de un DataFrame, usa el método drop_duplicates () del DataFrame.

Considera el siguiente ejemplo:

DataFrame duplicado

Aquí creamos un DataFrame con una fila duplicada. Para verificar si hay filas duplicadas en el DataFrame, usa el método duplicated () del DataFrame.

>>> df.duplicated()

El resultado será:

Resultado duplicado

Se puede ver que la última fila es un duplicado. Para eliminar esta fila, ejecuta la siguiente línea de código:

>>> df.drop_duplicates()

Ahora el resultado será:

Eliminar duplicados

 

Eliminar duplicados por columna

A veces, tenemos datos en los que los valores de las columnas son los mismos y deseamos eliminarlos. Podemos eliminar una fila por columna al pasar el nombre de la columna que debemos eliminar.

Por ejemplo, tenemos el siguiente DataFrame:

Pandas DataFrame con datos duplicados

Aquí puedes ver que Jason esta dos veces. Si desea eliminar duplicados por columna, simplemente pasa el nombre de la columna de la siguiente manera:

>>> df.drop_duplicates(['name'])

El resultado será como el siguiente:

Eliminar duplicados por columna

Borrar una columna

Para eliminar una columna o fila completa, podemos usar el método drop () del DataFrame especificando el nombre de la columna o fila.

Considera el siguiente ejemplo:

>>> df.drop(['job'], axis=1)

En esta línea de código, estamos eliminando la columna llamada “job”. El argumento del eje es necesario aquí. Si el valor del eje es 1 significa que queremos eliminar columnas, si el valor del eje es 0 significa que la fila se eliminará. En valores de eje, 0 es para índice y 1 para columnas.

El resultado será:

Eliminar una columna DataFrame

 

Eliminar filas

Podemos usar el método drop () para eliminar una fila al pasar el índice de la fila.

Supongamos que tenemos el siguiente DataFrame:

Para eliminar una fila con el índice 0 donde el nombre es James, la edad es 18 y el trabajo es asistente, utiliza el siguiente código:

>>> df.drop([0])

Eliminar una fila por índice

Vamos a crear un DataFrame donde los índices son los nombres:

Non-labled dataframe

Ahora podemos eliminar una fila con un cierto valor. Por ejemplo, si queremos eliminar una fila donde el nombre es Rogers, entonces el código será:

>>> df.drop(['Rogers'])

La salida será:

Eliminar una fila por valor

También puedes eliminar un rango de filas de la siguiente forma:

>>> df.drop(df.index[[0, 1]])

Esto eliminará las filas del índice 0 a 1 y solo quedará una fila ya que nuestro DataFrame se compone de 3 filas:

Eliminar un rango de filas

Si deseas eliminar la última fila del DataFrame y no sabe cuál es el número total de filas, puede utilizar la indexación negativa como se muestra a continuación:

>>> df.drop(df.index[-1])

-1 borra la última fila. Similarmente -2 borrará las últimas 2 filas y así sucesivamente.

Eliminar la última fila

 


Sumar una columna

Puede usar el método sum () del DataFrame para sumar los elementos de la columna.

Supongamos que tenemos el siguiente DataFrame:

Ahora para sumar los elementos de la columna A, usa la siguiente línea de código:

>>> df['A'].sum()

Sumar una columna

También puedes usar el método apply () del DataFrame y pasar el método de suma de numpy para sumar los valores.

Contar valores únicos

Para contar valores únicos en una columna, puedes usar el método nunique () del DataFrame.

Supongamos que tenemos un DataFrames como a continuación:

Para contar los valores únicos en la columna A:

>>> df['A'].nunique()

Contar los valores únicos

Como puedes ver, la columna A tiene solo 2 valores únicos 23 y 12 y el otro 12 es un duplicado, por eso tenemos 2 en la salida.

Si desea contar todos los valores en una columna, puedes usar el método count () de la siguiente manera:

>>> df['A'].count()

Contar los valores de columna

 

Filas de subconjuntos

Para seleccionar un subconjunto de un DataFrame, puedes usar los corchetes.

Por ejemplo, tenemos un DataFrame que contiene algunos enteros. Podemos seleccionar o buscar el subconjunto de una fila de esta forma:

df.[start:count]

El punto de inicio se incluirá en el subconjunto, pero el punto de parada no se incluye. Por ejemplo, para seleccionar 3 filas a partir de la primera fila, escribirás:

>>> df[0:3]

La salida será:

Seleccionar subconjunto de filas

Ese código significa comenzar desde la primera fila que es 0 y selecciona 3 filas.

Del mismo modo, para seleccionar las primeras 2 filas, escribirás:

>>> df[0:2]

Seleccione 2 filas de un DataFrame

Para seleccionar o buscar un subconjunto con la última fila, usa la indexación negativa:

>>> df[-1:]

Seleccione la última fila

Escribir a un Excel

Para escribir un DataFrame en una hoja de Excel, podemos usar el método to_excel ().

Para escribir en una hoja de Excel, tiene que abrir la hoja y para abrir una hoja de Excel, tendremos que importar el módulo openpyxl.

Instala openpyxl usando pip:

pip install openpyxl

Instalar openpyxl

Considera el siguiente ejemplo:

El archivo de Excel se verá como el siguiente:

Escribir a un Excel

 

Escribir a un archivo CSV

De manera similar, para escribir un DataFrame en CSV, puede usar el método to_csv () como se muestra en la siguiente línea de código.

>>> df.to_csv("pandasCSV.csv")

El archivo de salida será como el siguiente:

Escribir a un archivo CSV

 

Escribir a SQL

Para escribir datos en SQL, podemos usar el método to_sql ().

Considera el siguiente ejemplo:

En este código, creamos una conexión con una base de datos sqlite3. Luego creamos un DataFrame con tres filas y tres columnas.

Finalmente, utilizamos el método to_sql de nuestro DataFrame (df) y pasamos el nombre de la tabla donde se almacenarán los datos junto con el objeto de conexión.

La base de datos SQL se verá de la siguiente forma:

Escribir a SQL

 

Escribir a JSON

Puede usar el método to_json () del DataFrame para escribir en un archivo JSON.

Esto se demuestra en el siguiente ejemplo:

>>> df.to_json("myJson.json")

En esta línea de código, el nombre del archivo JSON se pasa como un argumento. El DataFrame se almacenará en el archivo JSON. El archivo tendrá el siguiente contenido:

Escribir a JSON

 

Escribir en un archivo HTML

Puede usar el método to_html () del DataFrame para crear un archivo HTML con el contenido del DataFrame.

Considera el siguiente ejemplo:

>>> df.to_html("myhtml.html")

El archivo de resultados tendrá el siguiente contenido:

Escribir en un archivo HTML

Cuando abras el archivo HTML en el navegador, se verá así:

Salida de archivo HTML

Trabajar con pandas es muy fácil. ¡Es como trabajar con hojas de Excel! Pandas DataFrame es una biblioteca muy flexible que puedes usar.

Espero que encuentres el tutorial útil. Vuelve pronto.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

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