Візуальний огляд даних

Опрацювання ознак у PySpark

John Hogue

Lead Data Scientist, General Mills

Описові статистики з DataFrame.describe()

df.describe(['LISTPRICE']).show()
+-------+------------------+
|summary|         LISTPRICE|
+-------+------------------+
|  count|              5000|
|   mean|        263419.365|
| stddev|143944.10818036905|
|    min|            100000|
|    max|             99999|
+-------+------------------+
Опрацювання ознак у PySpark

Багато описових функцій уже доступні

  • Середнє
    • pyspark.sql.functions.mean(col)
  • Асиметрія
    • pyspark.sql.functions.skewness(col)
  • Мінімум
    • pyspark.sql.functions.min(col)
  • Коваріація
    • cov(col1, col2)
  • Кореляція
    • corr(col1, col2)
Опрацювання ознак у PySpark

Приклад із mean()

  • mean(col)
  • Агреґувальна функція: повертає середнє значення у групі.
df.agg({'SALESCLOSEPRICE': 'mean'}).collect()
[Row(avg(SALESCLOSEPRICE)=262804.4668)]
Опрацювання ознак у PySpark

Приклад із cov()

  • cov(col1, col2)
  • Параметри:
    • col1 – перший стовпець
    • col2 – другий стовпець
df.cov('SALESCLOSEPRICE', 'YEARBUILT')
1281910.3840634783
Опрацювання ознак у PySpark

seaborn: візуалізація статистичних даних

Seaborn

Опрацювання ознак у PySpark

Нотатки щодо побудови графіків

Побудова графіків для PySpark DataFrame стандартними бібліотеками, як-от Seaborn, потребує перетворення на Pandas

ПОПЕРЕДЖЕННЯ: Перед перетворенням на Pandas робіть вибірку з PySpark DataFrame!

  • sample(withReplacement, fraction, seed=None)
    • withReplacement дозволяє повтори у вибірці
    • fraction % записів, які зберегти
    • seed випадкове зерно для відтворюваності
# Виберіть 50% рядків із PySpark DataFrame та порахуйте їх кількість
df.sample(False, 0.5, 42).count()
2504
Опрацювання ознак у PySpark

Підготовка до побудови розподілу

Seaborn distplot()

  • seaborn.distplot(a)
  • a : Series, 1d-array або список. Спостережувані дані.
# Імпортуйте улюблену бібліотеку візуалізації
import seaborn as sns

# Зробіть вибірку датафрейму sample_df = df.select(['SALESCLOSEPRICE']).sample(False, 0.5, 42)
# Перетворіть вибірку на Pandas DataFrame pandas_df = sample_df.toPandas()
# Побудуйте графік sns.distplot(pandas_df)
Опрацювання ознак у PySpark

Графік розподілу ціни продажу

Displot

Опрацювання ознак у PySpark

Візуалізація залежностей

Seaborn lmplot()

  • seaborn.lmplot(x, y, data)
  • x, y : рядки, вхідні змінні; це мають бути назви стовпців у даних.
  • data : Pandas DataFrame
# Імпортуйте улюблену бібліотеку візуалізації
import seaborn as sns

# Виберіть стовпці s_df = df.select(['SALESCLOSEPRICE', 'SQFTABOVEGROUND']) # Зробіть вибірку датафрейму s_df = s_df.sample(False, 0.5, 42)
# Перетворіть на Pandas DataFrame pandas_df = s_df.toPandas()
# Побудуйте графік sns.lmplot(x='SQFTABOVEGROUND', y='SALESCLOSEPRICE', data=pandas_df)
Опрацювання ознак у PySpark

Лінійна модель між площею над землею (SQFT) і ціною продажу

Linear Model Plot

Опрацювання ознак у PySpark

Давайте потренуємось!

Опрацювання ознак у PySpark

Preparing Video For Download...