Python 3.x PySpark:总结负数分布时descripe()函数出错--最小值和最大值翻转
我试图通过使用PySpark descripe()函数总结数据集中的度量分布来执行一些探索性的数据分析。但是,对于具有负分布的测量值,最小值和最大值似乎是翻转的Python 3.x PySpark:总结负数分布时descripe()函数出错--最小值和最大值翻转,python-3.x,pyspark,Python 3.x,Pyspark,我试图通过使用PySpark descripe()函数总结数据集中的度量分布来执行一些探索性的数据分析。但是,对于具有负分布的测量值,最小值和最大值似乎是翻转的 chicago_crime.describe('latitude', 'longitude').show() +-------+-------------------+--------------------+ |summary| latitude| longitude| +-------+--
chicago_crime.describe('latitude', 'longitude').show()
+-------+-------------------+--------------------+
|summary| latitude| longitude|
+-------+-------------------+--------------------+
| count| 6811141| 6811141|
| mean| 41.84203025139101| -87.67177837500668|
| stddev|0.08994460772003067|0.062086304377221284|
| min| 36.619446395| -87.524529378|
| max| 42.022910333| -91.686565684|
+-------+-------------------+--------------------+
经度测量值具有负分布。我预计经度的最小值为-91.6865684,最大值为-87.524529378
还有其他人注意到这个错误吗?PySpark开发人员可以纠正此错误吗
根据下面的请求,这里是printSchema()
输出
chicago_crime.printSchema()
root
|-- latitude: string (nullable = true)
|-- longitude: string (nullable = true)
然后转换为float显示预期结果
chicago_crime = chicago_crime.withColumn('latitude', chicago_crime.latitude.astype('float'))
chicago_crime = chicago_crime.withColumn('longitude', chicago_crime.longitude.astype('float'))
chicago_crime.describe('latitude', 'longitude').show()
+-------+-------------------+--------------------+
|summary| latitude| longitude|
+-------+-------------------+--------------------+
| count| 6810978| 6810978|
| mean| 41.84215369600549| -87.6716834892099|
| stddev|0.08628712634075986|0.058938763393995654|
| min| 41.644585| -87.934326|
| max| 42.02291| -87.52453|
+-------+-------------------+--------------------+
我尝试了以下代码:
from pyspark.sql import Row
df = spark.sparkContext.parallelize([Row(-1),Row(-2), Row(-3)]).toDF()
df.describe().show()
我得到的预期结果如下:
+-------+----+
|summary| _1|
+-------+----+
| count| 3|
| mean|-2.0|
| stddev| 1.0|
| min| -3|
| max| -1|
+-------+----+
几乎可以肯定的是,您的列是StringType()
列,而不是数字列,因此短字符是按字母顺序排列的。显示要检查的chicago\u crime.printSchema()
的输出。请查看上面的输出。您是正确的。可能重复将列转换为双精度类型,然后计算统计信息。@pault我已转换为浮点数并计算了统计信息。结果如预期。谢谢你的帮助!这对你来说很好,但这并不能回答OP的问题,除了说明descripe()
能够正确排序负数之外,这并不是一个特别令人惊讶的结果。