数据分析
有时候数据集太大或格式太抽象以致于在某些列或模式上无法分析和评估统计。
数据向量附带一些辅助工具来执行数据分析,以及最大值、平均值、最小值和其他有用的度量。
用spark进行数据分析
如果你已经把你的数据加载到Apache Spark,数据向量有一个特殊的AnalyzeSpark类可以生成直方图,收集统计数据,并返回数据质量信息。假设你你已经把数据加载到一个Spark RDD,把 JavaRDD
and Schema
传到这个类。
如果你在scala中使用数据向量并且你的数据已经被加载到一个常规的RDD
class,你可以通过调用 .toJavaRDD()
转换它,它返回一个JavaRDD。如果你需要把它还原,调用rdd()。
如下的代码演示了在Spark中使用 RDD javaRdd
和 概要mySchema 对2D数据集的分析。
import org.datavec.spark.transform.AnalyzeSpark;
import org.datavec.api.writable.Writable;
import org.datavec.api.transform.analysis.*;
int maxHistogramBuckets = 10
DataAnalysis analysis = AnalyzeSpark.analyze(mySchema, javaRdd, maxHistogramBuckets)
DataQualityAnalysis analysis = AnalyzeSpark.analyzeQuality(mySchema, javaRdd)
Writable max = AnalyzeSpark.max(javaRdd, "myColumn", mySchema)
int numSamples = 5
List<Writable> sample = AnalyzeSpark.sampleFromColumn(numSamples, "myColumn", mySchema, javaRdd)
注意到如果你有序列数据,这里同样有特别的方法:
SequenceDataAnalysis seqAnalysis = AnalyzeSpark.analyzeSequence(mySchema, sequenceRdd)
List<Writable> uniqueSequence = AnalyzeSpark.getUniqueSequence("myColumn", seqSchema, sequenceRdd)
本地分析
AnalyzeLocal类工作起来和Spark的副本非常类似并且有相同的API。传一个可以允许迭代数据集的RecordReader来替代传RDD。
import org.datavec.local.transforms.AnalyzeLocal;
int maxHistogramBuckets = 10
DataAnalysis analysis = AnalyzeLocal.analyze(mySchema, csvRecordReader, maxHistogramBuckets)
实用工具箱
本地分析
分析指定的数据-返回一个DataAnalysis对象,带有每个列的统计信息。
analyze
public static DataAnalysis analyze(Schema schema, RecordReader rr, int maxHistogramBuckets)
分析指定的数据-返回一个DataAnalysis对象,带有每个列的统计信息。
- 参数 schema是数据的概要
- 参数rr是要分析的数据
- 返回DataAnalysis对象
analyzeQualitySequence
public static DataQualityAnalysis analyzeQualitySequence(Schema schema, SequenceRecordReader data)
分析序列数据的质量-提供一个缺失值的报告,不符合概要的值。
- 参数 schema是数据的概要
- 参数data是要分析的数据
- 返回DataQualityAnalysis对象
analyzeQuality
public static DataQualityAnalysis analyzeQuality(final Schema schema, final RecordReader data)
分析数据的质量-提供一个缺失值的报告,不符合概要的值。
- 参数 schema是数据的概要
- 参数data是要分析的数据
- 返回DataQualityAnalysis对象
分析Spark
一个用于分析的静态方法
analyzeSequence
public static SequenceDataAnalysis analyzeSequence(Schema schema, JavaRDD<List<List<Writable>>> data,
int maxHistogramBuckets)
- param schema
- param data
- param maxHistogramBuckets
- return
analyze
public static DataAnalysis analyze(Schema schema, JavaRDD<List<Writable>> data)
分析指定的数据-返回一个DataAnalysis对象,带有每个列的摘要信息。
- 参数 schema是数据的概要
- 参数data是要分析的数据
- 返回DataQualityAnalysis对象
analyzeQualitySequence
public static DataQualityAnalysis analyzeQualitySequence(Schema schema, JavaRDD<List<List<Writable>>> data)
在一个列中随机采样值
- 参数count是要采样的数量
- 参数columnName 是要从哪个列采样
- 参数schema是概要
- 参数data是指要从哪采样
- return A list of random samples 返回一个采样的集合
analyzeQuality
public static DataQualityAnalysis analyzeQuality(final Schema schema, final JavaRDD<List<Writable>> data)
分析数据的质量-提供一个缺失值的报告,不符合概要的值。
- 参数 schema是数据的概要
- 参数data是要分析的数据
- 返回DataQualityAnalysis对象
min
public static Writable min(JavaRDD<List<Writable>> allData, String columnName, Schema schema)
在一个指定列中随机采样一个无效的集合。按Schema / ColumnMetaData来被认为是无效的。
- 参数numToSample是采样无效值的最大数
- 参数columnName是指从哪个列进行无效值采样
- 参数schema是数据概要
- 参数data是数据
- 返回一个无效的样例
max
public static Writable max(JavaRDD<List<Writable>> allData, String columnName, Schema schema)
Get the maximum value for the specified column
从一个指定列中得到最大值
- 参数allData是所有数据
- 参数columnName是指从哪个列获取最大值
- 参数schema是指数据概要
- 返回列的最大值
有任何问题请联系微信