如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe

Posted

技术标签:

【中文标题】如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe【英文标题】:How to print Pyspark Dataframe like pandas Dataframe in jupyter 【发布时间】:2019-05-12 05:36:21 【问题描述】:

当我使用df.show() 在 jupyter notebook 中查看 pyspark 数据框时

它告诉我:

+---+-------+-------+-------+------+-----------+-----+-------------+-----+---------+----------+-----+-----------+-----------+--------+---------+-------+------------+---------+------------+---------+---------------+------------+---------------+---------+------------+
| Id|groupId|matchId|assists|boosts|damageDealt|DBNOs|headshotKills|heals|killPlace|killPoints|kills|killStreaks|longestKill|maxPlace|numGroups|revives|rideDistance|roadKills|swimDistance|teamKills|vehicleDestroys|walkDistance|weaponsAcquired|winPoints|winPlacePerc|
+---+-------+-------+-------+------+-----------+-----+-------------+-----+---------+----------+-----+-----------+-----------+--------+---------+-------+------------+---------+------------+---------+---------------+------------+---------------+---------+------------+
|  0|     24|      0|      0|     5|   247.3000|    2|            0|    4|       17|      1050|    2|          1|    65.3200|      29|       28|      1|    591.3000|        0|      0.0000|        0|              0|    782.4000|              4|     1458|      0.8571|
|  1| 440875|      1|      1|     0|    37.6500|    1|            1|    0|       45|      1072|    1|          1|    13.5500|      26|       23|      0|      0.0000|        0|      0.0000|        0|              0|    119.6000|              3|     1511|      0.0400|
|  2| 878242|      2|      0|     1|    93.7300|    1|            0|    2|       54|      1404|    0|          0|     0.0000|      28|       28|      1|      0.0000|        0|      0.0000|        0|              0|   3248.0000|              5|     1583|      0.7407|
|  3|1319841|      3|      0|     0|    95.8800|    0|            0|    0|       86|      1069|    0|          0|     0.0000|      97|       94|      0|      0.0000|        0|      0.0000|        0|              0|     21.4900|              1|     1489|      0.1146|
|  4|1757883|      4|      0|     1|     0.0000|    0|            0|    1|       58|      1034|    0|          0|     0.0000|      47|  

我怎样才能像 pandas 数据框一样获得格式化的数据框,以更有效地查看数据

【问题讨论】:

Show DataFrame as table in iPython Notebook的可能重复 您可以将spark 数据帧转换为pandas 数据帧,但如果结果数据帧太大,则会产生内存开销。您可以在此处查看show 的文档spark.apache.org/docs/latest/api/python/… 【参考方案1】:

您可以使用将 pyspark 数据帧直接转换为 pandas 数据帧的功能。相同的命令是 -

df.limit(10).toPandas()

这应该直接产生作为熊猫数据框的结果,您只需要安装熊猫包。

【讨论】:

【参考方案2】:

你必须使用下面的代码

from IPython.display import display
import pandas as pd
import numpy as np

d = 'col1': [1, 2], 'col2': [3, 4]
df = pd.DataFrame(data=d)

display(df)

【讨论】:

这没有回答问题。他想以格式化的方式显示 pyspark Dataframe(类似于 pandas DataFrame 的显示方式)。注意 pandas 和 pyspark DatFrame 的不一样! 所以当 Pyspark 使用 jupyter notebook 时,上面提到的代码也是正确的 感谢您的分析。但是当我使用 Pyspark Dataframe show() 时,显示不起作用。 这个答案很好用。不要调用df.show().display,而是(如答案所示)改为调用display(df)。它适用于 Pandas 或 Spark DataFrame。

以上是关于如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe的主要内容,如果未能解决你的问题,请参考以下文章

Jupyter ipython 内核在大文件加载时死机

在使用 jupyter notebook 时如何在 pandas 中使用 Dataframe 时查看完整数据? [复制]

iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?

如何在 pandas 和 Jupyter Notebook 中创建带有可点击超链接的表格

如何解决 jupyter notebook 中的 pandas 问题?

如何在 Pandas 和 Jupyter Notebook 中创建带有指向本地文件的可单击超链接的表