24,99 €
Obtén el manual definitivo para manipular, procesar, limpiar y restringir conjuntos de datos en Python. Actualizado para Python 3.10 y pandas 1.4.0, esta tercera edición de Python para análisis de datos. Manipulación de datos con pandas, NyumPy y Jupyter está llena de casos prácticos, que permiten averiguar cómo resolver una amplia variedad de problemas de datos de una manera efectiva. Con su ayuda conocerás y aprenderás las versiones más recientes de pandas, NumPy, IPython y Jupyter. Escrito por Wes McKinney, el creador del proyecto pandas, Python para análisis de datos es una introducción práctica y moderna a las herramientas de ciencia de datos que ofrece Python. Es ideal para analistas no versados en Python y para programadores que deseen ponerse al día en ciencia de datos y computación científica o ciencia computacional. GitHub alberga los archivos de datos empleados en el libro y otro material asociado. Entre otras cosas, este libro permite: * Utilizar Jupyter Notebook y el shell de IPython para explorar datos. * Aprender funciones de NumPy básicas y avanzadas. * Iniciarse en el manejo de las herramientas de análisis de datos de la librería pandas. * Emplear herramientas flexibles para limpiar, transformar, combinar y remodelar datos. * Crear visualizaciones informativas con matplotlib. * Aplicar la función GroupBy de pandas para segmentar, desmenuzar y resumir conjuntos de datos. * Analizar y manipular series de datos temporales regulares e irregulares. * Aprender cómo resolver problemas reales de análisis de datos con ejemplos específicos y detallados.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 701
Veröffentlichungsjahr: 2023
Wes McKinney
Python
para análisis de datos
Manipulación de datos ocn padas, NumPy y Jupyter
Wes McKinney es desarrollador de software y empresario en Nashville, Tennessee. Tras obtener su título universitario en matemáticas en el Massachussets Institute of Technology (MIT) en 2007, empezó a trabajar en finanzas y economía cuantitativa en la compañía AQR Capital Management en Greenwich, Connecticut. Frustrado por las incómodas herramientas de análisis de datos que existían en ese momento, aprendió Python e inició lo que más tarde se convertiría en el proyecto pandas. Es un miembro activo de la comunidad de datos de Python y es defensor del uso de Python en análisis de datos, finanzas y aplicaciones de computación científica.
Posteriormente, Wes fue cofundador y director ejecutivo de DataPad, cuyas instalaciones tecnológicas y personal fueron adquiridos por Cloudera en 2014. Desde entonces ha estado muy implicado en la tecnología Big Data y se ha unido a los comités de administración de los proyectos Apache Arrow y Apache Parquet en la Apache Software Foundation (ASF). En 2018 fundó Usra Labs, una organización sin ánimo de lucro centrada en el desarrollo de Apache Arrow, en asociación con RStudio y Two Sigma Investments. En 2021 ha creado la startup tecnológica Voltron Data, donde trabaja en la actualidad como director de tecnología.
El animal de la portada de este libro es una tupaya o musaraña arborícola de cola plumosa (Ptilocercus lowii). Este pequeño mamífero es el único de su especie del género Ptilocercus y de la familia Ptiocercidae; las otras tres musarañas arborícolas que existen son de la familia Tupaiidae. Las tupayas se identifican por sus largas colas y su suave pelo marrón rojizo. Según indica su apodo, la tupaya de cola plumosa tiene una cola que parece una pluma de escribir. Las musarañas de esta clase son omnívoras, se alimentan principalmente de insectos, fruta, semillas y pequeños vertebrados.
Se encuentra principalmente en Indonesia, Malasia y Tailandia, y es conocida por su consumo crónico de alcohol. Se ha descubierto que las musarañas arborícolas de Malasia se pasan varias horas consumiendo el néctar fermentado de forma natural de la palmera de Bertam, lo que equivaldría a unos 10 o 12 vasos de vino con un contenido de alcohol del 3,8 %. A pesar de ello, nunca ninguna tupaya se ha intoxicado, gracias en parte a su impresionante habilidad para descomponer el etanol, que incluye metabolizar el alcohol de una forma no utilizada por los humanos. ¿Algo más impresionante aún que cualquiera de sus colegas mamíferos, incluidos los humanos? La relación entre la masa cerebral y la masa corporal.
A pesar del nombre de estos mamíferos, la tupaya de cola plumosa no es una verdadera musaraña, sino que realmente está más emparentada con los primates. Debido a esta estrecha relación, las musarañas arborícolas se han convertido en una alternativa a los primates en experimentos médicos sobre la miopía, el estrés psicosocial y la hepatitis.
La imagen de la portada procede de la obra Cassell’s Natural History.
Esta obra es producto de muchos años de fructíferas discusiones, colaboraciones y ayuda de muchas personas de todo el mundo. Me gustaría dar las gracias a algunos de ellos.
Nuestro estimado amigo y compañero John D. Hunter falleció tras una batalla contra el cáncer de colon el 28 de agosto de 2012, poco después de que yo terminara el manuscrito final para la primera edición de este libro.
Todo lo que se diga acerca del impacto y legado de John en las comunidades científicas y de datos de Python se queda corto. Además de desarrollar matplotlib a principios de los años 2000 (un momento en el que Python apenas era conocido), contribuyó a moldear la cultura de una generación crítica de desarrolladores de código abierto que se habían convertido en pilares del ecosistema Python que ahora solemos dar por sentado.
Fui lo bastante afortunado como para conectar con John a comienzos de mi carrera con el código abierto en enero de 2010, justo después del lanzamiento de pandas 1.0. Su inspiración y orientación me permitieron mantener firme, incluso en los momentos más oscuros, mi visión de pandas y Python como lenguaje de análisis de primera categoría.
John estaba muy unido a Fernando Pérez y Brian Granger, pioneros de IPython, Jupyter y muchas otras iniciativas de la comunidad Python. Teníamos la esperanza de trabajar los cuatro juntos en un libro, pero yo terminé siendo el que tenía más tiempo libre. Estoy seguro de que se habría sentido orgulloso de lo que hemos logrado, como individuos y como comunidad, en los últimos nueve años.
Ha pasado más una década desde que empecé a escribir la primera edición de este libro y más de quince años desde que inicié mi viaje como programador de Python. Desde entonces han cambiado muchas cosas. Python ha pasado de ser un lenguaje para análisis de datos relativamente especializado a convertirse en el lenguaje más conocido y utilizado, impulsando así buena parte (¡si no la mayoría!) del trabajo de ciencia de datos, aprendizaje automático e inteligencia artificial.
No he contribuido de forma activa al proyecto pandas de código abierto desde 2013, pero su comunidad internacional de desarrolladores ha seguido progresando y se ha convertido en un modelo de desarrollo de software de código abierto basado en la comunidad. Muchos proyectos Python de «próxima generación» que manejan datos tabulares están creando sus interfaces de usuarios basándose directamente en pandas, de modo que el proyecto ha demostrado tener una influencia perdurable en la futura trayectoria del ecosistema de ciencia de datos de Python.
Espero que este libro siga sirviendo como valioso recurso para estudiantes y para cualquier persona que quiera aprender a trabajar con datos en Python.
Tengo que dar especialmente las gracias a O’Reilly Media por permitirme publicar una versión «de acceso abierto» de este libro en mi sitio web en https://wesmckinney.com/book, donde espero que llegue aún a más gente y permita ampliar las oportunidades en el mundo del análisis de datos. J.J. Allaire hizo esto posible siendo mi salvavidas al ayudarme a «transportar» el libro de docbook XML a Quarto (https://quarto.org), un fabuloso sistema nuevo de edición científica y técnica para impresión y web.
También quiero dar las gracias a mis revisores técnicos Paul Barry, Jean-Christophe Leyder, Abdullah Karasan y William Jamir, cuyos detallados comentarios han mejorado enormemente la legibilidad, claridad y comprensión del contenido.
Han pasado casi cinco años desde el día en que terminé el manuscrito para la primera edición de este libro en julio de 2012. En todo este tiempo se han producido muchos cambios. La comunidad Python ha crecido inmensamente, y el ecosistema del software de código abierto que existe a su alrededor se ha fortalecido.
Esta nueva edición del libro no existiría si no fuera por los incansables esfuerzos de los principales desarrolladores de pandas, que han hecho crecer el proyecto y su comunidad de usuarios para convertirlo en uno de los ejes fundamentales del ecosistema de ciencia de datos Python. Entre ellos se incluyen, entre otros, Tom Augspurser, Joris van den Bossche, Chris Bartak, Phillip Cloud, gfyoung, Andy Hayden, Masaaki Horikoshi, Stephan Hoyer, Adam Klein, Wouter Overmeire, Jeff Reback, Chang She, Skipper Seabold, Jeff Tratner e y-p.
En lo referente a la redacción como tal de esta segunda edición, quisiera agradecer al personal de O’Reilly por su paciente ayuda en este proceso. Incluyo a Marie Beaugureau, Ben Lorica y Colleen Toporek. De nuevo disfruté de la ayuda de fabulosos revisores técnicos como Tom Augspurser, Paul Barry, Hugh Brown, Jonathan Coe y Andreas Müller. Muchas gracias.
La primera edición de este libro ha sido traducida a muchos idiomas, incluyendo chino, francés, alemán, japonés, coreano y ruso. Traducir todo este contenido y ponerlo a disposición de una audiencia más amplia es un esfuerzo enorme y con frecuencia no agradecido. Gracias por ayudar a que más personas del mundo aprendan a programar y utilizar herramientas de análisis de datos.
También tengo la suerte de haber recibido apoyo en los últimos años por parte de Cloudera y Two Sigma Investments en mis continuos esfuerzos de desarrollo de código abierto. Teniendo proyectos de software de código abierto con más recursos que nunca en lo que al tamaño de las bases de usuarios se refiere, cada vez está siendo más importante para las empresas ofrecer soporte para el desarrollo de proyectos clave de código abierto. Eso es lo correcto.
Me habría resultado difícil escribir este libro sin el apoyo de un gran grupo de personas.
Del personal de O’Reilly, me siento muy agradecido a mis editores, Meghan Blanchette y Julie Steele, quienes me guiaron en todo el proceso. Mike Loukides trabajó también conmigo en las etapas de la propuesta y ayudó a que el libro se hiciera realidad.
Recibí muchísimas revisiones técnicas de un gran elenco de personajes. En especial, la ayuda de Martin Blais y Hugh Brown resultó increíblemente provechosa para mejorar los ejemplos del libro y su claridad y organización desde la portada hasta la última página. James Long, Drew Conway, Fernando Pérez, Brian Granger, Thomas Kluyver, Adam Klein, Josh Klein, Chang She y Stéfan van der Walt revisaron todos ellos uno o varios capítulos, ofreciendo comentarios acertados desde muchas perspectivas distintas.
Conseguí muchas buenas ideas para los ejemplos y los conjuntos de datos de amigos y compañeros de la comunidad de datos, entre ellos: Mike Dewar, Jeff Hammerbacher, James Johndrow, Kristian Lum, Adam Klein, Hilary Mason, Chang She y Ashley Williams.
Por supuesto, estoy absolutamente en deuda con los líderes de la comunidad científica Python de código abierto que han puesto las bases para mi trabajo de desarrollo y me dieron ánimos mientras escribía este libro: el equipo principal de IPython (Fernando Pérez, Brian Granger, Min Ragan-Kelly, Thomas Kluyver, y otros), John Hunter, Skipper Seabold, Travis Oliphant, Peter Wang, Eric Jones, Robert Kern, Josef Perktold, Francesc Alted, Chris Fonnesbeck y otros tantos que no tengo aquí espacio para mencionar. Otras personas ofrecieron también mucho apoyo, buenas ideas y ánimo en todo el recorrido: Drew Conway, Sean Taylor, Giuseppe Paleologo, Jared Lander, David Epstein, John Krowas, Joshua Bloom, Den Pilsworth, John Myles-White y muchos otros que he olvidado.
También quisiera dar las gracias a una serie de personas a las que conocí en mis años de formación. En primer lugar, mis primeros compañeros de AQR que me dieron ánimos en mi trabajo con pandas a lo largo de los años: Alex Reyfman, Michael Wong, Tim Sargen, Oktay Kurbanov, Matthew Tschantz, Roni Israelov, Michael Katz, Ari Levine, Chris Uga, Prasad Ramanan, Ted Square y Hoon Kim. Por último, gracias a mis consejeros académicos Haynes Miller (MIT) y Mike West (Duke).
Recibí un importante apoyo de Phillip Cloud y Joris van der Bossche en 2014 para actualizar los ejemplos de código del libro y resolver algunas imprecisiones debido a modificaciones sufridas por pandas.
En lo que se refiere a lo personal, Casey me ofreció un apoyo diario inestimable durante el proceso de redacción, tolerando mis altibajos mientras elaboraba el borrador final con una agenda de trabajo ya de por sí sobrecargada. Finalmente, mis padres, Bill y Kim, me enseñaron a seguir siempre mis sueños y nunca conformarme con menos.
Sobre el autor
Sobre la imagen de cubierta
Agradecimientos
En memoria de John D. Hunter (1968-2012)
Agradecimientos por la tercera edición (2022)
Agradecimientos por la segunda edición (2017)
Agradecimientos por la primera edición (2012)
Prefacio
Convenciones empleadas en este libro
Uso del código de ejemplo
Capítulo 1. Preliminares
1.1 ¿De qué trata este libro?
¿Qué tipos de datos?
1.2 ¿Por qué Python para análisis de datos?
Python como elemento de unión
Resolver el problema de «los dos lenguajes»
¿Por qué no Python?
1.3 Librerías esenciales de Python
NumPy
pandas
matplotlib
IPython y Jupyter
SciPy
scikit-learn
statsmodels
Otros paquetes
1.4 Instalación y configuración
Miniconda en Windows
GNU/Linux
Miniconda en macOS
Instalar los paquetes necesarios
Entornos de desarrollo integrados y editores de texto
1.5 Comunidad y conferencias
1.6 Navegar por este libro
Códigos de ejemplo
Datos para los ejemplos
Convenios de importación
Capítulo 2. Fundamentos del lenguaje Python, IPython y Jupyter Notebooks
2.1 El intérprete de Python
2.2 Fundamentos de IPython
Ejecutar el shell de IPython
Ejecutar el notebook de Jupyter
Autocompletado
Introspección
2.3 Fundamentos del lenguaje Python
Semántica del lenguaje
Tipos escalares
Control de flujo
2.4 Conclusión
Capítulo 3. Estructuras de datos integrados, funciones y archivos
3.1 Estructuras de datos y secuencias
Tupla
Listas
Diccionario
Conjunto o set
Funciones de secuencia integradas
Comprensiones de lista, conjunto y diccionario
3.2 Funciones
Espacios de nombres, ámbito y funciones locales
Devolver varios valores
Las funciones son objetos
Funciones anónimas (lambda)
Generadores
Errores y manejo de excepciones
3.3 Archivos y el sistema operativo
Bytes y Unicode con archivos
3.4 Conclusión
Capítulo 4. Fundamentos de NumPy: arrays y computación vectorizada
4.1 El ndarray de NumPy: un objeto array multidimensional
Creando ndarrays
Tipos de datos para ndarrays
Aritmética con arrays NumPy
Indexado y corte básicos
Indexado booleano
Indexado sofisticado
Transponer arrays e intercambiar ejes
4.2 Generación de números pseudoaleatoria
4.3 Funciones universales: funciones rápidas de array elemento a elemento
4.4 Programación orientada a arrays con arrays
Expresar lógica condicional como operaciones de arrays
Métodos matemáticos y estadísticos
Métodos para arrays booleanos
Ordenación
Unique y otra lógica de conjuntos
4.5 Entrada y salida de archivos con arrays
4.6 Álgebra lineal
4.7 Ejemplo: caminos aleatorios
Simulando muchos caminos aleatorios al mismo tiempo
4.8 Conclusión
Capítulo 5. Empezar a trabajar con pandas
5.1 Introducción a las estructuras de datos de pandas
Series
DataFrame
Objetos índice
5.2 Funcionalidad esencial
Reindexación
Eliminar entradas de un eje
Indexación, selección y filtrado
Aritmética y alineación de datos
Aplicación y asignación de funciones
Ordenación y asignación de rangos
Índices de ejes con etiquetas duplicadas
5.3 Resumir y calcular estadísticas descriptivas
Correlación y covarianza
Valores únicos, recuentos de valores y pertenencia
5.4 Conclusión
Capítulo 6. Carga de datos, almacenamiento y formatos de archivo
6.1 Lectura y escritura de datos en formato de texto
Leer archivos de texto por partes
Escribir datos en formato de texto
Trabajar con otros formatos delimitados
Datos JSON
XML y HTML: raspado web
6.2 Formatos de datos binarios
Leer archivos de Microsoft Excel
Utilizar el formato HDF5
6.3 Interactuar con API web
6.4 Interactuar con bases de datos
6.5 Conclusión
Capítulo 7. Limpieza y preparación de los datos
7.1 Gestión de los datos que faltan
Filtrado de datos que faltan
Rellenado de datos ausentes
7.2 Transformación de datos
Eliminación de duplicados
Transformación de datos mediante una función o una asignación
Reemplazar valores
Renombrar índices de eje
Discretización
Detección y filtrado de valores atípicos
Permutación y muestreo aleatorio
Calcular variables dummy o indicadoras
7.3 Tipos de datos de extensión
7.4 Manipulación de cadenas de texto
Métodos de objeto de cadena de texto internos de Python
Expresiones regulares
Funciones de cadena de texto en pandas
7.5 Datos categóricos
Antecedentes y motivación
Tipo de extensión Categorical en pandas
Cálculos con variables categóricas
Métodos categóricos
7.6 Conclusión
Capítulo 8. Disputa de datos: unión, combinación y remodelación
8.1 Indexación jerárquica
Reordenación y clasificación de niveles
Estadísticas de resumen por nivel
Indexación con las columnas de un dataframe
8.2 Combinación y fusión de conjuntos de datos
Uniones de dataframes al estilo de una base de datos
Fusión según el índice
Concatenación a lo largo de un eje
Combinar datos con superposición
8.3 Remodelación y transposición
Remodelación con indexación jerárquica
Transponer del formato «largo» al «ancho»
Transponer del formato «ancho» al «largo»
8.4 Conclusión
Capítulo 9. Gráficos y visualización
9.1 Una breve introducción a la API matplotlib
Figuras y subgráficos
Colores, marcadores y estilos de línea
Marcas, etiquetas y leyendas
Anotaciones y dibujos en un subgráfico
Almacenamiento de gráficos en archivo
Configuración de matplotlib
9.2 Realización de gráficos con pandas y seaborn
Gráficos de líneas
Gráficos de barras
Histogramas y gráficos de densidad
Gráficos de dispersión o de puntos
Cuadrícula de facetas y datos categóricos
9.3. Otras herramientas de visualización de Python
9.4 Conclusión
Capítulo 10. Agregación de datos y operaciones con grupos
10.1 Entender las operaciones de grupos
Iteración a través de grupos
Selección de una columna o subconjunto de columnas
Agrupamiento con diccionarios y series
Agrupamiento con funciones
Agrupamiento por niveles de índice
10.2 Agregación de datos
Aplicación de varias funciones a columnas
Devolución de datos agregados sin índices de fila
10.3 El método apply: un split-apply-combine general
Supresión de las claves de grupos
Análisis de cuantil y contenedor
Ejemplo: Rellenar valores faltantes con valores específicos de grupo
Ejemplo: Muestreo aleatorio y permutación
Ejemplo: media ponderada de grupo y correlación
Ejemplo: Regresión lineal por grupos
10.4 Transformaciones de grupos y funciones GroupBy «simplificadas»
10.5 Tablas dinámicas y tabulación cruzada
Tabulaciones cruzadas
10.6 Conclusión
Capítulo 11. Series temporales
11.1 Tipos de datos de fecha y hora y herramientas asociadas
Conversión entre cadena de texto y datetime
11.2 Fundamentos de las series temporales
Indexación, selección y creación de subconjuntos
Series temporales con índices duplicados
11.3 Rangos de fechas, frecuencias y desplazamiento
Generación de rangos de fechas
Frecuencias y desfases de fechas
Desplazamiento de los datos (adelantar y retrasar)
11.4 Manipulación de zonas horarias
Localización y conversión de zonas horarias
Operaciones con objetos de marca temporal conscientes de la zona horaria
Operaciones entre distintas zonas horarias
11.5 Periodos y aritmética de periodos
Conversión de frecuencias de periodos
Frecuencias de periodos trimestrales
Conversión de marcas temporales a periodos (y viceversa)
Creación de un objeto PeriodIndex a partir de arrays
11.6 Remuestreo y conversión de frecuencias
Submuestreo
Sobremuestreo e interpolación
Remuestreo con periodos
Remuestreo de tiempo agrupado
11.7 Funciones de ventana móvil
Funciones ponderadas exponencialmente
Funciones binarias de ventana móvil
Funciones de ventana móvil definidas por el usuario
11.8 Conclusión
Capítulo 12. Introducción a las librerías de creación de modelos de Python
12.1 Interconexión entre pandas y el código para la creación de modelos
12.2 Creación de descripciones de modelos con Patsy
Transformaciones de datos en fórmulas Patsy
Datos categóricos y Patsy
12.3 Introducción a statsmodels
Estimación de modelos lineales
Estimación de procesos de series temporales
12.4 Introducción a scikit-learn
12.5 Conclusión
Capítulo 13. Ejemplos de análisis de datos
13.1 Datos Bitly de 1.USA.gov
Recuento de zonas horarias en Python puro
Recuento de zonas horarias con pandas
13.2 Conjunto de datos MovieLens 1M
Medición del desacuerdo en las valoraciones
13.3 Nombres de bebés de Estados Unidos entre 1880 y 2010
Análisis de tendencias en los nombres
13.4 Base de datos de alimentos del USDA
13.5 Base de datos de la Comisión de Elecciones Federales de 2012
Estadísticas de donación por ocupación y empleador
Incluir donaciones en contenedores
Estadísticas de donación por estado
13.6 Conclusión
Apéndice A. NumPy avanzado
A.1 Análisis del objeto ndarray
Jerarquía del tipo de datos NumPy
A.2 Manipulación de arrays avanzada
Remodelado de arrays
Orden de C frente a FORTRAN
Concatenación y división de arrays
Repetición de elementos: tile y repeat
Equivalentes del indexado sofisticado: take y put
A.3 Difusión
Difusión a lo largo de otros ejes
Configuración de valores de array por difusión
A.4 Uso avanzado de ufuncs
Métodos de instancia ufunc
Escribir nuevas ufuncs en Python
A.5 Arrays estructurados y de registros
Tipos de datos anidados y campos multidimensionales
¿Por qué emplear arrays estructurados?
A.6 Más sobre la ordenación
Ordenaciones indirectas: argsort y lexsort
Algoritmos de ordenación alternativos
Ordenación parcial de arrays
Localización de elementos en un array ordenado con numpy.searchsorted
A.7 Escritura de funciones rápidas NumPy con Numba
Creación de objetos personalizados numpy.ufunc con Numba
A.8 Entrada y salida de arrays avanzadas
Archivos mapeados en memoria
HDF5 y otras opciones de almacenamiento de arrays
A.9 Consejos de rendimiento
La importancia de la memoria contigua
Apéndice B. Más sobre el sistema IPython
B.1 Atajos de teclado del terminal
B.2 Los comandos mágicos
El comando %run
Ejecutar código desde el portapapeles
B.3 Cómo utilizar el historial de comandos
Búsqueda y reutilización del historial de comandos
Variables de entrada y salida
B.4 Interacción con el sistema operativo
Comandos de shell y alias
Sistema de marcado a directorios
B.5 Herramientas de desarrollo de software
Depurador interactivo
Medir el tiempo de ejecución del código: %time y %timeit
Perfilado básico: %prun y %run –p
Perfilar una función línea a línea
B.6 Consejos para un desarrollo de código productivo con IPython
Recargar dependencias de módulo
Consejos de diseño de código
B.7 Funciones avanzadas de IPython
Perfiles y configuración
B.8 Conclusión
Créditos
La primera edición de este libro se publicó en 2012, en una época en la que las librerías de análisis de datos de fuente abierta de Python, especialmente pandas, eran nuevas y se estaban desarrollando a gran velocidad. Cuando llegó el momento de escribir la segunda edición en 2016 y 2017, necesité actualizar el libro no solo para Python 3.6 (la primera edición empleaba Python 2.7), sino también para los abundantes cambios producidos en pandas en los cinco años anteriores. Ahora, en 2022, hay menos cambios en el lenguaje Python (estamos ya en Python 3.10, con la versión 3.11 a punto de llegar a finales de 2022), pero pandas ha seguido evolucionando.
En esta tercera edición, mi objetivo es actualizar el contenido con las versiones actuales de Python, NumPy, pandas y otros proyectos, manteniéndome al mismo tiempo relativamente conservador en lo relativo a los proyectos Python más recientes surgidos en los últimos años. Como este libro se ha convertido en un recurso de gran importancia para muchos cursos universitarios y profesionales del sector, trataré de evitar temas que puedan quedar obsoletos en un año o dos. De esa forma, las copias en papel no resultarán demasiado difíciles de seguir en 2023, 2024 o más allá.
Una nueva característica de la tercera edición es la versión en línea de acceso abierto alojada en mi sitio web en https://wesmckinney.com/book, que sirve como recurso y resulta cómodo para poseedores de las ediciones impresa y digital. Trato de mantener ahí el contenido razonablemente actualizado, de modo que si dispone de una copia en papel y se encuentra con algo que no funciona correctamente, recomiendo revisar en mi web los últimos cambios en el contenido.
En este libro se utilizan las siguientes convenciones tipográficas:
•Cursiva: Es un tipo que se usa para diferenciar términos anglosajones o de uso poco común. También se usa para destacar algún concepto.
•Negrita: Le ayudará a localizar rápidamente elementos como las combinaciones de teclas.
•Fuenteespecial: Nombres de botones y opciones de programas. Por ejemplo, Aceptar para hacer referencia a un botón con ese título.
•Monoespacial: Utilizado para el código y dentro de los párrafos para hacer referencia a elementos como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, declaraciones y palabras clave.
•También encontrará a lo largo del libro recuadros con elementos destacados sobre el texto normal, para comunicarle de manera breve y rápida algún concepto relacionado con lo que está leyendo.
Este elemento representa un truco o una sugerencia.
Este elemento representa una nota.
Este elemento representa una advertencia o precaución.
Se puede descargar material adicional (ejemplos de código, ejercicios, etc.) de la página web de Anaya Multimedia (http://www.anayamultimedia.es). Vaya al botón SeleccionaComplemento de la ficha del libro, donde podrá descargar el contenido para utilizarlo directamente. También puede descargar el material de la página web original del libro (https://github.com/wesm/pydata-book), que está duplicado en Gitee (para quienes no puedan acceder a GitHub) en https://gitee.com/wesmckinn/pydata-book.
Este libro ha sido creado para ayudarle en su trabajo. En general, puede utilizar el código de ejemplo ofrecido en este libro en sus programas y en su documentación. No es necesario contactar con nosotros para solicitar permiso, a menos que esté reproduciendo una gran cantidad del código. Por ejemplo, escribir un programa que utilice varios fragmentos de código tomados de este libro no requiere permiso. Sin embargo, vender o distribuir ejemplos de los libros de O’Reilly sí lo requiere. Responder una pregunta citando este libro y empleando textualmente código de ejemplo incluido en él no requiere permiso. Pero incorporar una importante cantidad de código de ejemplo de este libro en la documentación de su producto sí lo requeriría.
