Pyspark:是否有与pandas info()相同的方法?

时间:2017-06-07 18:29:09

标签: python pandas apache-spark pyspark

PySpark中是否有与pandas info()方法等效的方法?

我正在尝试获取有关PySpark中数据框的基本统计信息,例如: 列数和行数 空值数 数据框大小

pandas中的

Info()方法提供了所有这些统计信息。

4 个答案:

答案 0 :(得分:1)

还有 summary 方法来获取行号和其他一些描述性统计信息。它类似于已经提到的 describe 方法。

来自PySpark manual

df.summary().show()
+-------+------------------+-----+
|summary|               age| name|
+-------+------------------+-----+
|  count|                 2|    2|
|   mean|               3.5| null|
| stddev|2.1213203435596424| null|
|    min|                 2|Alice|
|    25%|                 2| null|
|    50%|                 2| null|
|    75%|                 5| null|
|    max|                 5|  Bob|
+-------+------------------+-----+

or

df.select("age", "name").summary("count").show()
+-------+---+----+
|summary|age|name|
+-------+---+----+
|  count|  2|   2|
+-------+---+----+

答案 1 :(得分:0)

要找出有关数据框的类型信息,您可以尝试使用df.schema

spark.read.csv('matchCount.csv',header=True).schema

StructType(List(StructField(categ,StringType,true),StructField(minv,StringType,true),StructField(maxv,StringType,true),StructField(counts,StringType,true),StructField(cutoff,StringType,true)))

对于摘要统计信息,您还可以查看文档中的describe方法。

答案 2 :(得分:0)

我找不到一个好的答案,所以我使用了些许作弊

dataFrame.toPandas().info()

答案 3 :(得分:0)

检查this答案以获取空值和非空值的计数。

from pyspark.sql.functions import isnan, when, count, col
import numpy as np

df = spark.createDataFrame(
    [(1, 1, None), (1, 2, float(5)), (1, 3, np.nan), (1, 4, None), (1, 5, float(10)), (1, 6, float('nan')), (1, 6, float('nan'))],
    ('session', "timestamp1", "id2"))

df.show()
# +-------+----------+----+
# |session|timestamp1| id2|
# +-------+----------+----+
# |      1|         1|null|
# |      1|         2| 5.0|
# |      1|         3| NaN|
# |      2|         4|null|
# |      1|         5|10.0|
# |      1|         6| NaN|
# |      1|         6| NaN|
# +-------+----------+----+

df.select([count(when(isnan(c), c)).alias(c) for c in df.columns]).show()
# +-------+----------+---+
# |session|timestamp1|id2|
# +-------+----------+---+
# |      0|         0|  3|
# +-------+----------+---+

df.select([count(when(isnan(c) | col(c).isNull(), c)).alias(c) for c in df.columns]).show()
# +-------+----------+---+
# |session|timestamp1|id2|
# +-------+----------+---+
# |      0|         0|  5|
# +-------+----------+---+

df.describe().show()
# +-------+-------+------------------+---+
# |summary|session|        timestamp1|id2|
# +-------+-------+------------------+---+
# |  count|      7|                 7|  5|
# |   mean|    1.0| 3.857142857142857|NaN|
# | stddev|    0.0|1.9518001458970662|NaN|
# |    min|      1|                 1|5.0|
# |    max|      1|                 6|NaN|
# +-------+-------+------------------+---

我不知道与pandas.DataFrame.info()等价。 PrintSchema很有用,toPandas.info()适用于小型数据帧,但是当我使用pandas.DataFrame.info()时,我经常查看空值。