欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PySpark入门十三:数据清洗之描述性统计

程序员文章站 2022-07-11 17:55:10
...

描述性统计

描述性统计是熟悉数据的最直接的方法之一,可以让我们很轻松就知道数据中有多少个缺失的观测数据、平均值、标准差、最大最下值

# 导包和创建连接的代码我就不写了
# 加载数据类型模块
import pyspark.sql.types as typ

# 加载数据
fraud = sc.textFile('./ccFraud.csv')
header = fraud.first()

# 删除标题行 并将每个元素转化为整形
fraud = fraud.filter(lambda row: row != header).map(lambda row: [int(elem) for elem in row.split(',')])

自己指定DF的数据类型,这个我们之前的笔记中有提到过,是通过StructField() 方法和StructType() 方法实现的

fields = [*[typ.StructField(h[1:-1], typ.IntegerType(), True) for h in header.split(',')]]
schema = typ.StructType(fields)
# 创建DF
fraud_df = spark.createDataFrame(fraud, schema)

对数据进行统计性描述

## 使用describe()方法 对数据进行统计性描述
numerical = ['balance', 'numTrans', 'numIntlTrans']
desc = fraud_df.describe(numerical)
desc.show()

PySpark入门十三:数据清洗之描述性统计
从以上数据中 可以看出:最大值是平均值的多倍,说明数据呈正偏态分布; 均值和标准差之比非常高(接近或者大于1)说明这是一个广泛的数据集

检查数据的相关性:
数据的相关性,是特征工程中 必不可少的一环,pyspark中一般用corr()方法计算相关性,缺陷是只能计算两两的相关性。

n_numerical = len(numerical)

# 查看相关性
corr = []

for i in range(0, n_numerical):
    temp = [None] *i 
    
    for j in range(i , n_numerical):
        temp.append(fraud_df.corr(numerical[i], numerical[j]))
    corr.append(temp)

注意 这段代码的开销非常大,用了两个循环,所以需要一点时间运行 哈哈哈。明天将继续学习数据可视化和特征的交互。