python - 无法在 Jupyter 笔记本中绘制 Pandas 数据框
问题描述
我正在通过 GCP 集群打开的 Jupyter 笔记本中进行编码。我正在使用 Spark-BigQuery 连接器从 BigQuery 中读取数据。我正在尝试获取这些数据的一个子集并将其绘制出来,但是每当我尝试运行该命令时,内核都会断开/重新连接。这种情况以前发生在我做错事但没有注意到的地方(所以我知道这不仅仅是随机断开连接)。但在这种情况下,我真的不知道我做错了什么。我正在做的与以下教程非常相似在 GitHub 上。我将数据读取到 Spark Dataframe。然后我将数据框转换为 Pandas 数据框并尝试绘制它。这是发生错误的地方。我已经尝试过不同大小的子集,所以我知道这不会发生,因为我的数据集太大了。我也尝试过用随机数创建一个“测试”数据框并绘制它——它工作得很好。所以它必须是我的数据集的问题......我只是不确定是什么。下面的代码:
读取数据:
import pandas as pd
import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName('Jupyter BigQuery Storage')\
.config('spark.jars', 'gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar') \
.getOrCreate()
table = "bigquery-public-data.ncaa_basketball.mbb_pbp_sr"
df = spark.read \
.format("bigquery") \
.option("table", table) \
.load()
df.printSchema()
df.createOrReplaceTempView('df')
query_string = """
SELECT event_type,
season,
type,
team_alias,
team_market,
team_name,
team_basket,
event_id,
event_coord_x,
event_coord_y,
three_point_shot,
shot_made
FROM df
WHERE type = "fieldgoal"
AND event_coord_x IS NOT NULL
AND event_coord_y IS NOT NULL
ORDER BY season
"""
df_shots = spark.sql(query_string)
df_shots.orderBy("season", "event_id").toPandas().head(5)
import matplotlib.pyplot as plt
%matplotlib inline
df_test = df_shots.toPandas()
test_new.plot(x='event_coord_x',y='event_coord_y',kind='line',figsize=(12,6))
最后一部分的输出只是:
<matplotlib.axes._subplots.AxesSubplot at 0x7f355a732950>
然后内核断开/重新连接。作为参考,event_coord_x 和 event_coord_y 都是 float64 类型。我不明白为什么这会导致任何问题,但我什至尝试将它们转换为整数并绘图,但问题仍然存在。
我有一种感觉,这可能是一件非常微不足道的事情,但现在我被难住了。抱歉,我没有任何具体的信息,例如错误消息(因为没有)。任何建议都会非常有帮助。
解决方案
使用Cloud Dataproc 1.5
image version时,内核似乎死机并重新启动,同时绘制图形。它可以在 Jupyter 的日志中看到。该问题与Cloud Dataproc 集群使用的Apache Knox相关。
Knox 将 websocket 消息大小限制为缓冲区大小,这对于某些 Jupyter 交互来说是不够的。这应该在下一个图像版本中修复。
目前,解决方法是使用Cloud Dataproc 1.4
图像版本或将figsize
参数更改为较小的值。
推荐阅读
- windows - Windows 机器上文件系统操作的真实定义
- spring-boot - 如何使用规范映射相关实体属性
- java - 重新启动应用程序后,Recyclerview 不会从 json 文件中更新数据
- java - Gson RuntimeTypeAdapterFactory 在反序列化后将我的 userType 转换为 null
- python - python合并dfs并转向字典
- angular - 用户关闭浏览器时的 Api 调用
- go - Golang中谷歌云功能部署错误
- javascript - npm 不下载 .d.ts 文件
- laravel - 如何使用 xampp 在本地运行多个 laravel 应用程序并使它们可供我本地网络上的其他 PC 访问
- javascript - 是否可以在不导入的情况下使用类型定义?