Taller de Data Analysis - Academia Desafío Latam PDF
Document Details
Uploaded by NicestCharoite8167
Academia Desafío Latam
Tags
Summary
This document provides an introduction to data analysis using Python, specifically Jupyter Notebooks. It covers basic Python syntax, variable types, and lists. The document also introduces data analysis concepts, datasets, methods, and libraries used in the field.
Full Transcript
# Taller de Data Analysis - Academia Desafío Latam ## 1.1 Bienvenid@s Python es un lenguaje de programación muy flexible y potente. Fue creado por Guido Van Rossum en 1991, con su primera versión 1.0 lanzada en 1994. **Consejos de buenas prácticas:** - Siempre nombrar de qué se trata el notebook...
# Taller de Data Analysis - Academia Desafío Latam ## 1.1 Bienvenid@s Python es un lenguaje de programación muy flexible y potente. Fue creado por Guido Van Rossum en 1991, con su primera versión 1.0 lanzada en 1994. **Consejos de buenas prácticas:** - Siempre nombrar de qué se trata el notebook. Ejemplo: Taller de Data Analysis - Identificar autor/a, idealmente con fecha - Comentar todo, TODO - Mantener el código ordenado - Trabajar con copia de los datos ## 1.1.1 ¿Para qué sirve Python? Es un lenguaje de programación multipropósito. Por ejemplo se usa para: - Desarrollo Web - Desarrollo de Internet de las Cosas - Ciencia de Datos y Aprendizaje de Máquinas ### ¿Qué es un Jupyter Notebook? Jupyter Notebook (anteriormente IPython Notebooks) es una aplicación web de código abierto, la cual te permite crear y compartir documentos que contienen código, ecuaciones, visualizaciones y texto enriquecido. Sus usos incluyen limpieza y transformación de datos, simulaciones numéricas, modelamiento estadístico, visualización de datos, aprendizaje automático y mucho más. Un documento de Jupyter Notebook es un documento JSON, que sigue un esquema versionado y que contiene una lista ordenada de celdas de entrada/salida, terminado con la extensión “.ipynb". El término "notebook" puede hacer referencia coloquialmente a muchas entidades diferentes, principalmente la aplicación web Jupyter, el servidor web Jupyter Python o el formato de documento Jupyter según el contexto. Para obtener más información sobre el proyecto Jupyter, visita jupyter.org. ¿Qué es un Google Colab? Son los Jupyter notebooks de Google. ## 1.2 Comenzaremos por lo elemental - Sintáxis de python, variables y librerías ### Tipos de datos - **Variable entero -> int** `a = 4` - **Variable flotante -> float** `b= 5/2` - **Variable texto -> string** `c="Hola"` `d= "Mundo"` ### Operadores matemáticos básicos En Python existen los operadores matemáticos básicos: - Suma (+) - Resta (-) - Multiplicación (*) - División (/) **Tip**: presiona Ctrl + Enter después de escribir tu código (cmd + Enter en Mac). ### Listas **Lista súper:** `lista_super = ["Pan", "manzanas", "leche"]` - **Imprimir la lista:** `print(lista_super)` - **Tipo de dato de la lista:** `type(lista_super)` **Método append()** El método append() permite agregar elementos a una lista: `lista_super.append("bebida")` - Imprimir la lista modificada: `lista_super` **Otros métodos de listas:** - **Llevar a minúscula o mayúscula un string:** `mi_texto = "ME GUSTA PYTHON"` `mi_texto.lower()` **Otros tipos de variables:** - **Booleanos:** Corresponden a un tipo de dato que sólo puede tomar dos posibles valores: True (verdadero) y False (falso). En Python, cualquier variable puede considerarse del tipo booleana. - **Range:** El tipo de variable range es una lista inmutable de números enteros en sucesión aritmética. - **Diccionarios:** Es una estructura de datos y un tipo de dato en Python. Los diccionarios nos permiten almacenar cualquier tipo de valor como enteros, cadenas de texto, listas e incluso otras funciones. **Diccionario de datos**: `diccionario_datos = {(a,b,c), (1,2,3), "Hola"}` ## Librerias Los lenguajes de programación cuentan con una serie de herramientas básicas incorporadas, como las que acabamos de ver. Sin embargo, existen expansiones de funcionalidades que han sido desarrolladas previamente de modo de ahorrarnos trabajo y hacer todo más simple. Estas "expansiones" se llamas bibliotecas o librerías - **Pandas**: la librería básica para la manipulación y análisis de datos `import pandas as pd` - **Numpy**: la biblioteca para crear vectores y matrices, además de un conjunto grande de funciones matemáticas `import numpy as np` - **Seaborn**: una librería que usamos para graficar `import seaborn as sns` - **Statsmodels**: la biblioteca para realizar modelos `import statsmodels.formula.api as smf` ## 2.2 Ahora, ¡manos a la obra! Trabajaremos con el dataset 'nations', el cual contiene información sobre diferentes atributos de desarrollo humano en 194 países, recolectados por las Naciones Unidas. - Contiene información a nivel mundial sobre demografia: - `country`: País. - `region`: Continente del país. - `gdp`: Producto Interno Bruto per cápita, precios 2005. - `school`: Promedio años de escolaridad. - `adfert`: Fertilidad adolescente (Nacimientos 1:1000 en mujeres entre 15 y 19). - `chldmort`: Probabilidad de muerte antes de los 5 años por cada 1000. - `life`: Esperanza de vida al nacer. - `pop`: Población total. - `urban`: Porcentaje de población urbana. - `femlab`: Tasa entre hombres y mujeres en el mercado laboral. - `literacy`: Tasa de alfabetismo. - `co2`: Toneladas de Co2 emitidas per cápita. - `gini`: Coeficiente de desigualdad del ingreso. - `gdp_pesos2021`: GDP en pesos 2021 (calculado para este taller) - **Cargar el dataset**: `df_nations = pd.read_csv("https://raw.githubusercontent.com/DireccionAcademicaADL/Nations-DB/main/nations.csv", encoding="ISO-8859-1")` - **Observar las primeras filas del dataset**: `df_nations.head()` - **Eliminar la columna 'Unnamed: 0'**: `df_nations.drop(columns=["Unnamed: 0"], inplace = True)` - **Observar las primeras filas del dataset sin la columna 'Unnamed: 0'**: `df_nations.head()` - **Mostrar las columnas del dataset**: `df_nations.columns` - **Observar la columna 'region'**: `df_nations['region']` - **Crear una nueva variable 'gdp_pesos2021'**: `df_nations['gdp_pesos2021'] = df_nations["gdp"]*850` - **Observar las primeras filas del dataset con la nueva columna**: `df_nations.head()` - **Mostrar estadísticas básicas del dataset**: `df_nations.describe()` - **Mostrar estadísticas básicas para la variable 'gini'**: `df_nations["gini"].describe()` - **Mostrar la media de la variable 'gini'**: `df_nations["gini"].mean()` - **Mostrar la cantidad de valores no nulos para la variable 'gini'**: `df_nations["gini"].count()` - **Mostrar la media de la variable 'gdp'**: `df_nations["gdp"].mean()` - **Mostrar el mínimo valor para la variable 'literacy'**: `df_nations["literacy"].min()` ### Pregunta 2 ¿Cuántos datos tenemos en cada región? - **Mostrar las frecuencias de la variable 'region'**: `df_nations["region"].value_counts()` - **Agrupar por la variable 'region' y contar la variable 'country'**: `df_nations.groupby(["region"])[("country")].count()` ### Pregunta 3 ¿Cuántos países tienen índices de CO2 mayores que el promedio? - **Crear una nueva columna 'co2_recodificada'**: La nueva columna será '1' si el valor de `co2` es mayor que la media de `co2` y '0' si es menor. `df_nations["co2_recodificada"] = np.where (df_nations["co2"]> df_nations["co2"].mean(), 1, 0)` - **Mostrar las frecuencias de la variable 'co2_recodificada'**: `df_nations['co2_recodificada'].value_counts()` - **Mostrar la cantidad de países con índice de co2 mayor a la media**: `df_nations['co2_recodificada'].value_counts() [1]` ### Pregunta 4 ¿Qué se puede decir del alfabetismo en África o Europa? - **Filtrar por la variable 'region' y obtener los países de África**: `df_nations[df_nations["region"]=="Africa"]` - **Mostrar la media de la variable 'literacy' para los países de África**: `df_africa["literacy"].mean()` - **Filtrar por la variable 'region' y obtener los países de Europa**: **Error** `df_europa = ` - **Mostrar la media de la variable 'literacy' para los países de Europa**: `df_europa["literacy"].mean()` ## 2.3 A continuación, vamos con la sección de visualización de datos La visualización gráfica de datos constituye una disciplina en si misma. Existen muchos tipos de datos y utilizar el gráfico correcto, según la necesidad de información y el objetivo a comunicar es clave en este proceso. Fuente: Analytics Vidhya - **Crear un histograma para la variable 'gini'**: `sns.displot(df_nations["gini"], kind="hist")` - **Añadir una línea vertical al histograma que represente la media de 'gini'**: `plt.axvline(df_nations["gini"].mean(), color = "tomato")` - **Crear un gráfico de barras para la variable 'chldmort' por la variable 'region', incluyendo solo los países de África y Europa**: `df_euafr = df_nations.loc[df_nations["region"].isin(("Europe", "Africa"))]` `sns.barplot(data=df_euafr, x="region", y="chldmort")` - **Crear un gráfico de barras para la variable 'literacy' por la variable 'region', incluyendo solo los países de Americas y el resto del mundo**: - **Filtrar los datos para las Americas y el resto del mundo**: `df_americas = df_nations[df_nations['region'] == 'Americas']` `df_resto_mundo = df_nations[df_nations['region'] != 'Americas']` - **Calcular el alfabetismo promedio para cada grupo**: `alfabetismo_promedio_americas = df_americas['literacy'].mean()` `alfabetismo_promedio_resto_mundo = df_resto_mundo ['literacy'].mean()` - **Crear el gráfico de barras utilizando sns.barplot**: `sns.barplot(x=['Americas', 'Rest of the world'], y=[alfabetismo_promedio_americas, alfabetismo_promedio_resto_mundo])` - **Crear un boxplot para la variable 'school' por la variable 'region'**: `sns.boxplot(x=df_nations["region"], y=df_nations["school"])` ## 2.4 Por último, sección de modelación La regresión lineal es un modelo matemático usado para aproximar la relación de dependencia entre una variable dependiente Y, m variables independientes X₁ y un término aleatorio (de error) e. Yi = β0 + β₁x₁ + ... + βmxim + Ei La principal motivación es mostrar cuánto de la variabilidad de la variable dependiente Y es explicado por la variabilidad de las variables independientes X₁. Para trabajar el modelo de regresión lineal es fundamental usar datos limpios de valores perdidos, por lo que utilizaremos el dataset que llamamos data_limpia. Y los pasos a seguir para implementar el modelo de regresión lineal más simple: 1. Plantear el modelo con su formula 2. Ajustar el modelo utilizando el método .fit() 3. Mostrar los resultados del modelo - **Plantear el modelo para la variable 'gdp' en función de la variable 'co2'**: `modelo1 = smf.ols("gdp ~ co2", data=df_limpia)` - **Ajustar el modelo**: `modelo1 = modelo1.fit()` - **Mostrar los resultados del modelo**: `modelo1.summary()` - **Plantear el modelo para la variable 'gdp' en función de las variables 'chldmort', 'life', 'school' y 'co2'**: `modelo2 = smf.ols("gdp ~ chldmort + life + school + co2", data=df_limpia)` - **Ajustar el modelo**: `modelo2 = modelo2.fit()` - **Mostrar los resultados del modelo**: `modelo2.summary()`