Pandas GroupBy对象无法被Plot.ly"序列化

1 投票
1 回答
1523 浏览
提问于 2025-04-18 07:39

我正在尝试使用Plotly创建一个箱线图,但在使用一个已经分组的Pandas数据框时遇到了错误。我找到了一段代码,可以把Pandas数据框转换成Plotly可以用的格式:

def df_to_iplot(df):

'''
Coverting a Pandas Data Frame to Plotly interface
'''
x = df.index.values
lines={}
for key in df:
    lines[key]={}
    lines[key]["x"]=x
    lines[key]["y"]=df[key].values
    lines[key]["name"]=key

    #Appending all lines
lines_plotly=[lines[key] for key in df]
return lines_plotly

有没有其他方法可以把数据框转换成Plotly能用的系列?上面的代码是用来画折线图的,但我想对我的数据框中的每个组进行迭代,生成一个箱线图。以下是我收到的错误信息:

“TypeError: pandas.core.groupby.SeriesGroupBy对象无法被转换成JSON格式”

这是Plotly网站上的一个示例: https://plot.ly/python/box-plots

import plotly.plotly as py
from plotly.graph_objs import *

py.sign_in("xxxx", "xxxxxxxxxx")

import numpy as np
y0 = np.random.randn(50)
y1 = np.random.randn(50)+1

trace0 = Box(
    y=y0
)
trace1 = Box(
    y=y1
)
data = Data([trace0, trace1])

unique_url = py.plot(data, filename = 'basic-box-plot')

1 个回答

1

如果我理解得没错,你想要的东西大概是这样的:

data = Data([Box(y=v.values) for k, v in g])

(这里的 g 是你分组后的对象)。然后你可以在这个基础上使用 py.plot

就像我在评论里说的,我对 plotly 一无所知;我只是根据你的例子来推测的。我们看看有没有人对 plotly 更了解的回复。如果没有的话,能否请你在问题中解释一下你希望数据是什么格式的(也就是说,弄清楚 plotly 需要什么样的数据格式)。

撰写回答