Python para Excel - 1
Python para Excel - 1
com
Pitón
para Excel
Un entorno moderno para la automatización y
el análisis de datos
Felix Zumstein
Tuve mucha suerte de que el libro fuera revisado por revisores de tecnología altamente
calificados y realmente aprecio el arduo trabajo que pusieron bajo mucha presión de tiempo.
¡Gracias por toda su ayuda, Jordan Goldmeier, George Mount, Andreas Clenow, Werner Brönni‐
mann y Eric Moreira!
Un agradecimiento especial para Björn Stiel, que no era solo un revisor de tecnología, sino de quien también
aprendí muchas de las cosas sobre las que estoy escribiendo en este libro. ¡He disfrutado trabajando contigo
estos últimos años!
Por último, pero no menos importante, me gustaría extender mi gratitud a Eric Reynolds, quien
fusionó su proyecto ExcelPython en la base de código xlwings en 2016. También rediseñó todo
el paquete desde cero, haciendo de mi horrible API de los primeros días una cosa de el pasado.
¡Muchos gracias!
xviii | Prefacio
Cómo contactarnos
Dirija sus comentarios y preguntas sobre este libro al editor:
Tenemos una página web para este libro, donde enumeramos erratas, ejemplos y cualquier
información adicional. Puede acceder a esta página enhttps://oreil.ly/py4excel.
Correo electrónico [email protected] para comentar o hacer preguntas técnicas sobre este
libro.
Para obtener más información sobre nuestros libros, cursos, conferencias y noticias, visite nuestro sitio web
en http://www.oreilly.com.
http://www.youtube.com/oreillymedia.
Expresiones de gratitud
Como autor por primera vez, estoy increíblemente agradecido por la ayuda que recibí de tantas personas en
el camino. ¡Ellos hicieron este viaje mucho más fácil para mí!
En O'Reilly, me gustaría agradecer a mi editora, Melissa Potter, quien hizo un gran trabajo
manteniéndome motivada y dentro del programa y quien me ayudó a convertir este libro en una
forma legible. También me gustaría agradecer a Michelle Smith, que trabajó conmigo en la propuesta
del libro inicial, y a Daniel Elfanbaum, que nunca se cansó de responder a mis preguntas técnicas.
Un gran agradecimiento a todos mis colegas, amigos y clientes que invirtieron muchas horas en leer
las primeras versiones de mis borradores. Sus comentarios fueron cruciales para hacer que el libro
fuera más fácil de entender, y algunos de los estudios de casos están inspirados en problemas de
Excel del mundo real que compartieron conmigo. Mi agradecimiento a Adam Rodríguez, Mano
Beeslar, Simon Schiegg, Rui Da Costa, Jürg Nager y Christophe de Montrichard.
También recibí comentarios útiles de los lectores de la versión de lanzamiento anticipado que se
publicó en la plataforma de aprendizaje en línea de O'Reilly. ¡Gracias Felipe Maion, Ray Doue,
Kolyu Minevski, Scott Drummond, Volker Roth y David Ruggles!
Prefacio xvii
con Git, también puede usar Git para clonar el repositorio en su disco duro local. Puede colocar la
carpeta en cualquier lugar que desee, pero me referiré a ella ocasionalmente de la siguiente manera
en este libro:
Simplemente descargando y descomprimiendo el archivo ZIP en Windows, terminará con una estructura de
carpetas similar a esta (tenga en cuenta los nombres de carpeta repetidos):
Copiar el contenido de esta carpeta en una que cree en C: \ Users \ <nombre de usuario> \ python-for-
excel podría facilitarle el seguimiento. Las mismas observaciones son válidas para macOS, es decir,
copie los archivos a/Usuarios / <nombre de usuario> / python-for-excel.
Si tiene una pregunta técnica o un problema al utilizar los ejemplos de código, envíe un correo
electrónico a [email protected].
Este libro está aquí para ayudarlo a hacer su trabajo. En general, si se ofrece un código de
ejemplo con este libro, puede utilizarlo en sus programas y documentación. No es necesario
que se comunique con nosotros para obtener permiso a menos que esté reproduciendo una
parte significativa del código. Por ejemplo, escribir un programa que utiliza varios fragmentos
de código de este libro no requiere permiso. Vender o distribuir ejemplos de libros de O'Reilly
requiere permiso. Responder una pregunta citando este libro y citando un código de ejemplo
no requiere permiso. La incorporación de una cantidad significativa de código de ejemplo de
este libro en la documentación de su producto requiere permiso.
Si cree que el uso que hace de los ejemplos de código está fuera del uso legítimo o del permiso otorgado
anteriormente, no dude en contactarnos en [email protected].
xvi | Prefacio
Las convenciones usadas en este libro
Itálico
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Ancho constante
Se utiliza para listas de programas, así como dentro de párrafos para referirse a elementos de
programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de
entorno, declaraciones y palabras clave.
El material complementario (ejemplos de código, ejercicios, etc.) está disponible para descargar enhttps://
github.com/fzumstein/python-for-excel. Para descargar este repositorio complementario, haga clic en el
botón verde Código, luego seleccione Descargar ZIP. Una vez descargado, haga clic derecho en el archivo en
Windows y seleccione Extraer todo para descomprimir los archivos contenidos en una carpeta. En macOS,
simplemente haga doble clic en el archivo para descomprimirlo. Si sabes trabajar
Prefacio xv
herramientas: nos permiten hacer clic en un botón para que Python realice algo que usted
pudo haber hecho anteriormente con macros VBA, como un cálculo computacionalmente
costoso. También aprenderemos a escribir funciones definidas por el usuario.1 (UDF) en
Python en lugar de VBA.
Figura P-1. Leer y escribir archivos de Excel (Parte III) vs.programar Excel (Parte IV)
Ya que Parte III no requiere una instalación de Excel, todo funciona en todas las plataformas
compatibles con Python, principalmente Windows, macOS y Linux. Parte IV, sin embargo, solo
funcionará en aquellas plataformas compatibles con Microsoft Excel, es decir, Windows y
macOS, ya que el código se basa en una instalación local de Microsoft Excel.
Este libro también espera que utilice una versión moderna de Excel, es decir, al menos Excel
2007 en Windows y Excel 2016 en macOS. La versión de Excel instalada localmente que viene
con la suscripción a Microsoft 365 también funcionará perfectamente; de hecho, incluso la
recomiendo, ya que tiene las funciones más recientes que no encontrará en otras versiones de
Excel. También fue la versión que usé para escribir este libro, por lo que si usa otra versión de
Excel, a veces puede ver una pequeña diferencia en el nombre o la ubicación de un elemento
del menú.
1 Microsoft ha comenzado a utilizar el término funciones personalizadas en lugar de UDF. En este libro, seguiré llamando
ellos UDF.
xiv | Prefacio
Si usted es un desarrollador experimentado de VBA, encontrará comparaciones
regulares entre Python y VBA que le permitirán sortear los errores comunes y
comenzar a funcionar.
Este libro también puede ser útil si es un desarrollador de Python y necesita aprender acerca de las
diferentes formas en que Python puede manejar la aplicación de Excel y los archivos de Excel para
poder elegir el paquete correcto dados los requisitos de sus usuarios comerciales.
Prefacio xiii
reutilice sus habilidades de Python fuera de Excel: si necesita ampliar su poder de
cómputo, puede mover fácilmente su modelo cuantitativo, simulación o aplicación de
aprendizaje automático a la nube, donde los recursos informáticos prácticamente
ilimitados lo están esperando.
De forma regular, se me pide que recomiende recursos para comenzar con Python. Si bien
ciertamente no hay escasez de introducciones de Python, a menudo son demasiado generales (nada
sobre el análisis de datos) o demasiado específicas (introducciones científicas completas). Sin
embargo, los usuarios de Excel tienden a estar en algún punto intermedio: ciertamente trabajan con
datos, pero una introducción científica completa puede ser demasiado técnica. También suelen tener
requisitos específicos y preguntas que no se responden en ninguno de los materiales existentes.
Algunas de estas preguntas son:
Escribí este libro para que no tenga conocimientos de Python para poder automatizar sus tareas
centradas en Excel y aprovechar las herramientas de análisis de datos y de computación científica de
Python en Excel sin ningún desvío.
xii | Prefacio
Prefacio
Microsoft está ejecutando un foro de comentarios para Excel en UserVoice donde todos pueden
enviar una nueva idea para que otros la voten. La solicitud de función más votada es "Python
como lenguaje de programación de Excel" y tiene aproximadamente el doble de votos que la
segunda solicitud de función más votada. Aunque no sucedió nada desde que se agregó la idea
en 2015, los usuarios de Excel se sintieron llenos de nuevas esperanzas a fines de 2020 cuando
Guido van Rossum, el creador de Python,tuiteó que su “jubilación era aburrida” y que se uniría a
Microsoft. Si su movimiento tiene alguna influencia en la integración de Excel y Python, no lo sé.
Sin embargo, sí sé qué hace que esta combinación sea tan atractiva y cómo puede comenzar a
usar Excel y Python juntos, hoy. Y esto es, en pocas palabras, de lo que trata este libro.
La principal fuerza impulsora detrás de la Python para Excel historia es el hecho de que vivimos
en un mundo de datos. Hoy en día, hay enormes conjuntos de datos disponibles para todos y
para todo. A menudo, estos conjuntos de datos son tan grandes que ya no caben en una hoja
de cálculo. Hace unos años, esto puede haber sido denominadobig data, pero hoy en día, un
conjunto de datos de unos pocos millones de filas no es nada especial. Excel ha evolucionado
para hacer frente a esa tendencia: introdujo Power Query para cargar y limpiar conjuntos de
datos que no caben en una hoja de cálculo y Power Pivot, un complemento para realizar análisis
de datos en estos conjuntos de datos y presentar los resultados. Power Query se basa en el
lenguaje de fórmulas de Power Query M (M), mientras que Power Pivot define fórmulas
utilizando Expresiones de análisis de datos (DAX). Si también desea automatizar algunas cosas
en su archivo de Excel, entonces usaría el lenguaje de automatización integrado de Excel, Visual
Basic para Aplicaciones (VBA). Es decir, para algo bastante simple, puede terminar usando VBA,
M y DAX. Un problema con esto es que todos estos lenguajes solo le sirven en el mundo de
Microsoft, principalmente en Excel y Power BI (presentaré Power BI brevemente enCapítulo 1).
xi
Depurar UDF 269
Temas avanzados de UDF 271
Almacenamiento en caché de optimización del 272
rendimiento básico 274
El decorador secundario 276
Conclusión 277
Índice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
x | Tabla de contenido
Convertidores y opciones 196
Gráficos, imágenes y casos de estudio de nombres 198
definidos (revisado nuevamente): Temas avanzados de 202
xlwings sobre informes de Excel 204
Fundaciones xlwings 204
Mejorando el desempeño 206
Cómo solucionar la falta de funcionalidad 207
Conclusión 208
Tabla de contenido | ix
Cambio y cambios porcentuales 131
Rebase y correlación 133
Remuestreo 136
Ventanas enrollables 137
Limitaciones con pandas 138
Conclusión 139
3. Introducción a Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Tipos de datos 43
Objetos 44
Tipos numéricos 45
Booleanos 47
Instrumentos de cuerda 49
Indexación y corte 50
Indexación 51
Rebanar 52
Estructuras de datos 52
Liza 53
Diccionarios 55
Tuplas 57
Conjuntos 57
Flujo de control 58
Bloques de código y declaración de paso 58
La instrucción if y las expresiones condicionales 59
Los bucles for y while 60
Organización de códigos de comprensiones de listas, 63
diccionarios y conjuntos 64
Funciones sesenta y cinco
4. Fundaciones NumPy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Empezando con NumPy 77
Matriz NumPy 77
vi | Tabla de contenido
Tabla de contenido
Prefacio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
2. Entorno de desarrollo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
La distribución de Anaconda Python 20
Instalación 20
Aviso Anaconda 21
Python REPL: una sesión interactiva de Python 24
Administradores de paquetes: Conda y pip 25
Ambientes Conda 27
Cuadernos Jupyter 27
Ejecución de Jupyter Notebooks 28
Notebook Cells 29
v
Python para Excel
Publicado por O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
Los libros de O'Reilly se pueden comprar con fines educativos, comerciales o promocionales de ventas. Las ediciones en línea también están
disponibles para la mayoría de los títulos (http://oreilly.com). Para obtener más información, comuníquese con nuestro departamento de
ventas corporativo / institucional: 800-998-9938 [email protected].
El logotipo de O'Reilly es una marca registrada de O'Reilly Media, Inc. Python para Excel, la imagen de portada y la imagen
comercial relacionada son marcas comerciales de O'Reilly Media, Inc.
Las opiniones expresadas en este trabajo son las del autor y no representan las opiniones del editor. Si bien el
editor y el autor han realizado esfuerzos de buena fe para garantizar que la información y las instrucciones
contenidas en este trabajo sean precisas, el editor y el autor renuncian a toda responsabilidad por errores u
omisiones, incluida, entre otras, la responsabilidad por daños resultantes del uso de o dependencia de este
trabajo. El uso de la información y las instrucciones contenidas en este trabajo es bajo su propio riesgo. Si
alguna muestra de código u otra tecnología que este trabajo contiene o describe está sujeta a licencias de
código abierto o derechos de propiedad intelectual de otros, es su responsabilidad asegurarse de que su uso
cumpla con dichas licencias y / o derechos.
978-1-492-08100-5
[LSI]
Python para Excel
Un entorno moderno para la automatización
y análisis de datos
Felix Zumstein
Excel y Python son dos de las herramientas más importantes de la caja de herramientas de Business
Analytics, y juntas son mucho más grandes que la suma de sus partes. En este libro, Felix Zumstein
expone su dominio incomparable de las muchas formas de conectar Python y Excel utilizando soluciones
multiplataforma de código abierto. Será una herramienta invaluable para los analistas de negocios.
y científicos de datos por igual, y cualquier usuario de Python que busque aprovechar la
poder de Excel en su código.
¿Qué puede hacer Python por Excel? Si alguna vez se ha enfrentado a bloqueos inesperados de libros de trabajo,