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()
从以上数据中 可以看出:最大值是平均值的多倍,说明数据呈正偏态分布; 均值和标准差之比非常高(接近或者大于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)
注意 这段代码的开销非常大,用了两个循环,所以需要一点时间运行 哈哈哈。明天将继续学习数据可视化和特征的交互。
上一篇: 数据的描述性统计
下一篇: 《笨办法学Python》习题24、25