获取更多数据

使用 PySpark 进行特征工程

John Hogue

Lead Data Scientist, General Mills

关于外部数据集的思考

优点

  • 增加重要特征
  • 补充/替换取值
  • 获取便宜或容易

合并数据

缺点

  • 可能拖慢分析
  • 易引入数据泄漏
  • 需成为数据集领域专家

责任

使用 PySpark 进行特征工程

关于连接

明确数据方向

  • 左:我们的起始数据集
  • 右:要并入的新数据集

SQL 连接

使用 PySpark 进行特征工程

PySpark DataFrame 连接

DataFrame.join(

other, # 要合并的另一个 DataFrame
on=None, # 连接键
how=None) # 连接类型(默认 'inner')
使用 PySpark 进行特征工程

PySpark 连接示例

# 查看数据框前几行
hdf.show(2)
+----------+--------------------+
|        dt|                  nm|
+----------+--------------------+
|2012-01-02|        New Year Day|
|2012-01-16|Martin Luther Kin...|
+----------+--------------------+
only showing top 2 rows
# 指定连接条件
cond = [df['OFFMARKETDATE'] == hdf['dt']]

# 将 hdf 左连接到 df df = df.join(hdf, on=cond, 'left')
# 银行假日发生了多少笔销售? df.where(~df['nm'].isNull()).count()
0
使用 PySpark 进行特征工程

SparkSQL 连接

  • 对数据框应用 SQL
# 将数据框注册为临时表
df.createOrReplaceTempView("df")
hdf.createOrReplaceTempView("hdf")
# 编写 SQL 语句
sql_df = spark.sql("""
                      SELECT 
                        *
                      FROM df
                      LEFT JOIN hdf
                      ON df.OFFMARKETDATE = hdf.dt
                   """)
使用 PySpark 进行特征工程

一起连接一些数据!

使用 PySpark 进行特征工程

Preparing Video For Download...