Pandas GroupBy对象无法被Plot.ly"序列化
我正在尝试使用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 需要什么样的数据格式)。