如果我有個標準差我該如何刪除這些列或避免處理他們或SE它在建立模型(以半自動化的方式)與星火下降colums 0或NaN
所以例如DF
我想
- 有許多缺失值,空值或NaN查找列
- 找到相關性較低(例如皮爾森)列與依賴VAR
- 刪除所有列(1),並從十個最低(2)
如果我有個標準差我該如何刪除這些列或避免處理他們或SE它在建立模型(以半自動化的方式)與星火下降colums 0或NaN
所以例如DF
我想
你可以嘗試這樣的事情下降有null
值也列:
val df = Seq(
(Option(1),Option(11),None), (Option(2), None, Option(222))
).toDF("col1", "col2", "col3")
// +----+----+----+
// |col1|col2|col3|
// +----+----+----+
// | 1| 11|null|
// | 2|null| 222|
// +----+----+----+
val nullCount = udf[Int,Any](any => if (any == null) 1 else 0)
val columnNullCounts = df.select(
df.columns.map(c => nullCount(col(c)) as c):_*
).agg(
sum(df.columns(0)) as df.columns(0),
df.columns.slice(1, df.columns.length).map(c => sum(c) as c):_*
).collect.apply(0).toSeq.toArray
df.select(df.columns.zip(columnNullCounts).filter(v => v._2 == 0).map(c => col(c._1)):_*)
// +----+
// |col1|
// +----+
// | 1|
// | 2|
// +----+
注意,所有在上面的代碼中主要的複雜性,因爲我做到了通用與DataFrame
工作。它使用DataFrame.columns
動態構建查詢。如果你不想檢查每一列,你可以重寫它以硬編碼值 - 但這應該足以讓你去。
也許使用df.stat.freqItems代替? – oluies
這並不能真正讓他得到他想要的,是嗎? –
相關 https://spark.apache.org/docs/latest/ml-features.html – oluies
你能解釋一下自己嗎?你的問題有點含糊 –
(1)你可以使用DataFrameNAFunctions:http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.DataFrameNaFunctions,例如df.na. drop() – eliasah