scala统计缺失值和异常值

对于以csv文件存放的上百万条地铁数据(差不多六百条记录存放在一个文件,共有一百多个文件)用scala怎么找出缺失值和异常值

要找出缺失值和异常值,可以使用Scala中的Spark框架,具体步骤如下:

  • 加载CSV文件到Spark DataFrame中。
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().appName("SubwayDataAnalysis").getOrCreate()

val df = spark.read.option("header", "true").csv("subway_data.csv")
  • 查找缺失值。
    使用na函数可以查找DataFrame中的缺失值。
val missing_values_count = df.na.drop().count()

println(s"Missing values count: ${df.count() - missing_values_count}")
  • 查找异常值。

使用describe函数可以获取DataFrame中所有数值列的统计信息,包括平均值、标准差、最小值、最大值等。

val stats = df.describe()

val columns = stats.columns

val outliers = columns.map(col => {
  val q1 = stats.select(col).head().getString(1).toDouble
  val q3 = stats.select(col).head().getString(3).toDouble
  val iqr = q3 - q1
  val lower = q1 - 1.5 * iqr
  val upper = q3 + 1.5 * iqr
  df.filter(s"$col < $lower or $col > $upper").count()
})

println(s"Outliers count: ${outliers.sum}")
  • 统计缺失值和异常值。
println(s"Missing values count: ${df.count() - missing_values_count}")
println(s"Outliers count: ${outliers.sum}")

其中,missing_values_count是缺失值数量,outliers.sum是异常值数量。

注意:以上代码仅适用于数值型数据列。如果有非数值型数据列,需要根据具体情况进行处理。