curso
Tutorial de Excel en Python: La guía definitiva
Introducción a Excel en Python
Tanto si eres estudiante como si trabajas, lo más probable es que hayas utilizado Excel para trabajar con datos y hacer números.
De hecho, una investigación realizada en 2019 descubrió que aproximadamente el 54 % de las empresas utilizan Excel para realizar operaciones aritméticas, analizar datos, crear visualizaciones y generar informes. También puedes realizar tareas de modelado predictivo como la regresión y la agrupación mediante Excel.
Sin embargo, a pesar de los indiscutibles puntos fuertes de Excel, la herramienta presenta su propio conjunto de inconvenientes, que la hacen, en ocasiones, ineficaz a la hora de realizar tareas específicas que implican enormes conjuntos de datos.
Una limitación de Excel es su incapacidad para manejar grandes cantidades de datos. Puedes encontrarte con graves problemas de rendimiento al intentar realizar operaciones complejas con muchas entradas de datos en Excel, sobre todo si tus fórmulas y macros no están optimizadas para el rendimiento.
Excel también puede consumir mucho tiempo si necesitas realizar tareas repetitivas. Por ejemplo, si necesitas repetir un análisis en varios archivos de Excel cada semana, tendrías que abrirlos manualmente y copiar y pegar las mismas fórmulas una y otra vez.
Las encuestas muestran que al 93 % de los usuarios de Excel les lleva mucho tiempo consolidar hojas de cálculo y que los empleados dedican aproximadamente 12 horas al mes sólo a combinar distintos archivos de Excel.
Estos inconvenientes pueden resolverse automatizando los flujos de trabajo de Excel con Python. Tareas como la consolidación de hojas de cálculo, la limpieza de datos y el modelado predictivo pueden hacerse en minutos utilizando un sencillo script de Python que escribe en un archivo de Excel.
Los usuarios de Excel también pueden crear un programador en Python que ejecute el script automáticamente a diferentes intervalos de tiempo, reduciendo drásticamente la cantidad de intervención humana necesaria para realizar la misma tarea una y otra vez.
En este artículo, te mostraremos cómo hacerlo:
- Utiliza una biblioteca llamada Openpyxl para leer y escribir archivos Excel utilizando Python
- Crea operaciones aritméticas y fórmulas de Excel en Python
- Manipula hojas de cálculo de Excel con Python
- Construye visualizaciones en Python y guárdalas en un archivo Excel
- Modifica colores y estilos de las celdas de Excel con Python
Introducción a Openpyxl
Openpyxl es una biblioteca Python que permite leer archivos Excel y escribir en ellos.
Este marco puede ayudarte a escribir funciones, dar formato a hojas de cálculo, crear informes y construir gráficos directamente en Python sin ni siquiera tener que abrir una aplicación Excel.
Además, Openpyxl permite a los usuarios iterar a través de hojas de cálculo y realizar el mismo análisis en varios conjuntos de datos al mismo tiempo.
Esto mejora la eficacia y permite automatizar los flujos de trabajo de Excel, ya que los usuarios sólo tienen que realizar el análisis en una hoja de cálculo y pueden repetirlo tantas veces como sea necesario.
Cómo instalar Openpyxl
Para instalar Openpyxl, simplemente abre tu símbolo del sistema o Powershell y escribe el siguiente comando:
$pip install Openpyxl
Deberías ver aparecer el siguiente mensaje indicando que el paquete se ha instalado correctamente:
Lectura de archivos Excel en Python con Openpyxl
En este tutorial utilizaremos el conjunto de datos de Ventas de Videojuegos de Kaggle. Este conjunto de datos ha sido preprocesado por nuestro equipo a efectos de este tutorial, y puedes descargar la versión modificada desde este enlace. Puedes importar Excel a Python siguiendo el proceso que se indica a continuación:
-
Cargar el libro de trabajo
Tras descargar el conjunto de datos, importa la biblioteca Openpyxl y carga el libro de trabajo en Python:
import openpyxl wb = openpyxl.load_workbook('videogamesales.xlsx')
Ahora que el archivo Excel está cargado como objeto Python, tienes que decirle a la biblioteca a qué hoja de cálculo debe acceder. Hay dos formas de hacerlo:
El primer método consiste simplemente en llamar a la hoja de cálculo activa, que es la primera hoja del libro de trabajo, utilizando la siguiente línea de código:
ws = wb.active
Alternativamente, si conoces el nombre de la hoja de cálculo, también puedes acceder a ella por su nombre. Utilizaremos la hoja "vgsales" en esta sección del tutorial:
ws = wb['vgsales']
Vamos a contar ahora el número de filas y columnas de esta hoja de cálculo:
print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))
El código anterior debería dar el siguiente resultado:
Total number of rows: 16328. And total number of columns: 10
Ahora que conocemos las dimensiones de la hoja, vamos a aprender a leer datos del libro de trabajo.
-
Leer datos de una celda
Aquí tienes una captura de pantalla de la hoja activa con la que trabajaremos en esta sección:
Para recuperar datos de una celda concreta con Openpyxl, puedes escribir el valor de la celda de la siguiente manera:
print('The value in cell A1 is: '+ws['A1'].value)
Deberías obtener la siguiente salida:
The value in cell A1 is: Rank
-
Leer datos de varias celdas
Ahora que sabemos cómo leer datos de una celda concreta, ¿qué pasaría si quisiéramos imprimir todos los valores de las celdas de una fila determinada de la hoja de cálculo?
Para ello, puedes escribir un simple `for loop` que recorra todos los valores de una fila concreta:
values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)] print(values)
El código anterior imprimirá todos los valores de la primera fila:
['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']
A continuación, vamos a intentar imprimir varias filas de una columna concreta.
Crearemos un `for loop` para representar las diez primeras filas de la columna "Name" como una lista. Deberíamos obtener los nombres resaltados en el recuadro rojo de abajo:
data=[ws.cell(row=i,column=2).value for i in range(2,12)] print(data)
El código anterior generará el siguiente resultado:
['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']
Por último, vamos a imprimir las diez primeras filas de un rango de columnas de la hoja de cálculo:
# reading data from a range of cells (from column 1 to 6) my_list = list() for value in ws.iter_rows( min_row=1, max_row=11, min_col=1, max_col=6, values_only=True): my_list.append(value) for ele1,ele2,ele3,ele4,ele5,ele6 in my_list: (print ("{:<8}{:<35}{:<10} {:<10}{:<15}{:<15}".format(ele1,ele2,ele3,ele4,ele5,ele6)))
Después de ejecutar el código anterior, deberían aparecer las diez primeras filas de datos en las seis primeras columnas:
Escribir en archivos Excel con Openpyxl
Ahora que sabemos cómo acceder a los datos de los archivos de Excel y leerlos, vamos a aprender a escribir en ellos utilizando Openpyxl.
-
Escribir a una celda
Hay dos formas de escribir en un archivo con Openpyxl.
En primer lugar, puedes acceder directamente a la celda utilizando su tecla:
ws['K1'] = 'Sum of Sales'
Una alternativa es especificar la posición de fila y columna de la celda en la que quieres escribir:
ws.cell(row=1, column=11, value = 'Sum of Sales')
Cada vez que escribas en un archivo Excel con Openpyxl, tienes que guardar los cambios con la siguiente línea de código o no se reflejarán en la hoja de cálculo:
wb.save('videogamesales.xlsx')
Si tu libro de trabajo está abierto cuando intentas guardarlo, te encontrarás con el siguiente error de permiso:
Asegúrate de cerrar el archivo Excel antes de guardar los cambios. Luego puedes abrirla de nuevo para asegurarte de que el cambio se refleja en tu hoja de cálculo:
Observa que se ha creado una nueva columna llamada "Suma de ventas" en la celda K1.
-
Crear una nueva columna
Sumemos ahora la suma de las ventas en cada región y escribámosla en la columna K.
Lo haremos para los datos de ventas de la primera fila:
row_position = 2 col_position = 7 total_sales = ((ws.cell(row=row_position, column=col_position).value)+ (ws.cell(row=row_position, column=col_position+1).value)+ (ws.cell(row=row_position, column=col_position+2).value)+ (ws.cell(row=row_position, column=col_position+3).value)) ws.cell(row=2,column=11).value=total_sales wb.save('videogamesales.xlsx')
Observa que las ventas totales se han calculado en la celda K2 para el primer juego de la hoja de cálculo:
Del mismo modo, vamos a crear un `for loop` para sumar los valores de ventas de cada fila:
row_position = 1 for i in range(1, ws.max_row): row_position += 1 NA_Sales = ws.cell(row=row_position, column=7).value EU_Sales = ws.cell(row=row_position, column=8).value JP_Sales = ws.cell(row=row_position, column=9).value Other_Sales = ws.cell(row=row_position, column=10).value total_sales = (NA_Sales + EU_Sales + JP_Sales + Other_Sales) ws.cell(row=row_position, column=11).value = total_sales wb.save("videogamesales.xlsx")
Tu fichero Excel debería tener ahora una nueva columna que refleje las ventas totales de videojuegos en todas las regiones:
-
Añadir nuevas filas
Para añadir una nueva fila al libro de trabajo, simplemente crea una tupla con los valores que quieras incluir y escríbela en la hoja:
new_row = (1,'The Legend of Zelda',1986,'Action','Nintendo',3.74,0.93,1.69,0.14,6.51,6.5) ws.append(new_row) wb.save('videogamesales.xlsx')
Puedes confirmar que estos datos se han añadido imprimiendo la última fila del libro:
values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)] print(values)
Se generará la siguiente salida:
[1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]
-
Borrar filas
Para eliminar la nueva fila que acabamos de crear, puedes ejecutar la siguiente línea de código:
ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete wb.save('videogamesales.xlsx')
El primer argumento de la función eliminar_filas() es el número de fila que quieres eliminar. El segundo argumento indica el número de filas que deben borrarse.
Crear fórmulas de Excel con Openpyxl
Puedes utilizar Openpyxl para escribir fórmulas exactamente igual que lo harías en Excel. Aquí tienes algunos ejemplos de funciones básicas que puedes crear con Openpyxl:
-
AVERAGE
Vamos a crear una nueva columna llamada "Ventas medias" para calcular la media de ventas totales de videojuegos en todos los mercados:
ws['P1'] = 'Average Sales' ws['P2'] = '= AVERAGE(K2:K16220)' wb.save('videogamesales.xlsx')
La media de ventas en todos los mercados es de aproximadamente 0,19. Se imprimirá en la celda P2 de tu hoja de cálculo.
-
COUNTA
La función "COUNTA" de Excel cuenta las celdas que se rellenan dentro de un rango determinado. Utilicémoslo para encontrar el número de registros entre E2 y E16220:
ws['Q1'] = "Number of Populated Cells" ws['Q2'] = '=COUNTA(E2:E16220)' wb.save('videogamesales.xlsx')
En este rango hay 16 219 registros que contienen información.
-
COUNTIF
COUNTIF es una función de Excel muy utilizada que cuenta el número de celdas que cumplen una condición específica. Utilicémoslo para contar el número de juegos de este conjunto de datos con el género "Sports":
ws['R1'] = 'Number of Rows with Sports Genre' ws['R2'] = '=COUNTIF(E2:E16220, "Sports")' wb.save('videogamesales.xlsx')
Hay 2296 juegos deportivos en el conjunto de datos.
-
SUMIF
Ahora, vamos a hallar la "Sum of Sales" total generada por los juegos deportivos utilizando la función SUMIF:
ws['S1'] = 'Total Sports Sales' ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)' wb.save('videogamesales.xlsx')
El número total de ventas generadas por los juegos deportivos es de 454.
-
CEILING
La función CEILING de Excel redondea un número al múltiplo especificado más próximo. Redondeemos la cantidad total de ventas generadas por los juegos deportivos utilizando esta función:
ws['T1'] = 'Rounded Sum of Sports Sales' ws['T2'] = '=CEILING(S2,25)' wb.save('videogamesales.xlsx')
Hemos redondeado las ventas totales generadas por los juegos deportivos al múltiplo de 25 más próximo, lo que arroja un resultado de 475.
Los fragmentos de código anteriores deberían generar el siguiente resultado en tu hoja Excel (de las celdas P1 a T2):
Puedes consultar nuestra Hoja de trucos de conceptos básicos de Excel para saber más sobre fórmulas, operadores, funciones matemáticas y cálculo condicional de Excel.
Trabajar con hojas en Openpyxl
Ahora que sabemos cómo acceder a las hojas de cálculo y escribir en ellas, vamos a aprender cómo podemos manipularlas, eliminarlas y duplicarlas utilizando Openpyxl.
-
Cambiar los nombres de las hojas
En primer lugar, vamos a imprimir el nombre de la hoja activa con la que estamos trabajando actualmente utilizando el atributo title de Openpyxl:
print(ws.title)
Se mostrará el siguiente resultado:
vgsales
Ahora, vamos a cambiar el nombre de esta hoja de cálculo utilizando las siguientes líneas de código:
ws.title ='Video Game Sales Data' wb.save('videogamesales.xlsx')
El nombre de tu hoja activa debería cambiar ahora a "Video Game Sales Data".
-
Crear una nueva hoja de cálculo
Ejecuta la siguiente línea de código para listar todas las hojas de cálculo del libro:
print(wb.sheetnames)
Verás una matriz con los nombres de todas las hojas de cálculo del archivo:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
Vamos a crear ahora una nueva hoja de cálculo vacía:
wb.create_sheet('Empty Sheet') # create an empty sheet print(wb.sheetnames) # print sheet names again wb.save('videogamesales.xlsx')
Observa que ahora se ha creado una nueva hoja llamada "Empty Sheet":
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]
-
Eliminar una hoja de cálculo
Para eliminar una hoja de cálculo con Openpyxl, basta con utilizar el atributo eliminar e imprimir de nuevo todos los nombres de las hojas para confirmar que la hoja se ha eliminado:
wb.remove(wb['Empty Sheet']) print(wb.sheetnames) wb.save('videogamesales.xlsx')
Observa que la hoja de cálculo "Empty Sheet" ya no está disponible:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
-
Duplicar una hoja de cálculo
Por último, ejecuta esta línea de código para crear una copia de una hoja de cálculo existente:
wb.copy_worksheet(wb['Video Game Sales Data']) wb.save('vgsales_2.xlsx')
Imprimiendo de nuevo todos los nombres de las hojas, obtenemos el siguiente resultado:
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']
Añadir gráficos a un archivo Excel con Openpyxl
A menudo se considera que Excel es la herramienta a la que acudir para crear visualizaciones y resumir conjuntos de datos. En esta sección, aprenderemos a construir gráficos en Excel directamente desde Python utilizando Openpyxl.
-
Gráfico de barras
Creemos primero un sencillo gráfico de barras que muestre las ventas totales de videojuegos por género. Para ello utilizaremos la hoja de cálculo "Total Sales by Genre":
Esta hoja de cálculo contiene una tabla dinámica en la que la suma de las ventas se ha agregado por género, como se ve en la captura de pantalla anterior.
Vamos a acceder a esta hoja de cálculo antes de empezar a crear el gráfico de barras:
ws = wb['Total Sales by Genre'] # access the required worksheet
Ahora tenemos que indicar a Openpyxl los valores y categorías que queremos representar gráficamente.
Valores:
Los valores incluyen los datos de "Sum of Sales" que queremos representar gráficamente. Tenemos que decirle a Openpyxl dónde encontrar estos datos en el archivo de Excel, incluyendo el rango en el que empiezan y acaban sus valores.
Cuatro parámetros de Openpyxl te permiten especificar dónde se encuentran tus valores:
- Min_column: columna mínima que contiene datos
- Max_column: columna máxima que contiene datos
- Min_row: fila mínima que contiene datos
- Max_row: fila máxima que contiene datos
Aquí tienes una imagen que muestra cómo puedes definir estos parámetros:
Observa que la fila mínima es la primera y no la segunda. Esto se debe a que Openpyxl empieza a contar a partir de la fila que tiene un valor numérico.
# Values for plotting from openpyxl.chart import Reference values = Reference(ws, # worksheet object min_col=2, # minimum column where your values begin max_col=2, # maximum column where your values end min_row=1, # minimum row you’d like to plot from max_row=13) # maximum row you’d like to plot from
Categorías
Ahora tenemos que definir los mismos parámetros para las categorías de nuestro gráfico de barras:
Aquí tienes el código que puedes utilizar para establecer los parámetros de las categorías del gráfico:
cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=13)
Crear el diagrama de barras
Ahora, podemos crear el objeto gráfico de barras e incluir nuestros valores y categorías utilizando las siguientes líneas de código:
from openpyxl.chart import BarChart chart = BarChart() chart.add_data(values, titles_from_data=True) chart.set_categories(cats)
Establecer títulos de gráficos
Por último, puedes establecer los títulos del gráfico e indicar a Openpyxl dónde quieres crearlo en la hoja de Excel:
# set the title of the chart chart.title = "Total Sales" # set the title of the x-axis chart.x_axis.title = "Genre" # set the title of the y-axis chart.y_axis.title = "Total Sales by Genre" # the top-left corner of the chart # is anchored to cell F2 . ws.add_chart(chart,"D2") # save the file wb.save("videogamesales.xlsx")
A continuación, puedes abrir el archivo de Excel y navegar hasta la hoja de cálculo "Total Sales by Genre". Deberías observar que aparece un gráfico parecido a éste:
-
Gráfico de barras agrupadas
Ahora, vamos a crear un gráfico de barras agrupadas que muestre las ventas totales por género y región. Puedes encontrar los datos de este gráfico en la hoja de cálculo "Breakdown of Sales by Genre":
De forma similar a como creamos el gráfico de barras, tenemos que definir el rango para los valores y las categorías:
Ahora podemos acceder a la hoja de cálculo y escribir esto en código:
### Creating a Grouped Bar Chart with Openpyxl ws = wb['Breakdown of Sales by Genre'] # access worksheet # Data for plotting values = Reference(ws, min_col=2, max_col=5, min_row=1, max_row=13) cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=13)
Ahora podemos crear el objeto gráfico de barras, incluir en él los valores y las categorías, y establecer los parámetros del título exactamente igual que hicimos anteriormente:
# Create object of BarChart class chart = BarChart() chart.add_data(values, titles_from_data=True) chart.set_categories(cats) # set the title of the chart chart.title = "Sales Breakdown" # set the title of the x-axis chart.x_axis.title = "Genre" # set the title of the y-axis chart.y_axis.title = "Breakdown of Sales by Genre" # the top-left corner of the chart is anchored to cell H2. ws.add_chart(chart,"H2") # save the file wb.save("videogamesales.xlsx")
Una vez abierta la hoja de cálculo, debería aparecer un gráfico de barras agrupadas con este aspecto:
-
Gráfico de líneas apiladas
Por último, crearemos un gráfico de líneas apiladas utilizando los datos de la pestaña "Breakdown of Sales by Year". Esta hoja de cálculo contiene datos de ventas de videojuegos desglosados por año y región:
Vamos a definir el rango para los valores y categorías de este gráfico:
Ahora podemos escribir estos valores mínimo y máximo en código:
# Data for plotting values = Reference(ws, min_col=2, max_col=6, min_row=1, max_row=40) cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=40)
Por último, vamos a crear el objeto gráfico de líneas y a establecer el título, el eje x y el eje y del gráfico:
# Create object of LineChart class from openpyxl.chart import LineChart chart = LineChart() chart.add_data(values, titles_from_data=True) chart.set_categories(cats) # set the title of the chart chart.title = "Total Sales" # set the title of the x-axis chart.x_axis.title = "Year" # set the title of the y-axis chart.y_axis.title = "Total Sales by Year" # the top-left corner of the chart is anchored to cell H2 ws.add_chart(chart,"H2") # save the file wb.save("videogamesales.xlsx")
En tu hoja de cálculo debería aparecer un gráfico de líneas apiladas con este aspecto:
Formatear celdas con Openpyxl
Openpyxl permite a los usuarios aplicar estilos a las celdas de los libros de Excel. Puedes hacer que tu hoja de cálculo tenga un aspecto más bonito cambiando el tamaño de las fuentes, los colores de fondo y los bordes de las celdas directamente en Python.
Aquí tienes algunas formas de personalizar tu hoja de cálculo Python Excel utilizando Openpyxl:
-
Cambiar el tamaño y el estilo de las fuentes
Aumentemos el tamaño de la fuente en la celda A1 y pongamos el texto en negrita utilizando las siguientes líneas de código:
from openpyxl.styles import Font ws = wb['Video Game Sales Data'] ws['A1'].font = Font(bold=True, size=12) wb.save('videogamesales.xlsx')
Observa que el texto de la celda A1 es ahora ligeramente más grande y está en negrita:
Ahora bien, ¿y si quisiéramos cambiar el tamaño y estilo de letra de todos los encabezados de columna de la primera fila?
Para ello, podemos utilizar el mismo código y crear simplemente un `for loop` para iterar por todas las columnas de la primera fila:
for cell in ws["1:1"]: cell.font = Font(bold=True, size=12) wb.save('videogamesales.xlsx')
Cuando iteramos a través de ["1:1"], estamos indicando a Openpyxl las filas inicial y final por las que debe pasar el bucle. Si quisiéramos recorrer las diez primeras filas, por ejemplo, especificaríamos ["1:10"].
Puedes abrir la hoja de Excel para comprobar si se han reflejado los cambios:
-
Cambiar el color de la fuente
Puedes cambiar los colores de las fuentes en Openpyxl utilizando códigos hexadecimales:
from openpyxl.styles import colors ws['A1'].font = Font(color = 'FF0000',bold=True, size=12) ## red ws['A2'].font = Font(color = '0000FF') ## blue wb.save('videogamesales.xlsx')
Después de guardar el libro y abrirlo de nuevo, los colores de las fuentes de las celdas A1 y A2 deberían haber cambiado:
-
Cambiar el color de fondo de las celdas
Para cambiar el color de fondo de una celda, puedes utilizar el módulo PatternFill de Openpyxl:
## changing background color of a cell from openpyxl.styles import PatternFill ws["A1"].fill = PatternFill('solid', start_color="38e3ff") # light blue background color wb.save('videogamesales.xlsx')
El siguiente cambio debe reflejarse en tu hoja de cálculo:
-
Añadir bordes de celda
Para añadir un borde de celda utilizando Openpyxl, ejecuta las siguientes líneas de código:
## cell borders from openpyxl.styles import Border, Side my_border = Side(border_style="thin", color="000000") ws["A1"].border = Border( top=my_border, left=my_border, right=my_border, bottom=my_border ) wb.save("videogamesales.xlsx")
Deberías ver que aparece un borde parecido a éste en toda la celda A1:
-
Formato condicional
El formato condicional es el proceso de resaltar valores específicos en un archivo de Excel basándose en una serie de condiciones. Permite a los usuarios visualizar los datos más fácilmente y comprender mejor los valores de sus hojas de cálculo.
Utilicemos Openpyxl para resaltar en verde todos los valores de ventas de videojuegos que sean mayores o iguales que 8:
from openpyxl.formatting.rule import CellIsRule fill = PatternFill( start_color='90EE90', end_color='90EE90',fill_type='solid') # specify background color ws.conditional_formatting.add( 'G2:K16594', CellIsRule(operator='greaterThan', formula=[8], fill=fill)) # include formatting rule wb.save('videogamesales.xlsx')
En el primer bloque de código, especificamos el color de fondo de las celdas que queremos formatear. En este caso, el color es verde claro.
A continuación, creamos una regla de formato condicional que establece que cualquier valor superior a 8 debe resaltarse con el color de relleno que hemos especificado. También indicamos el rango de celdas en el que queremos aplicar esta condición.
Después de ejecutar el código anterior, todos los valores de ventas superiores a 8 deberían resaltarse así:
Trabajar con Excel en Python: Próximos pasos
Hemos cubierto mucho terreno en este tutorial, empezando por los aspectos básicos del uso de la biblioteca Openpyxl hasta la realización de operaciones más avanzadas como la creación de gráficos y el formateo de hojas de cálculo en Python.
Por sí solos, Python y Excel son potentes herramientas de manipulación de datos que se utilizan para construir modelos predictivos, elaborar informes analíticos y realizar cálculos matemáticos.
La mayor ventaja de Excel es que lo utiliza casi todo el mundo. Desde las partes interesadas no técnicas hasta las personas de nivel básico, los empleados de todos los niveles entienden los informes presentados en una hoja de cálculo Excel.
Python, por su parte, se utiliza para analizar y construir modelos sobre grandes cantidades de datos. Puede ayudar a los equipos a automatizar tareas laboriosas y mejorar la eficacia organizativa.
Cuando Excel y Python se utilizan juntos, se pueden recortar horas a los flujos de trabajo de una empresa, al tiempo que se mantiene una interfaz con la que todos los miembros de la organización están familiarizados.
Ahora que ya sabes cómo se puede utilizar Openpyxl para trabajar con hojas de Excel, aquí tienes algunas formas de llevar este nuevo conocimiento más allá y utilizarlo para añadir valor a tus flujos de trabajo existentes:
-
Practica con conjuntos de datos más grandes
El conjunto de datos que hemos utilizado anteriormente sólo tiene unas 16 000 filas, mientras que Openpyxl puede manejar cantidades mucho mayores utilizando los modos optimizados de la biblioteca. Si tu objetivo es realizar operaciones en grandes libros de Excel con rapidez, puedes practicar utilizando Openpyxl en sus modos optimizados de lectura y escritura. -
Haz un curso online
Aunque hemos cubierto los fundamentos del trabajo con Excel en Python, hay muchos conceptos que estaban fuera del alcance de este curso, como el trabajo con varias hojas de Excel, la creación de tablas dinámicas y el resumen de grandes cantidades de datos.
Te sugerimos que sigas el curso Python para usuarios de hojas de cálculo de DataCamp para cubrir algunas de estas lagunas en tus conocimientos. -
Aprende a automatizar flujos de trabajo de Excel en Python
Como se ha mencionado anteriormente en esta sección, la mayor ventaja de utilizar bibliotecas como Openpyxl es la posibilidad de trabajar con varios libros de trabajo a la vez y programar flujos de trabajo para que no tengan que repetirse muchas veces.
Puedes intentar crear una función sencilla que itere a través de varios libros de trabajo a la vez y realice algunas de las operaciones tratadas en este tutorial. -
Conoce las diferentes bibliotecas
Aunque Openpyxl es una opción para manipular archivos de Excel con Python, existen alternativas como la biblioteca Pandas, que pueden ayudarte a procesar el contenido de Excel más rápidamente.
Si el formateo de celdas o trabajar directamente con fórmulas de Excel no es un requisito para ti, Pandas puede ser realmente más fácil de aprender porque tiene mejor documentación y apoyo de la comunidad.
Puedes seguir nuestro curso Manipulación de datos con Pandas para empezar a aprender sobre la biblioteca hoy mismo.
Más información sobre Python y las hojas de cálculo
curso
Pandas Joins for Spreadsheet Users
curso
Introduction to Importing Data in Python
tutorial
Tutorial de funciones de Python
tutorial
Tutorial de visualización de datos con Python y Tableau
tutorial
Tutorial sobre la ejecución de scripts de Python en Power BI
tutorial
Tutorial de Pandas: DataFrames en Python
tutorial
Tutorial sobre cómo trabajar con módulos en Python
Nishant Kumar
8 min