Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x PySpark:总结负数分布时descripe()函数出错--最小值和最大值翻转_Python 3.x_Pyspark - Fatal编程技术网

Python 3.x 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| +-------+--

我试图通过使用PySpark descripe()函数总结数据集中的度量分布来执行一些探索性的数据分析。但是,对于具有负分布的测量值,最小值和最大值似乎是翻转的

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()
能够正确排序负数之外,这并不是一个特别令人惊讶的结果。