PySpark中是否有与pandas info()方法等效的方法?
我正在尝试获取有关PySpark中数据框的基本统计信息,例如: 列数和行数 空值数 数据框大小
pandas中的Info()方法提供了所有这些统计信息。
答案 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()
时,我经常查看空值。