pyspark滤波cod的性能分析

2024-04-25 06:57:53 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码是我在https://spark.apache.org/docs/latest/mllib-statistics.html编辑的“摘要统计”。具体来说,我使用pDataI = mat.zipWithIndex().filter(lambda x: x[1] > 0).map(lambda x: x[0])过滤字符串和浮点值的混合

分解:

mat.zipWithIndex() is O(sizeOf mat)
filter(lambda x: x[1] > 0) is O(sizeOf mat)
map(lambda x: x[0]) is O(sizeOf mat)

我似乎在进行大量的计算,只是为了把第一行从 收藏。你知道吗

完整代码:

import numpy as np
from pyspark.mllib.stat import Statistics

data = []

data.append('c1,c2,c3')
data.append(np.array([1.0, 10.0, 100.0]))
data.append(np.array([2.0, 20.0, 200.0]))
data.append(np.array([3.0, 30.0, 300.0]))

mat = sc.parallelize(
    data
)  # an RDD of Vectors

pDataI = mat.zipWithIndex().filter(lambda x: x[1] > 0).map(lambda x: x[0])
summary = Statistics.colStats(pDataI)

print(summary.mean())  # a dense vector containing the mean value for each column
print(summary.variance())  # column-wise variance
print(summary.numNonzeros())  # number of nonzeros in each column

print pDataI.stats();

印刷品:

[   2.   20.  200.]

[  1.00000000e+00   1.00000000e+02   1.00000000e+04]

[ 3.  3.  3.]

(count: 3, mean: [   2.   20.  200.], stdev: [  0.81649658   8.16496581  81.64965809], max: [   3.   30.  300.], min: [   1.   10.  100.])

是否可以改进这一点,只在一次传递中处理mat集合?你知道吗


Tags: lambdamapdataisnpsummaryfiltermean
1条回答
网友
1楼 · 发布于 2024-04-25 06:57:53

就我而言,数据帧总是比RDD更好的解决方案。我将假设在真实的工作环境中,您的数据存储在某种文件或集合中,或者其他任何形式(csv、parquet、json等)。现在让我们假设一个csv。在这种情况下,您只需执行以下操作:

df = sqlContext.read.csv('filename.csv', header=True)

在那里,您可以使用df.describe()获得摘要统计信息。你知道吗

Here是DataFrameReader的文档,包括您可以读入的所有文件类型和集合。你知道吗

相关问题 更多 >