Capítulo 1. Preliminares

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

1.1 ¿De qué trata este libro?

Este libro se ocupa de las tuercas y los tornillos de la manipulación, el procesamiento, la limpieza y el crujido de datos en Python. Mi objetivo es ofrecer una guía de las partes del lenguaje de programación Python y su ecosistema de bibliotecas y herramientas orientadas a los datos que te equiparán para convertirte en un analista de datos eficaz. Aunque "análisis de datos" figura en el título del libro,la atención se centra específicamente en la programación, las bibliotecas y las herramientas de Python, y no en la metodología del análisis de datos. Esta es la programación Python que necesitas para el análisis de datos.

Algún tiempo después de que publicara originalmente este libro en 2012, la gente empezó a utilizar el término ciencia de datos como descripción general de todo, desde la simple estadística descriptiva hasta el análisis estadístico más avanzado y el aprendizaje automático. El ecosistema de código abierto de Python para realizar análisis de datos (o ciencia de datos) también se ha ampliado significativamente desde entonces. Ahora hay muchos otros libros que se centran específicamente en estas metodologías más avanzadas. Mi esperanza es que este libro te sirva como preparación adecuada para que puedas pasar a un recurso más específico de tu dominio.

Nota

Algunos podrían caracterizar gran parte del contenido del libro como "manipulación de datos" en contraposición a "análisis de datos". También utilizamos los términos wrangling o munging para referirnos a la manipulación de datos.

¿Qué tipo de datos?

Cuando digo "datos", ¿a qué me refiero exactamente? El principal objetivo deson los datos estructurados, un término deliberadamente vago que engloba muchas formas comunes de datos, como:

  • Datos tabulares o similares a una hoja de cálculo en los que cada columna puede ser de un tipo diferente (cadena, numérico, fecha u otro). Esto incluye la mayoría de los tipos de datos que suelen almacenarse en bases de datos relacionales o archivos de texto delimitados por tabuladores o comas.

  • Matrices multidimensionales.

  • Varias tablas de datos interrelacionadas por columnas clave (lo que serían claves primarias o foráneas para un usuario de SQL).

  • Series temporales espaciadas uniforme o irregularmente.

Ésta no es en absoluto una lista completa. Aunque no siempre resulte obvio, un gran porcentaje de conjuntos de datos pueden transformarse en una forma estructurada más adecuada para el análisis y el modelado. Si no es así, puede ser posible extraer características de un conjunto de datos a una forma estructurada. Por ejemplo, una colección de artículos de noticias podría transformarse en una tabla de frecuencias de palabras, que luego podría utilizarse para realizar un análisis de sentimientos.

La mayoría de los usuarios de programas de hojas de cálculo como Microsoft Excel, quizá la herramienta de análisis de datos más utilizada en el mundo, no serán ajenos a este tipo de datos.

1.2 ¿Por qué Python para el Análisis de Datos?

Para muchas personas, el lenguaje de programación Python tiene un gran atractivo. Desde su primera aparición enen 1991, Python se ha convertido en uno de los lenguajes de programación interpretados más populares, junto con Perl, Ruby y otros. Python y Ruby se han hecho especialmente populares desde 2005 aproximadamente para construir sitios web utilizando sus numerosos marcos web, como Rails (Ruby) y Django (Python). Estos lenguajes suelen denominarse lenguajes de scripting, ya que pueden utilizarse para escribir rápidamente pequeños programas, o scriptspara automatizar otras tareas. No me gusta el término "lenguajes de scripting", ya que conlleva la connotación de que no pueden utilizarse para crear software serio. Entre los lenguajes interpretados, por diversas razones históricas y culturales, Python ha desarrollado una gran y activa comunidad de informática científica y análisis de datos. En los últimos 20 años, Python ha pasado de ser un lenguaje de computación científica de vanguardia o "por tu cuenta y riesgo" a uno de los lenguajes más importantes para la ciencia de datos, el aprendizaje automático y el desarrollo de software en general en el mundo académico y la industria.

Para el análisis de datos y la computación interactiva y la visualización de datos, Python suscitará inevitablemente comparaciones con otros lenguajes y herramientas de programación comerciales y de código abierto de amplio uso, como R, MATLAB, SAS, Stata y otros. En los últimos años, las bibliotecas de código abierto mejoradas de Python (como pandas y scikit-learn) lo han convertido en una opción popular para las tareas de análisis de datos. Combinado con la fuerza general de Python para la ingeniería de software de propósito general, es una excelente opción como lenguaje principal para crear aplicaciones de datos.

Python como pegamento

Parte del éxito de Python en la informática científica es la facilidad de integración del código C, C++ y FORTRAN. La mayoría de los entornos informáticos modernos comparten un conjunto similar de bibliotecas FORTRAN y C heredadas para realizar álgebra lineal, optimización, integración, transformadas rápidas de Fourier y otros algoritmos similares. Lo mismo ha ocurrido en muchas empresas y laboratorios nacionales que han utilizado Python para unir décadas de software heredado.

Muchos programas constan de pequeñas porciones de código en las que se invierte la mayor parte del tiempo, con grandes cantidades de "código cola" que no se ejecuta a menudo. En muchos casos, el tiempo de ejecución del código cola es insignificante; el esfuerzo se invierte de forma más fructífera en optimizar los cuellos de botella computacionales, a veces trasladando el código a un lenguaje de nivel inferior, como C.

Resolver el problema de las "dos lenguas

En muchas organizaciones, es habitual investigar, crear prototipos y probar nuevas ideas utilizandoun lenguaje informático más especializado como SAS o R y, más tarde, portar esas ideas para que formen parte de un sistema de producción más amplio escrito, por ejemplo, en Java, C# o C++. Lo que la gente está descubriendo cada vez más es que Python es un lenguaje adecuado no sólo para hacer investigación y prototipos, sino también para construir los sistemas de producción. ¿Por qué mantener dos entornos de desarrollo cuando basta con uno? Creo que cada vez más empresas seguirán este camino, ya que a menudo hay importantes ventajas organizativas en que tanto los investigadores como los ingenieros de software utilicen el mismo conjunto de herramientas de programación.

En la última década han aparecido algunos enfoques nuevos para resolver el problema de los "dos lenguajes" de, como el lenguaje de programación Julia. Sacar el máximo partido de Python en muchos casos requerirá programar en un lenguaje de bajo nivel como C o C++ y crear enlaces de Python a ese código. Dicho esto, la tecnología del compilador "justo a tiempo" (JIT) proporcionada por bibliotecas como Numba han proporcionado una forma de conseguir un rendimiento excelente en muchos algoritmos computacionales sin tener que salir del entorno de programación de Python.

¿Por qué no Python?

Aunque Python es un entorno excelente para construir muchos tipos de aplicaciones analíticasy sistemas de propósito general, hay una serie de usos para los que Python puede ser menos adecuado.

Como Python es un lenguaje de programación interpretado, en general la mayoría del código Python dese ejecutará sustancialmente más despacio que el código escrito en un lenguaje compilado como Java o C++. Como el tiempo del programador suele ser más valioso que el tiempo de la CPU, muchos se conforman con esta compensación. Sin embargo, en una aplicación con una latencia muy baja o con requisitos exigentes de utilización de recursos (por ejemplo, un sistema de negociación de alta frecuencia), el tiempo dedicado a programar en un lenguaje de menor nivel (pero también de menor productividad) como C++ para conseguir el máximo rendimiento posible podría ser tiempo bien empleado.

Python puede ser un lenguaje difícil para construir aplicaciones multihilo concurrentes altamente, en particular aplicaciones con muchos hilos ligados a la CPU. La razón es que tiene lo que se conoce en como bloqueo global del intérprete (GIL), un mecanismo que impide que el intérprete ejecute más de una instrucción Python a la vez. Las razones técnicas de por qué existe el GIL están fuera del alcance de este libro. Si bien es cierto que en muchas aplicaciones de procesamiento de grandes datos puede ser necesario un clúster de ordenadores para procesar un conjunto de datos en un tiempo razonable, sigue habiendo situaciones en las que es deseable un sistema multihilo de un solo proceso.

Esto no quiere decir que Python no pueda ejecutar código paralelo realmente multihilo. Las extensiones C de Python que utilizan multihilo nativo (en C o C++) pueden ejecutar código en paralelo sin verse afectadas por el GIL, siempre que no necesiten interactuar regularmente con objetos Python.

1.3 Bibliotecas esenciales de Python

Para quienes estén menos familiarizados con el ecosistema de datos de Python y las bibliotecas que se utilizan a lo largo del libro, daré una breve visión general de algunas de ellas.

NumPy

NumPy, abreviatura de Numerical Python, es desde hace tiempo la piedra angular de la informática numérica en Python. Proporciona las estructuras de datos, los algoritmos y las bibliotecas necesarias para la mayoría de las aplicaciones científicas que utilizan datos numéricos en Python. NumPy contiene, entre otras cosas

  • Un objeto de matriz multidimensional rápido y eficaz ndarray

  • Funciones para realizar cálculos por elementos con matrices u operaciones matemáticas entre matrices

  • Herramientas para leer y escribir en disco conjuntos de datos basados en matrices

  • Operaciones de álgebra lineal, transformada de Fourier y generación de números aleatorios

  • Una API C madura para permitir que las extensiones de Python y el código nativo C o C++ accedan a las estructuras de datos y a las facilidades computacionales de NumPy.

Más allá de las capacidades de procesamiento rápido de matrices que NumPy añade a Python, uno de sus principales usos en el análisis de datos es como contenedor de datos que se pasan entre algoritmos y bibliotecas. Para los datos numéricos, las matrices de NumPy son más eficaces para almacenar y manipular datos que las demás estructuras de datos integradas en Python. Además, las bibliotecas escritas en un lenguaje de bajo nivel, como C o FORTRAN, pueden operar con los datos almacenados en una matriz NumPy sin copiar los datos en otra representación de memoria. Por ello, muchas herramientas de cálculo numérico para Python asumen las matrices NumPy como estructura de datos principal o bien buscan la interoperabilidad con NumPy.

pandas

pandas proporciona estructuras de datos de alto nivel y funciones diseñadas para que trabajar con datos estructurados o tabulares sea intuitivo y flexible. Desde su aparición en 2010, ha contribuido a que Python sea un entorno de análisis de datos potente y productivo. Los principales objetos de pandas que se utilizarán en este libro son el DataFrame, una estructura de datos tabular, orientada a columnas, con etiquetas tanto en las filas como en las columnas, y la Serie, un objeto array unidimensional etiquetado.

pandas combina las ideas de cálculo de matrices de NumPy con las capacidades de manipulación de datos de las hojas de cálculo y las bases de datos relacionales (como SQL). Proporciona una práctica funcionalidad de indexación que te permite remodelar, trocear, realizar agregaciones y seleccionar subconjuntos de datos. Puesto que la manipulación, preparación y limpieza de datos son habilidades tan importantes en el análisis de datos, pandas es uno de los temas principales de este libro.

Como antecedente, empecé a crear pandas a principios de 2008, cuando trabajaba en AQR Capital Management, una empresa de gestión de inversiones cuantitativas. En aquel momento, tenía una serie de requisitos concretos que ninguna herramienta a mi disposición satisfacía bien:

  • Estructuras de datos con ejes etiquetados que admiten la alineación automática o explícita de los datos, lo que evita errores comunes derivados de datos mal alineados y de trabajar con datos indexados de forma diferente procedentes de fuentes distintas

  • Funcionalidad integrada de series temporales

  • Las mismas estructuras de datos manejan tanto datos de series temporales como datos de series no temporales

  • Operaciones aritméticas y reducciones que conservan los metadatos

  • Tratamiento flexible de los datos que faltan

  • Fusión y otras operaciones relacionales que se encuentran en bases de datos populares (basadas en SQL, por ejemplo)

Quería poder hacer todas estas cosas en un solo lugar, preferiblemente en un lenguaje bien adaptado al desarrollo de software de propósito general. Python era un buen lenguaje candidato para ello, pero en aquel momento no existía un conjunto integrado de estructuras de datos y herramientas que ofrecieran esta funcionalidad. Como resultado de haber sido construido inicialmente para resolver problemas financieros y de análisis empresarial, pandas presenta una funcionalidad de series temporales especialmente profunda y herramientas muy adecuadas para trabajar con datos indexados en el tiempo generados por procesos empresariales.

Pasé gran parte de 2011 y 2012 ampliando las capacidades de pandas con algunos de mis antiguos colegas de AQR, Adam Kleiny Chang She. En 2013, dejé de participar en el desarrollo cotidiano del proyecto, y desde entonces pandas se ha convertido en un proyecto totalmente propiedad de la comunidad y mantenido por ella, con más de dos mil colaboradores únicos en todo el mundo.

Para los usuarios del lenguaje R de cálculo estadístico, el nombre de DataFrameles resultará familiar, ya que el objeto recibió su nombre del objeto similar R data.frame. A diferencia de Python, los marcos de datos están integrados en el lenguaje de programación R y en su biblioteca estándar. Como resultado, muchas de las características que se encuentran en pandas suelen formar parte de la implementación central de R o son proporcionadas por paquetes adicionales.

El propio nombre de pandas deriva de datos de panel, un término econométrico para conjuntos de datos estructurados multidimensionales, y un juego de palabras con la expresión análisis de datos de Python.

matplotlib

matplotlib es la biblioteca de Python más popular para producir gráficos y otras visualizaciones de datos bidimensionales. Fue creada originalmente por John D. Hunter y ahora la mantiene un gran equipo de desarrolladores. Está diseñada para crear gráficos adecuados para su publicación. Aunque hay otras bibliotecas de visualización a disposición de los programadores de Python, matplotlib sigue siendo muy utilizada y se integra razonablemente bien con el resto del ecosistema. Creo que es una elección segura como herramienta de visualización por defecto.

IPython y Jupyter

El proyecto IPython comenzó en 2001 como proyecto paralelo de Fernando Pérez para hacer un mejor intérprete interactivo de Python. En los 20 años siguientes se ha convertido en una de las herramientas más importantes de la moderna pila de datos de Python. Aunque no proporciona ninguna herramienta computacional o de análisis de datos por sí mismo, IPython está diseñado tanto para la informática interactiva como para el trabajo de desarrollo de software. Fomenta un flujo de trabajo de ejecución-exploración en lugar del típico flujo de trabajo de edición-compilación-ejecuciónde muchos otros lenguajes de programación. También proporciona acceso integrado al shell y al sistema de archivos de tu sistema operativo; esto reduce la necesidad de cambiar entre una ventana de terminal y una sesión de Python en muchos casos. Dado que gran parte de la codificación del análisis de datos implica exploración, ensayo y error, e iteración, IPython puede ayudarte a hacer el trabajo más rápidamente.

En 2014, Fernando y el equipo de IPython anunciaron el proyecto Jupyter, una iniciativa más amplia para diseñar herramientas informáticas interactivas agnósticas de lenguajes. El cuaderno web IPython se convirtió en el cuaderno Jupyter, con soporte ahora para más de 40 lenguajes de programación. El sistema IPython puede utilizarse ahora como un núcleo (un modo de lenguaje de programación) para utilizar Python con Jupyter.

El propio IPython se ha convertido en un componente del proyecto de código abierto Jupyter, mucho más amplio, que proporciona un entorno productivo para la informática interactiva y exploratoria. Su "modo" más antiguo y sencillo es como shell Python mejorado, diseñado para acelerar la escritura, prueba y depuración de código Python. También puedes utilizar el sistema IPython a través del cuaderno Jupyter.

El sistema de cuadernos Jupyter también te permite crear contenido en Markdown y HTML, proporcionándote un medio para crear documentos ricos en código y texto.

Personalmente utilizo IPython y Jupyter con regularidad en mi trabajo con Python, ya sea ejecutando, depurando o probando código.

En los materiales que acompañan al libro en GitHub, encontrarás cuadernos Jupyter que contienen todos los ejemplos de código de cada capítulo. Si no puedes acceder a GitHub desde donde estás, puedes probar la réplica en Gitee.

SciPy

SciPy es una colección de paquetes que abordan una serie de problemas fundamentales de la informática científica. Éstas son algunas de las herramientas que contiene en sus distintos módulos:

scipy.integrate

Rutinas de integración numérica y solucionadores de ecuaciones diferenciales

scipy.linalg

Rutinas de álgebra lineal y descomposiciones de matrices que van más allá de las proporcionadas en numpy.linalg

scipy.optimize

Optimizadores de funciones (minimizadores) y algoritmos de búsqueda de raíces

scipy.signal

Herramientas de procesamiento de señales

scipy.sparse

Matrices dispersas y solucionadores de sistemas lineales dispersos

scipy.special

Envoltorio alrededor de SPECFUN, una biblioteca FORTRAN que implementa muchas funciones matemáticas comunes, como la función gamma

scipy.stats

Distribuciones de probabilidad estándar continuas y discretas (funciones de densidad, muestreadores, funciones de distribución continua), diversas pruebas estadísticas y más estadística descriptiva

Juntos, NumPy y SciPy forman una base computacional razonablemente completa y madura para muchas aplicaciones informáticas científicas tradicionales.

scikit-learn

Desde el inicio del proyecto en 2007, scikit-learn se ha convertido en el principal conjunto de herramientas de aprendizaje automático de uso general para programadores de Python. En el momento de escribir esto, más de dos mil personas diferentes han contribuido con código al proyecto. Incluye submódulos para modelos como:

  • Clasificación: SVM, vecinos más próximos, bosque aleatorio, regresión logística, etc.

  • Regresión: Lasso, regresión de cresta, etc.

  • Clustering: k-means, clustering espectral, etc.

  • Reducción de la dimensionalidad: PCA, selección de rasgos, factorización matricial, etc.

  • Selección de modelos: Búsqueda en cuadrícula, validación cruzada, métricas

  • Preprocesamiento: Extracción de características, normalización

Junto con pandas, statsmodels e IPython, scikit-learn ha sido fundamental para que Python sea un lenguaje de programación de ciencia de datos productivo. Aunque no podré incluir una guía completa de scikit-learn en este libro, sí haré una breve introducción a algunos de sus modelos y a cómo utilizarlos con las demás herramientas presentadas en el libro.

modelos estadísticos

statsmodels es un paquete de análisis estadístico que fue sembrado por el trabajo deJonathan Taylor, profesor de estadística de la Universidad de Stanford, que implementó una serie de modelos de análisis de regresiónpopulares en el lenguaje de programación R. Skipper Seabold y Josef Perktold crearon formalmente el nuevo proyecto statsmodels en 2010 y desde entonces han hecho crecer el proyecto hasta alcanzar una masa crítica de usuarios y colaboradores comprometidos. Nathaniel Smith desarrolló el proyecto Patsy, que proporciona un marco de especificación de modelos de fórmulas o para statsmodels inspirado en el sistema de fórmulas de R.

En comparación con scikit-learn, statsmodels contiene algoritmos para estadística clásica (principalmente frecuentista) y econometría. Esto incluye submódulos como:

  • Modelos de regresión: regresión lineal, modelos lineales generalizados, modelos lineales robustos, modelos lineales de efectos mixtos, etc.

  • Análisis de la varianza (ANOVA)

  • Análisis de series temporales: AR, ARMA, ARIMA, VAR y otros modelos

  • Métodos no paramétricos: Estimación de la densidad del núcleo, regresión del núcleo

  • Visualización de los resultados del modelo estadístico

statsmodels se centra más en la inferencia estadística, proporcionando estimaciones de incertidumbre y valores p para los parámetros. scikit-learn, en cambio, se centra más en la predicción.

Al igual que con scikit-learn, haré una breve introducción a statsmodels y cómo utilizarlo con NumPy y pandas.

Otros paquetes

En 2022, hay muchas otras bibliotecas de Python que podrían tratarse en un libro sobre ciencia de datos. Esto incluye algunos proyectos más recientes como TensorFlow o PyTorch, que se han hecho populares para el aprendizaje automático o el trabajo de inteligencia artificial. Ahora que existen otros libros que se centran más específicamente en esos proyectos, yo recomendaría utilizar este libro para construir una base en el manejo de datos de propósito general en Python. Entonces, estarás bien preparado para pasar a un recurso más avanzado que puede suponer un cierto nivel de experiencia.

1.4 Instalación y configuración

Dado que cada persona utiliza Python para aplicaciones diferentes, no existe una única soluciónpara configurar Python y obtener los paquetes complementarios necesarios. Muchos lectores no dispondrán de un entorno completo de desarrollo Python adecuado para seguir este libro, así que aquí daré instrucciones detalladas para configurarlo en cada sistema operativo . Utilizaré Miniconda, una instalación mínima del gestor de paquetes conda, junto con conda-forge, una distribución de software mantenida por la comunidad y basada en conda. Este libroutiliza Python 3.10 en todo momento, pero si lo lees en el futuro, te invito a instalar una versión más reciente de Python.

Si por alguna razón estas instrucciones se quedan obsoletaspara cuando estés leyendo esto, puedes consultar el libro en mi sitio web, que me esforzaré por mantener actualizado con las últimas instrucciones de instalación.

Miniconda en Windows

Para empezar en Windows, descarga el instalador de Miniconda para la última versión de Python disponible (actualmente la 3.9) desdehttps://conda.io. Te recomiendo que sigas las instrucciones de instalación para Windows disponibles en el sitio web de conda, que pueden haber cambiado entre el momento en que se publicó este libro y cuando estés leyendo esto. La mayoría de la gente querrá la versión de 64 bits, pero si no funciona en tu máquina Windows, puedes instalar en su lugar la versión de 32 bits.

Cuando se te pregunte si quieres instalarlo sólo para ti o para todos los usuarios de tu sistema, elige la opción que más te convenga. Instalar sólo para ti será suficiente para seguir el libro. También te preguntarási quieres añadir Miniconda a la variable de entorno PATH del sistema. Si seleccionas esto (yo suelo hacerlo), entonces esta instalación de Miniconda puede anular otras versiones de Python que tengas instaladas. Si no lo haces, entonces tendrás que utilizar el acceso directo del menú Inicio de Windows que está instalado para poder utilizar esta Miniconda. Esta entrada del menú Inicio puede llamarse "Anaconda3 (64 bits)".

Asumiré que no has añadido Miniconda al PATH de tu sistema. Para comprobar que todo está configurado correctamente, abre la entrada "Anaconda Prompt (Miniconda3)" en "Anaconda3 (64 bits)" en el menú Inicio de. A continuación, intenta iniciar el intérprete de Python escribiendopython. Deberías ver un mensaje como éste

(base) C:\Users\Wes>python
Python 3.9 [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Para salir del intérprete de comandos Python, escribe exit() y pulsa Intro.

GNU/Linux

Los detalles de Linux variarán un poco dependiendo de tu tipo de distribución de Linux , pero aquí doy detalles para distribuciones como Debian, Ubuntu, CentOS y Fedora. La configuración es similar a la de macOS, con la excepción de cómo se instala Miniconda. La mayoría de los lectores querrán descargar el archivo instalador de 64 bits por defecto, que es para arquitectura x86 (pero es posible que en el futuro más usuarios tengan máquinas Linux basadas en aarch64). El instalador es un script de shell que debe ejecutarse en el terminal. Tendrás entonces un archivo llamado algo parecido aMiniconda3-latest-Linux-x86_64.sh. Para instalarlo, ejecuta este script con bash:

$ bash Miniconda3-latest-Linux-x86_64.sh
Nota

Algunas distribuciones de Linux tienen todos los paquetes necesarios de Python (aunque versiones obsoletas, en algunos casos) en sus gestores de paquetes y se pueden instalar utilizando una herramienta como apt. La configuración descrita aquí utiliza Miniconda, ya que es fácilmente reproducible en todas las distribuciones y más sencillo actualizar los paquetes a sus últimas versiones.

Podrás elegir dónde colocar los archivos de Miniconda. Yo recomiendo instalar los archivos en la ubicación por defecto de tu directorio personal; por ejemplo, /home/$USUARIO/miniconda (con tu nombre de usuario, naturalmente).

El instalador te preguntará si deseas modificar tus scripts de shell para activar automáticamente Miniconda. Te recomiendo que lo hagas (selecciona "sí") por comodidad.

Tras completar la instalación, inicia un nuevo proceso de terminal y comprueba que estás recogiendo la nueva instalación de Miniconda:

(base) $ python
Python 3.9 | (main) [GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Para salir del intérprete de comandos Python, escribe exit() y pulsa Intro o pulsa Ctrl-D.

Miniconda en macOS

Descarga el instalador de macOS Miniconda, que debería llamarse algo así como Miniconda3-latest-MacOSX-arm64 .sh para los ordenadores macOS basados en Apple Silicon lanzados a partir de 2020, o Miniconda3-latest-MacOSX-x86_64.sh para los Mac basados en Intel lanzados antes de 2020. Abre la aplicación Terminal en macOS, e instala ejecutando el instalador (probablemente en tu directorio Downloads ) con bash:

$ bash $HOME/Downloads/Miniconda3-latest-MacOSX-arm64.sh

Cuando se ejecuta el instalador, por defecto configura automáticamente Miniconda en tu entorno shell por defecto en tu perfil shell por defecto. Éste se encuentra probablemente en/Usuarios/$USUARIO/.zshrc. Te recomiendo que dejes que lo haga; si no quieres permitir que el instalador modifique tu entorno shell por defecto, tendrás que consultar la documentación de Miniconda para poder proceder.

Para comprobar que todo funciona, prueba a ejecutar Python en el intérprete de comandos del sistema (abre la aplicación Terminal para obtener un símbolo del sistema):

$ python
Python 3.9 (main) [Clang 12.0.1 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Para salir del intérprete de comandos, pulsa Ctrl-D o escribeexit() y pulsa Intro.

Instalar los paquetes necesarios

Ahora que hemos configurado Miniconda en tu sistema, es el momento de instalar los principales paquetes que utilizaremos en este libro. El primer paso es configurar conda-forge como tu canal de paquetes por defecto ejecutando los siguientes comandos en un intérprete de comandos:

(base) $ conda config --add channels conda-forge
(base) $ conda config --set channel_priority strict

Ahora, crearemos un nuevo "entorno" conda con el comandoconda create utilizando Python 3.10:

(base) $ conda create -y -n pydata-book python=3.10

Una vez finalizada la instalación, activa el entorno conconda activate :

(base) $ conda activate pydata-book
(pydata-book) $
Nota

Es necesario utilizar conda activate para activar tu entorno cada vez que abras un nuevo terminal. Puedes ver información sobre el entorno conda activo en cualquier momento desde el terminal ejecutando conda info.

Ahora, instalaremos los paquetes esenciales utilizados a lo largo del libro(junto con sus dependencias) con conda install:

(pydata-book) $ conda install -y pandas jupyter matplotlib

También utilizaremos otros paquetes, pero éstos se pueden instalar más tarde, cuando se necesiten. Hay dos formas de instalar paquetes: con conda install y con pip install. Siempre debe preferirse conda install cuando se utiliza Miniconda, pero algunos paquetes no están disponibles a través de conda, así que si conda install $package_namefalla, prueba con pip install $package_name.

Nota

Si quieres instalar todos los paquetes utilizados en el resto del libro, puedes hacerlo ahora ejecutando:

conda install lxml beautifulsoup4 html5lib openpyxl \
               requests sqlalchemy seaborn scipy statsmodels \
               patsy scikit-learn pyarrow pytables numba

En Windows, sustituye la continuación de línea \ utilizada en Linux y macOS por un quilate ^.

Puedes actualizar los paquetes utilizando el comando conda update :

conda update package_name

pip también admite actualizaciones utilizando la bandera --upgrade:

pip install --upgrade package_name

Tendrás varias oportunidades de probar estos comandos a lo largo del libro.

Precaución

Aunque puedes utilizar tanto conda como pip para instalar paquetes de, debes evitar actualizar paquetes instalados originalmente con conda utilizando pip (y viceversa), ya que hacerlo puede provocar problemas de entorno. Te recomiendo que te ciñas a conda si puedes y que recurras a pip sólo para paquetes que no estén disponibles con conda install.

Entornos de desarrollo integrados y editores de texto

Cuando me preguntan por mi entorno de desarrollo estándar, casi siempre digo "IPython más un editor de texto". Normalmente escribo un programa y pruebo y depuro iterativamente cada una de sus partes en cuadernos IPython o Jupyter. También es útil poder jugar con los datos de forma interactiva y verificar visualmente que un determinado conjunto de manipulaciones de datos está haciendo lo correcto. Bibliotecas como pandas y NumPy están diseñadas para que su uso en el shell sea productivo.

Sin embargo, a la hora de crear software, algunos usuarios pueden preferir utilizar un entorno de desarrollo integrado (IDE) más rico en funciones, en lugar de un editor como Emacs o Vim, que proporcionan un entorno más minimalista al sacarlo de la caja. Aquí tienes algunos que puedes explorar:

  • PyDev (gratuito), un IDE construido sobre la plataforma Eclipse

  • PyCharm de JetBrains (por suscripción para usuarios comerciales de, gratuito para desarrolladores de código abierto)

  • Herramientas Python para Visual Studio (para usuarios de Windows)

  • Spyder (gratuito), un IDE actualmente incluido con Anaconda

  • Komodo IDE (comercial)

Debido a la popularidad de Python, la mayoría de los editores de texto, como VS Code y Sublime Text 2, tienen un excelente soporte para Python.

1.5 Comunidad y Conferencias

Aparte de una búsqueda en Internet, las diversas listas de correo de Python científicas y relacionadas con los datos son generalmente útiles y receptivas a las preguntas. Algunas a las que puedes echar un vistazo son

  • pydata: Una lista de Google Group para preguntas relacionadas con Python para el análisis de datos y pandas

  • pystatsmodels: Para preguntas relacionadas con statsmodels o pandas

  • Lista de correo para scikit-learn (scikit-learn@python.org) y aprendizaje automático enPython, en general

  • numpy-discusión: Para preguntas relacionadas con NumPy

  • scipy-usuario: Para preguntas generales sobre SciPy o Python científico

No he publicado deliberadamente las direcciones URL por si cambian. Se pueden localizar fácilmente mediante una búsqueda en Internet.

Cada año se celebran muchas conferencias en todo el mundo para programadores de Python. Si quieres ponerte en contacto con otros programadores de Python que compartan tus intereses, te animo a que estudies la posibilidad de asistir a una de ellas, si es posible. Muchas conferencias disponen de ayudas económicas para quienes no pueden permitirse la entrada o el viaje a la conferencia. Aquí tienes algunas a tener en cuenta:

  • PyCon y EuroPython: Las dos principales conferencias generales sobre Python en Norteamérica y Europa, respectivamente

  • SciPy y EuroSciPy: Conferencias orientadas a la informática científica en Norteamérica y Europa, respectivamente

  • PyData: Una serie mundial de conferencias regionales dirigidas a casos de uso de la ciencia y el análisis de datos

  • Conferencias PyCon internacionales y regionales (consulta https://pycon.org para obtener una lista completa)

Get Python para el Análisis de Datos, 3ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.