首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在Jupyter笔记本中绘制Pandas数据帧

无法在Jupyter笔记本中绘制Pandas数据帧
EN

Stack Overflow用户
提问于 2020-04-20 10:41:54
回答 1查看 109关注 0票数 1

我正在通过GCP集群打开的Jupyter笔记本中编写代码。我正在使用Spark-BigQuery连接器从BigQuery读取数据。我正在尝试获取这些数据的一个子集并绘制它,但是每当我尝试运行该命令时,内核都会断开/重新连接。以前在我做错了事情而没有注意到的地方也发生过这种情况(所以我知道这不仅仅是随机断开连接)。但在这种情况下,我真的不知道我做错了什么。我所做的与GitHub上的以下tutorial非常相似。我把数据读到了Spark Dataframe。然后,我将数据帧转换为Pandas数据帧,并尝试绘制它。这就是错误发生的地方。我已经尝试了不同大小的子集,所以我知道这不会发生,因为我的数据集太大了。我还尝试用随机数创建了一个“测试”数据帧,并绘制了它--它工作得很完美。所以这肯定是我的数据集有问题...我只是不确定是什么。代码如下:

正在读取中的数据:

代码语言:javascript
运行
复制
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))

最后一部分的输出是:

代码语言:javascript
运行
复制
<matplotlib.axes._subplots.AxesSubplot at 0x7f355a732950>

然后内核断开/重新连接。作为参考,event_coord_x和event_coord_y的类型都是float64。我不明白为什么这会导致任何问题,但我甚至尝试将它们转换为整数并绘制,问题仍然出现。

我有一种感觉,这可能是一件微不足道的事情,但现在我被难住了。对不起,我没有任何特定的东西,比如错误消息(因为没有错误消息)。任何建议都会非常有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-21 01:37:59

使用Cloud Dataproc 1.5 image version时,在绘制图形时,内核显示为死机并重新启动。它可以在Jupyter的日志中看到。问题与Cloud Dataproc集群使用的Apache Knox有关。

Knox将websocket消息大小限制为缓冲区大小,这对于某些Jupyter交互是不够的。这个问题应该会在下一个镜像版本中修复。

目前,解决方法是使用Cloud Dataproc 1.4镜像版本或将figsize参数更改为较小的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61314346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档