<jupyter_start><jupyter_text>Tallercito de análisis de datos básico con Python 🪁 Demos los primeros pasos Dataset disponible [aquí] (https://www.kaggle.com/jackdaoud/marketing-data) En Kaggle nos proponen responder estas preguntas:- Hay valores nulos o valores atípicos ? Cómo los manejarás ?- Hay variables que necesiten ser transformadas ?- Hay variables útiles que puedas crear a partir de los datos proporcionados ?- Notas algún patrón o anomalía en los datos ? Puedes graficarlos ? Por ahora, cuáles queremos responder ?<jupyter_code># Carguemos librerías

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Leamos el dataset

df = pd.read_csv('C:\\Users\marango\Documents\Docs ICETEX\\tallercito\marketing_data.csv')
# Miremos un poquito los datos

df.head()

# Recordar que de manera similar para esta vista, Lore y Cami, aplicaron un código para visualizar 
# todas las filas y todas las columnas https://towardsdatascience.com/how-to-show-all-columns-rows-of-a-pandas-dataframe-c49d4507fcf 
# Últimas 5 filas

df.tail()
# Cantidad de filas y columnas

df.shape
# Información general del dataset

df.info()
# Tipos de datos por columna

df.dtypes
# Nombres de columnas

df.columns
# Resumen estadístico para las columnas numéricas

df.describe()
# Resumen estadístico para todas las columnas (incluye fechas y categóricas)

df.describe(include='all')<jupyter_output><empty_output><jupyter_text>Nulos<jupyter_code># Suma de nulos por columna

df.isnull().sum()
# Suma de nulos por columna (otra forma)

df.isna().sum()<jupyter_output><empty_output><jupyter_text>🤔 Cuál puede ser otra forma de ver los nulos de la columna Income ?  Limpieza de columna IncomeCódigo por [<NAME>] (https://www.kaggle.com/jennifercrockett/marketing-analytics-eda-task-final)<jupyter_code># clean up column names that contain whitespace
df.columns = df.columns.str.replace(' ', '')

# transform Income column to a numerical
df['Income'] = df['Income'].str.replace('$', '')
df['Income'] = df['Income'].str.replace(',', '').astype('float')
# Conteo de valores por columna incluyendo nulos

df['Income'].value_counts(dropna=False)
# Conteo de valores por columna sin incluir nulos

df['Education'].value_counts()
# Valores únicos por columna

df['Marital_Status'].unique()
# Cantidad de valores únicos por columna

df['Marital_Status'].nunique()
# Histograma con pandas

df['Income'].hist()
# Histograma con matplotlib

plt.hist(df['Income'])

# consultar cómo funciona el %matplotlib inline
# Boxplot con seaborn para ver valor atípicos

sns.boxplot(y=df['Income'])<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10407929851315288, 'fraction_numerical': 0.002668699961875715, 'mean_word_length': 5.4950495049504955, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 3, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '441036', 'license': 'MIT', 'n_tokens_mistral': 967, 'n_tokens_neox': 945, 'n_words': 269, 'path': 'tallercito.ipynb', 'repo_name': 'miarangoa/team10', 'size': '2634'}