2016-04-09 18 views
0

Ben (yarı otomatik şekilde) bu sütunlar damla veya işlemeden kaçınmak veya model binasında onu se nasıl standart sapma örneğin YaniKıvılcım damla colums 0 veya NaN

ile DF varsa ben bağımlı var olan birçok eksik değerler, boş değerlere veya NaN ile

  1. bulmak sütunları
  2. (örneğin pearson için) düşük korelasyon ile sütunlarını bulmak istiyoruz
  3. tüm sütunları kaldırın (1) ve on düşükten en (2)
+0

ilgili https://spark.apache.org/docs/latest/ml-features.html – oluies

+1

Kendinizi açıklar mısınız? sorunuz (1) DataFrameNAFunctions kullanabilirsiniz: http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.DataFrameNaFunctions örneğin df.na ile ilgili sorularınız biraz belirsiz –

+1

. drop() – eliasah

cevap

1

İçinde null değerlere sahip sütunları düşmesi böyle bir şey deneyebilirsiniz: Bir DataFrame ile çalışmak için bu jenerik yapılan çünkü yukarıdaki kodda tüm büyük karmaşıklık olduğunu

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| 
// +----+ 

Not. Sorgularını dinamik olarak oluşturmak için DataFrame.columns kullanır. Her bir sütunu kontrol etmek istemezseniz, onu hard code değerlerine yeniden yazabilirsiniz - ancak bu size gitmeniz için yeterli olacaktır.

+0

Belki de df.stat.freqItems kullanmak? – oluies

+0

Bu ona gerçekten istediğini vermiyor, değil mi? –