在 spark 数据帧中找到缺失值后转换为 pandas 数据帧
convert into a pandas dataframe after finding missing values in a spark dataframe
我正在利用以下方法在我的 spark df 中查找缺失值:
from pyspark.sql.functions import col,sum
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
来自我下面的示例 spark df:
import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
data = [
("James","CA",np.NaN), ("Julia","",None),
("Ram",None,200.0), ("Ramya","NULL",np.NAN)
]
df =spark.createDataFrame(data,["name","state","number"])
df.show()
如何将先前缺失计数行的结果转换为 pandas 数据帧?我的真实 df 有 26 列,在 spark df 中显示它是混乱且未对齐的。
这可能不如带有 table 的实际 pandas df 干净,但希望这对您有用:
从您的第一个代码中删除 .show()
调用:
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns))
您可以为该行分配一个变量或直接使用 toPandas()
call
sdf = df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns))
new_df = sdf.toPandas().T
print(new_df)
.T
调用是转置数据帧。如果您有多个列,如果不转置它会截断列,您将无法看到所有列。
同样,这没有实际的 table,但至少这比 spark df 更具可读性。
更新:
如果在最后一个变量之后,你可以得到 table 外观,如果你喜欢那种外观,你可以将它转换为 pandas df。可能有另一种方法或更有效的方法来做到这一点,但到目前为止这个方法有效。
pd.DataFrame(new_df)
我正在利用以下方法在我的 spark df 中查找缺失值:
from pyspark.sql.functions import col,sum
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
来自我下面的示例 spark df:
import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
data = [
("James","CA",np.NaN), ("Julia","",None),
("Ram",None,200.0), ("Ramya","NULL",np.NAN)
]
df =spark.createDataFrame(data,["name","state","number"])
df.show()
如何将先前缺失计数行的结果转换为 pandas 数据帧?我的真实 df 有 26 列,在 spark df 中显示它是混乱且未对齐的。
这可能不如带有 table 的实际 pandas df 干净,但希望这对您有用:
从您的第一个代码中删除 .show()
调用:
df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns))
您可以为该行分配一个变量或直接使用 toPandas()
call
sdf = df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns))
new_df = sdf.toPandas().T
print(new_df)
.T
调用是转置数据帧。如果您有多个列,如果不转置它会截断列,您将无法看到所有列。
同样,这没有实际的 table,但至少这比 spark df 更具可读性。
更新: 如果在最后一个变量之后,你可以得到 table 外观,如果你喜欢那种外观,你可以将它转换为 pandas df。可能有另一种方法或更有效的方法来做到这一点,但到目前为止这个方法有效。
pd.DataFrame(new_df)