Pandas GroupBy对象不是Plot.ly的“可序列化”

时间:2014-05-27 01:36:53

标签: python pandas plotly

我正在尝试使用Plotly创建一个boxplot,并且在尝试使用已分组的Pandas DataFrame时出现错误。一些初步的挖掘产生了这一块代码,将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

这种将DataFrame转换为Plotly兼容系列的方法有其他替代方法吗?上面的代码用于折线图,但我想迭代我的尺寸,为我的DataFrame中的每个组生成一个boxplot。以下是我收到的错误消息:

“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 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要这样的事情:

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

(其中g是您的分组对象)。然后你可以使用py.plot

像我在评论中所说的那样,我对情节一无所知;我只是以你的榜样为基础。我们会看看是否有人了解更多关于情节回复的信息。如果做不到这一点,如果你能在你的问题中解释你想要数据的格式(例如,找出想要的格式),将会很有帮助。