0% encontró este documento útil (0 votos)
56 vistas

Analyzing Data With Python 2

str, default '_' Separador entre prefijo y nombre de la columna Dummy_na: bool, default False Genera columnas adicionales para valores faltantes Columns: list-like, default None Columnas a codificar. Si None codifica todas las categóricas Sparse: bool, default False Genera DataFrame esparso Drop_first: bool, default False Elimina la primera categoría para evitar multicolinealidad Dtype: dtype, default np.uint8 Tipo de dato de las columnas generadas Return: DataFrame Datos codificados https://pandas.pydata.

Cargado por

Jenny Corrales
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas

Analyzing Data With Python 2

str, default '_' Separador entre prefijo y nombre de la columna Dummy_na: bool, default False Genera columnas adicionales para valores faltantes Columns: list-like, default None Columnas a codificar. Si None codifica todas las categóricas Sparse: bool, default False Genera DataFrame esparso Drop_first: bool, default False Elimina la primera categoría para evitar multicolinealidad Dtype: dtype, default np.uint8 Tipo de dato de las columnas generadas Return: DataFrame Datos codificados https://pandas.pydata.

Cargado por

Jenny Corrales
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 64

Análisis de datos con

Python

Por:
● Ing. María Fernanda Alvarado
● Ing. Juan Carlos González Chacón, MCSI, MAE
Agenda
1. Adquisición de datos
2. Pre-procesamiento de datos
3. Exploración y análisis de datos
4. Desarrollo del modelo
5. Evaluación del modelo
Introduccion
Motivación

Fuente:https://www.tiobe.com/tiobe-index/
Fuente: https://pypl.github.io/PYPL.html
(Google, Bing, Yahoo!, Wikipedia,
(Google Trends)
Amazon, YouTube and Baidu )
Historia

Guido
ABC van Python
Rossum

Centrum
Wiskunde
&
Informática
Evolución
• Clases con herencia
0. • Generación de listas y
generadores

9 V2
• Manejo de excepciones, Recolector de referencias cíclicas.
• Funciones Python Software Foundation
• Tipos: str, list, dict License

V1 V3
• Programación funcional: lambda, reduce, filter y map • Rediseño
• Eliminación de
duplicidad
• Funciones: reduce/print
Características
Multiparadigma

Tipado Dinámico Multiplataforma

Fuertemente
Tipado
Propósitos

Web

Data
Scripting
Science
Análisis de datos
Análisis de datos
El análisis de datos juega un papel importante al ayudarnos a descubrir
información útil a partir de los datos, responder preguntas e incluso predecir
el futuro o lo desconocido.
Problema a resolver

¿Podemos estimar el precio de un automóvil


usado en función de sus características?
Adquisición de
datos
Importación y exportación de datos

Carga y lectura de datos desde


cualquier fuente
Bibliotecas
Bibliotecas Bibliotecas de Bibliotecas para
científicas visualización Machine Learning
- Pandas - Matplotlib - SciKit-learn
- Numpy - Seaborn - StatsModels
- SciPy
Funciones
- read_csv()
- head()
- tail()
- Agregar
encabezados
- Ver tipos de datos

Pandas Python Descripción

object string Caracteres

int64 int Números


enteros

float64 float Números


con
decimales

datetime64,ti N/A (Python Fecha y


medelta[ns] datetime) hora
- describe()
- info()
Pre-procesamiento
de datos
Es el proceso de convertir o mapear datos de un formulario
"sin procesar" a otro formato para que estén listos para un
análisis posterior.

El preprocesamiento de datos también se denomina a


menudo "data cleaning" o "data wrangling"
Tipos

● Identificación y manejo de valores faltantes


● Formateo de datos
● Normalización de los datos
● Agrupamiento de datos
Valores faltantes
-Revisar si el valor faltante puede ser obtenido de la fuente

-Remover el valor de los datos, ya sea el atributo o el registro.

- Reemplazar datos. Por ejemplo, utilizar el promedio de la variable, o el valor


más común de la misma.
Manejo de datos faltantes - Remover datos
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

Axis: {0 or ‘index’, 1 or ‘columns’}, default 0


● 0, or ‘index’ : Remueve fila
● 1, or ‘columns’ : Remueve columna.

How: {‘any’, ‘all’}, default ‘any’


● ‘any’ : Remueve la columna o fila si existe algún valor NA
● ‘all’ : Remueve la columna o fila si existe todos los valor son NA

Thresh: int, optional


Cantidad de valores no NA requeridos.

Subset: array-like, optional


Columna/etiqueta a utilizar

inplacebool, default False


True mantienen los resultados en la misma variable
False devuelve el resultado

Return:dataframe

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html
Manejo de datos faltantes - Reemplazar datos
DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

To_replace: str, regex, list, dict, Series, int, float, or None


○ Permite especificar el valor de reemplazo de una vez. Value debe ser None. Ejemplo: {'a': 'b', 'y': 'z'}
○ Permite especificar la columna a utilizar y el valor a reemplazar. Value debe brindar el valor de reemplazo. Ejemplo: {'a': 1, 'b': 'z'}
○ Permite especificar la columna a utilizar, el valor a remplazar y el valor de reemplazo. Ejemplo: {'a': {'b': np.nan}}

Value: scalar, dict, list, str, regex, default None


Valor de reeamplazo.

inplacebool, default False


Si True ejecuta operación en la misma variable y devuelve None.

limitint, default None


Máximo largo a rellenar.

Regex: bool or same types as to_replace, default False


True si se utilizan expresiones regulares.

method{‘pad’, ‘ffill’, ‘bfill’, None}


Método a utilizar en el reemplazo

Return: dataframe

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html
Formateo de datos
Llevar los datos a un estándar común de expresión que permite a los usuarios
hacer comparaciones significativas.

Como parte de la limpieza del conjunto de datos, el formateo de datos


asegura que los datos sean consistentes y fácilmente comprensibles.
Normalización de datos
La normalización implica transformar o convertir el conjunto de datos en una distribución normal.
Algunos algoritmos como Máquinas Vectores de Soporte convergen mucho más rápido en los
datos normalizados, por lo que tiene sentido normalizar los datos para obtener mejores
resultados. La estandarización o normalización de los datos implica llevar los valores de las
columnas a una escala común, lo que se hace principalmente para las columnas con rangos
variados.

Métodos:
simple feature scaling Xnorm = Xv/Xmax df[“length”] = df[“length”] /df[“length”] .max()

Min-Max Xnorm = Xv- Xmin/Xmax- Xmin df[“length”] = (df[“length”] - df[“length”].min() ) /


(df[“length”].max() - df[“length”].min() )

Z-score o standard score Xnorm = Xv- M / O df[“length”] = (df[“length”] - df[“length”].mean() ) /


(df[“length”].std()
Agrupamiento de datos
Consiste en agrupar valores juntos en rangos/contenedores para tener un
mejor entendimientos de la distribución de los datos. Convierte datos
numéricos en variables categóricas.
Agrupamiento de datos - Generar grupos/contenedores
numpy. linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

Start: array_like
Valor Inicial

Stop: array_like
Valor final

Num: int, optional


Número de grupos/muestras a generar

Endpoint: bool, optional


Si es True devuelve (samples, step),

retstepbool, optional
If True, return (samples, step), dónde step es el espaciado entre los grupos

dtypedtype, optional
Tipo de dato de la salida a retornar.

axisint, optional
Eje en el resultado donde se almacena los grupos/muestras.

https://numpy.org/doc/stable/reference/generated/numpy.linspace.html
Agrupamiento de datos
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise',
ordered=True)

X: array-like
Entrada a ser agrupadas
B: insint, sequence of scalars, or IntervalIndex
Grupos a utilizar

Right: bool, default True


SI True, indica si los bins incluyen el borde más a la derecha o no.
Labels: array or False, default None
Indica las etiquetas a utilizar para los grupos.
retbinsbool, default False
Determina si devuelve o no los grupos
Precision: int, default 3
Precisión para almacenar y mostrar la etiqueta de los grupios.
Include_lowest: bool, default False
Determina si el primer debe ser incluido
duplicates{default ‘raise’, ‘drop’}, optional
Si los límites de los grupos no son únicos, genera ValueError o elimina los no únicos.
Ordered: bool, default True
Determina si las etiquetas debe ser ordenadas.

https://pandas.pydata.org/docs/reference/api/pandas.cut.html
Convertir variables
categóricas en variables
cuantitativas
Se codifican los valores agregando nuevas características correspondientes a cada elemento único en la característica
original que se desea codificar. Se conoce tambien cómo one-hot-encoding
Convertir variables categóricas a numéricas
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

Data: array-like, Series, or DataFrame


Datos a convertir

Prefix: str, list of str, or dict of str, default None


Prefijo a utilizar en las nuevas columnas

Prefix_sep: str, default ‘_’


Separador a utilizar si el prefijo es empleado

Dummy_na: bool, default False


Indica si se debe crear columna para valores nulos(NaNs)

columns: list-like, default None


Columnas a ser codificadas

Sparse: bool, default False


Si es True los datos se devuelven cómo SparseArray o si es False como NumPy array.

Drop_first: bool, default False


Elimina el primer nivel de las categorías

Dtype: dtype, default np.uint8


Tipo de las nuevas categorías

https://pandas.pydata.org/docs/reference/api/pandas.get_dummies.html
Exploración y
análisis de datos
Exploración y análisis de datos
● Identificar las principales características de un dataset.
● Descubrir la relación que hay entre las diferentes variables.
● Extraer las variables que son más relevantes para resolver el problema.
Estadistica Descriptiva
Sintaxis: DataFrame.describe(percentiles=None,
include=None, exclude=None)

Parametros:
- Percentiles: lista como tipo de datos de
números entre 0-1 para devolver el percentil

Describe()
respectivo
- Include: Lista de tipos de datos que se
incluirán al describir el marco de datos. El
valor predeterminado es None
- Exclude:Lista de tipos de datos que se
excluirán al describir el marco de datos. El
valor predeterminado es None

Tipo de retorno: Resumen estadístico del marco


de datos.
Sintaxis:Series.value_counts(normalize=False,sort=True
,ascending=False,bins=None, dropna=True)

Parámetros:
- Normalize (Bool, default false): Si es TRUE
retorna las frecuencias relativas de los valores

Value_counts()
-
-
únicos.
Sort (Bool, default True): Ordena por frecuencias
Ascending (Bool, default false): Ordena de forma
ascendente
- Bins (int,optional): Agrupa los valores en
contenedores, solo funciona con datos
numéricos.
- Dropna (Bool, default True): No incluye NaN.

Retorno: Una serie que contiene valores únicos


- Método que agrupa los datos en
diferentes categorías.

df_gptest = df[['drive-wheels','body-style','price']]
Group by
grouped_test1 = df_gptest.groupby(['drive-
wheels','body-style'],as_index=False).mean()

grouped_test1
- Correlación: Medida del grado de
interdependencia entre variables.
- Causalidad: Relación entre causa y efecto
entre dos variables.

Correlación de Pearson:

- Mide la dependencia lineal entre X y Y


- E coeficiente resultante está entre -1 y 1
1: Correlación lineal positiva perfecta.
0: Sin correlación lineal, lo más probable es Correlación y causalidad
que las dos variables no se afecten entre sí.
-1: Correlación lineal negativa perfecta.

from scipy import stats


pearson_coef, p_value = stats.pearsonr(df['wheel-base'],
df['price'])
print("The Pearson Correlation Coefficient is", pearson_coef, "
with a P-value of P =", p_value)
Análisis de varianza:

- Método estadístico para las


diferencias significativas entre
dos o más grupos,
- Retorna:
- F-test.
- P- Value

grouped_test2=df_gptest[['drive-wheels', 'price']].groupby(['drive-wheels'])
grouped_test2.head(2)
df_gptest
grouped_test2.get_group('4wd')['price']
ANOVA
# ANOVA
f_val, p_val = stats.f_oneway(grouped_test2.get_group('fwd')['price'],
grouped_test2.get_group('rwd')['price'], grouped_test2.get_group('4wd')
['price'])

print( "ANOVA results: F=", f_val, ", P =", p_val)


Desarrollo del
modelo
Desarrollo de modelo
Un modelo o estimador como una ecuación matemática utilizada para predecir un
valor dado uno o más de otros valores, relacionando una o más variables o
características independientes con variables dependientes.

Cuantos más datos relevantes tenga, más preciso será su modelo.


Regresión Lineal Simple
Método que nos ayuda a comprender la relación entre dos variables:
la variable predictora (independiente) x y la variable objetivo
(dependiente) y.
Regresión Lineal Múltiple
La regresión lineal múltiple se utiliza para explicar la relación entre una
variable objetivo continua (Y) y - Dos o más variables predictoras (X)
from sklearn.linear_model import LinearRegression

lm = LinearRegression()

lm.fit(X(variable independiente),Y(variable dependiente))

Yhat=lm.predict(X)

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
Evaluación del
Modelo
Evaluación de modelo utilizando visualizaciones
Gráficos de regresión

● Relación entre las dos variables


● Fuerza de la correlación
● Dirección de la relación (positiva
o negativa)
import seaborn as sns

sns.regplot(x="Nombre EjeX", y="Nombre EjeY", data=datos)

https://seaborn.pydata.org/generated/seaborn.regplot.html
Evaluación de modelo utilizando visualizaciones
Gráficos residuales

● La gráfica residual representa el error


entre los valores reales.
● Examinando el valor predicho y el valor
real se ve una diferencia.
● Se obtiene ese valor restando el valor
predicho y el valor objetivo real.
import seaborn as sns

X= datos de la variable independiente(predictora)

Y= datos de la variable dependiente(respuesta)

sns.residplot(X, Y)

https://seaborn.pydata.org/generated/seaborn.residplot.html
Evaluación de modelo utilizando visualizaciones
Gráficos de distribución

● Muestra el valor predicho frente al valor


real.
● Estos gráficos son extremadamente útiles
para visualizar modelos con más de una
variable o característica independiente.
import seaborn as sns

X= datos de la variable independiente(predictora)

Y= datos de la variable dependiente(respuesta)

ax1 = sns.distplot(X, hist=False, color="r”, label="Etiqueta EjeX")

sns.distplot(Y, hist=False, color="b", label="Etiqueta EjeY" , ax=ax1)

https://seaborn.pydata.org/generated/seaborn.residplot.html
R2
Conocido como coeficiente de determinación, es una medida para indicar
qué tan cerca están los datos de la línea de regresión ajustada.

El valor de R-cuadrado es el porcentaje de variación de la variable de


respuesta (y) que se explica mediante un modelo lineal.

X= datos de la variable independiente(predictora)


Y= datos de la variable dependiente(respuesta)

lm.fit(X, Y)

lm.score(X, Y)
Error cuadrático medio (MSE)
El error cuadrático medio mide el promedio de los cuadrados de los
errores. Es decir, la diferencia entre el valor real (y) y el valor estimado (ŷ).

from sklearn.metrics import mean_squared_error

VA= datos valores actuales


VO=datos valores objetivos(a predecir)
mean_squared_error(VA, VO)

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html
Gracias
https://jobs.intel.com/ShowJob/Id/3158375/IT-Data-Analytics-Student-Worker

[email protected]
Entrenamiento y testeo del módelo
y_data = df['price']

y_data = df['price']

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.10,


random_state=1)

print("number of test samples :", x_test.shape[0])

print("number of training samples:",x_train.shape[0])


Cross-Validation
from sklearn.model_selection import cross_val_score

Rcross = cross_val_score(lre, x_data[['horsepower']], y_data, cv=4)

Rcross

print("The mean of the folds are", Rcross.mean(), "and the standard deviation is" , Rcross.std())

-1 * cross_val_score(lre,x_data[['horsepower']], y_data,cv=4,scoring='neg_mean_squared_error')
Ridge Regression
from sklearn.linear_model import Ridge
pr=PolynomialFeatures(degree=2)
x_train_pr=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-
losses','symboling']])
x_test_pr=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])
RigeModel=Ridge(alpha=1)
RigeModel.fit(x_train_pr, y_train)
yhat = RigeModel.predict(x_test_pr)
print('predicted:', yhat[0:4])
print('test set :', y_test[0:4].values)
Grid Search
from sklearn.model_selection import GridSearchCV
parameters1= [{'alpha': [0.001,0.1,1, 10, 100, 1000, 10000, 100000, 100000]}]
parameters1
RR=Ridge()
RR
Grid1 = GridSearchCV(RR, parameters1,cv=4, iid=None)
Grid1.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_data)
BestRR=Grid1.best_estimator_
BestRR
BestRR.score(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_test)
Df[“city-mpg”] = 235/df[“city-mpg”]

dataframe.rename()

dataframe.dtypes()

Identifica el tipo de los datos

dataframe.astype()

Convierte el tipo de los datos


Bibliotecas de Python
1. A Python library is a collection of functions and methods that allow you to perform lots
2. of actions without writing any code.
3. The libraries usually contain built-in modules providing different functionalities, which
4. you can use directly.
5. And there are extensive libraries, offering a broad range of facilities.
6. We have divided the Python data analysis libraries into three groups: The first group is called
Boxplot()
Scatterplot()

También podría gustarte