Inspección visual de datos

Ingeniería de características con PySpark

John Hogue

Lead Data Scientist, General Mills

Descripción con DataFrame.describe()

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
Ingeniería de características con PySpark

Muchas funciones descriptivas ya disponibles

  • Media
    • pyspark.sql.functions.mean(col)
  • Asimetría
    • pyspark.sql.functions.skewness(col)
  • Mínimo
    • pyspark.sql.functions.min(col)
  • Covarianza
    • cov(col1, col2)
  • Correlación
    • corr(col1, col2)
Ingeniería de características con PySpark

Ejemplo con mean()

  • mean(col)
  • Función de agregación: devuelve la media de los valores de un grupo.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Ingeniería de características con PySpark

Ejemplo con cov()

  • cov(col1, col2)
  • Parámetros:
    • col1 – primera columna
    • col2 – segunda columna
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Ingeniería de características con PySpark

seaborn: visualización estadística de datos

Seaborn

Ingeniería de características con PySpark

Notas sobre gráficos

Para trazar DataFrames de PySpark con librerías como Seaborn hay que convertirlos a Pandas

ADVERTENCIA: Muestrea los DataFrames de PySpark antes de convertir a Pandas.

  • sample(withReplacement, fraction, seed=None)
    • withReplacement permite repeticiones en la muestra
    • fraction % de registros a conservar
    • seed semilla aleatoria para reproducibilidad
# Muestra el 50% del DataFrame de PySpark y cuenta filas
df.sample(False, 0.5, 42).count()
2504
Ingeniería de características con PySpark

Preparar el gráfico de una distribución

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Serie, array 1D o lista. Datos observados.
# Importa tu librería de visualización favorita
import seaborn as sns

# Muestra el dataframe sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Convierte la muestra a un DataFrame de Pandas pandas_df = sample_df.toPandas()
# Represéntalo sns.distplot(pandas_df)
Ingeniería de características con PySpark

Gráfico de distribución del precio de cierre de ventas

Displot

Ingeniería de características con PySpark

Gráficos de relación

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : cadenas; variables de entrada; deben ser nombres de columnas en data.
  • data : DataFrame de Pandas
# Importa tu librería de visualización favorita
import seaborn as sns

# Selecciona columnas s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Muestra el dataframe s_df = s_df.sample(False, 0.5, 42)
# Convierte a DataFrame de Pandas pandas_df = s_df.toPandas()
# Represéntalo sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Ingeniería de características con PySpark

Modelo lineal entre SQFT above ground y precio de venta

Gráfico de modelo lineal

Ingeniería de características con PySpark

¡Vamos a practicar!

Ingeniería de características con PySpark

Preparing Video For Download...