Python: Pandas DataFrame manipulación de datos

joushe info
2022-04-12
0

...

Estamos en una era donde se maneja gran cantidad de datos en cualquier rama, ya sea en ingeniería, medicina, negocios. Por dicha razón, existe la necesidad de manipular datos, ya sea para importar los datos iniciales, o para extraer el resultado final. Python te ayuda a automatizar los respectivos cambios de los datos de una forma eficiente. En Python existen dos librerías poderosas para dicho propósito de las cuales se hablarán a continuación.

Estamos en una era donde se maneja gran cantidad de datos en cualquier rama, ya sea en ingeniería, medicina, negocios. Por dicha razón, existe la necesidad de manipular datos, ya sea para importar los datos iniciales, o para extraer el resultado final. Python te ayuda a automatizar los respectivos cambios de los datos de una forma eficiente. En Python existen dos librerías poderosas para dicho propósito de las cuales se hablarán a continuación.

La librería pandas permite visualizar una gran cantidad de datos de una manera muy agradable. Los datos estarán ordenados como en una hoja de Excel. Para este ejercicio, usaremos el archivo de texto llamado 'vacunaciones.txt' del ejercicio anterior. ¡Empecemos!

Solo para recordar, en el tutorial anterior (ir a Python: Descarga de datos de la web), descargamos un archivo de la web, lo leímos línea por línea y, finalmente, creamos un archivo de texto llamado 'vaccinations.txt', que contiene una gran cantidad de datos sobre la vacunación de covid en el mundo. Este archivo se utilizará en este ejercicio. Una parte muy pequeña se ve así:

Como se ve en la figura anterior, las columnas están separadas por el delimitador 'coma' (','). Aunque el archivo de texto tiene un encabezado (la primera fila), escribiremos nuestro propio encabezado de fila con diferentes nombres. Luego, en primer lugar, el archivo de texto debe importarse a Python utilizando la función de Python pd.read_csv. No olvides importar la library de pandas.

#Importing library
import pandas as pd


#Importing the text file df = pd.read_csv('vaccinations.txt', header = None, skiprows = (1), sep = ',', quotechar = None, quoting = 3)
#Printing the DataFrame print(df)

Ten en cuenta que al importar la librería pandas, le damos el apodo pd. Esto ayuda a acortar el código cada vez que lo llamamos. Si no le das un apodo a la librería importada, debes escribir:

df = pandas.read_csv('vaccinations.txt', header = None, skiprows = (1), sep = ',', quotechar = None, quoting = 3).

Dado que el archivo tiene muchas filas, podemos mostrar las primeras cinco o las últimas cinco filas escribiendo:

#Getting the 5 first rows of the DataFrame
df.head()


#Getting the 5 last rows of the DataFrame df.tail()

Ahora, crearemos nuestro propio encabezado.

#Setting a header for the DataFrame
df.columns = ['Country','Country iso code','Date','Total vaccinations','People vaccinated','People fully vaccinated','Total boosters','Daily vaccinations raw','Daily vaccinations','Total vaccinations per hundred','People vaccinated per hundred','People fully vaccinated per hundred','Total boosters per hundred','Daily vaccinations per million','Daily people vaccinated','Daily people vaccinated per hundred']

También podemos hacer una copia del DataFrame para no modificar el original.

#Copying the DataFrame to another DataFrame
df_copy = df.copy()

Ahora es el momento de mostrarte cómo podemos eliminar una o varias columnas. Para ello utilizaremos 2 métodos: el primero con la función del, y el segundo con la función drop. Si usamos el segundo método, podemos eliminar las columnas por eje o parámetro de columna.

#del function for removing one column only
del df_copy['Daily vaccinations']


#Printing the DataFrame print(df_copy)

#drop() function for removing one or more columns


#Method 1: Using axis parameter df_copy_drop1 = df_copy.drop(['Total vaccinations','People vaccinated','Country iso code'], axis=1) print(df_copy_drop1)
#Method 2: Using columns parameter df_copy_drop2 = df_copy.drop(columns=['Total vaccinations','People vaccinated','Country iso code']) print(df_copy_drop2)

Ten en cuenta que el DataFrame original df tiene 16 columnas. Cuando se usa la función del, el DataFrame df_copy tiene 15 columnas. Si usamos la función drop ya sea por eje o parámetro de columna, obtenemos el mismo resultado: un DataFrame con 12 columnas.

De manera similar, también es posible eliminar una o más filas del DataFrame. Para ello, utilizaremos la función drop.

#Deleting one or several rows
df_copy_drop = df_copy.drop([100, 525, 9461], axis=0)


Printing the DataFrame print(df_copy_drop)

Tener en cuenta que el DataFrame df_copy_drop tiene 3 filas menos (94262 filas) que el DataFrame df_copy (94265). También es importante tener en cuenta que cuando usamos la función drop, axis=0 representa la eliminación de filas, mientras que axis=1 representa para columnas.

Ahora, obtendremos ciertas filas del DataFrame original df según una determinada condición. Por ejemplo, podemos obtener los datos por país. Para ello, utilizaremos la función input.

#Getting data per country
country = input('Please type your country of interest:')
df_country = df[df['Country'] == country]


#Printing the DataFrame print(df_country)

Como se ve, una vez que el usuario ingresa al país deseado, Python genera automáticamente los datos para este país específico. Ten en cuenta que el nombre del país que se debe ingresar debe estar en el archivo de texto; de lo contrario, obtendrá un error, porque Python no encontrará ninguna fila con la entrada proporcionada.

Así como Python puede importar un archivo, Python también puede exportar el DataFrame a un archivo de Excel. Para finalizar este ejercicio, te mostraré cómo se puede hacer esto.

#Exporting DataFrame to Excel
excel_file = df_country.to_excel('Vaccinations by country.xlsx')

Si vas a la carpeta donde se guarda tu código de Python, se puede encontrar el archivo de Excel exportado.

El código final de Python se verá así:

#Importing library
import pandas as pd


#Importing the text file df = pd.read_csv('vaccinations.txt', header = None, skiprows = (1), sep = ',', quotechar = None, quoting = 3) print(df)
#Getting the 5 first rows of the DataFrame df.head()
#Getting the 5 last rows of the DataFrame df.tail()
#Setting a header for the DataFrame df.columns = ['Country','Country iso code','Date','Total vaccinations','People vaccinated','People fully vaccinated','Total boosters','Daily vaccinations raw','Daily vaccinations','Total vaccinations per hundred','People vaccinated per hundred','People fully vaccinated per hundred','Total boosters per hundred','Daily vaccinations per million','Daily people vaccinated','Daily people vaccinated per hundred'] print(df)
#Copying the DataFrame to another DataFrame df_copy = df.copy() print(df_copy)
#del function for removing one column only del df_copy['Daily vaccinations'] print(df_copy)
#drop() function for removing one or more columns
#Method 1: Using axis parameter df_copy_drop1 = df_copy.drop(['Total vaccinations','People vaccinated','Country iso code'], axis=1) print(df_copy_drop1)
#Method 2: Using columns parameter df_copy_drop2 = df_copy.drop(columns=['Total vaccinations','People vaccinated','Country iso code']) print(df_copy_drop2)
#Deleting one or several rows df_copy_drop = df_copy.drop([100, 525, 9461], axis=0) print(df_copy_drop)
#Getting data per country country = input('Please type your country of interest:') df_country = df[df['Country'] == country] print(df_country)
#Exporting DataFrame to Excel excel_file = df_country.to_excel('Vaccinations by country.xlsx')


¡Felicidades! ¡Acabas de aprender a manipular una gran cantidad de datos! Para descargar el código completo y el archivo de texto con los datos usados en este tutorial, haz click aquí.

Vistas: 1

joushe info

En busca de nuevos horizontes

En busca de nuevos horizontes

Notificaciones

Recibe los nuevos artículos en tu correo electrónico

2022 © nepy

Un solo aliento

Configurar

Elige tu propio estilo

Color

Elige el modo que sea de tu agrado


Posición del Navegador

Elige el sistema de navegación


Estilo del Navegador

Elige el estilo del navegador vertical

Personalizar