2017-02-13 114 views
0

我已经创建了一个python函数来绘制一个小提琴剧情使用情节。该代码是:python函数的小提琴剧情和剧情

def print_violin_plot(data1,data2,type1,type2,fig_title): 
     data = pd.DataFrame(columns=('Group', 'Number')) 
     for i in data1: 
      x = pd.DataFrame({'Group' : [type1], 
         'Number' : [i],}) 
     data = data.append(x, ignore_index=True) 
     for i in data2: 
      x = pd.DataFrame({'Group' : [type2], 
         'Number' : [i],}) 
     data = data.append(x, ignore_index=True) 

     fig = FF.create_violin(data, data_header='Number',  
     group_header='Group', height=500, width=800, title= fig_title) 
     py.iplot(fig, filename="fig_title") 

我然后调用函数

print_violin_plot(eng_t['grade'],noneng_t['grade'],'English 
    Speaking','Non-English Speaking', 'Grades') 

功能运行正常,没有任何错误,但我没有看到任何输出。为什么?

回答

0

当你遍历data1data2分配的pd.DataFrame新的实例变量x并在每次迭代您覆盖x。如果您想附加pd.DataFrame的实例,则应将data.append(x)移至for循环。另外,data.append()返回无,这是一个处理data对象的方法,因此data = data.append(..)结果为data == None。您的代码应该是这样的

data = pd.DataFrame(columns=('Group', 'Number')) 
for i in data1: 
     x = pd.DataFrame({'Group' : [type1], 
        'Number' : [i],}) 
for i in data2: 
     x = pd.DataFrame({'Group' : [type2], 
        'Number' : [i],}) 
     data.append(x, ignore_index=True) 

要清楚,我必须说,我不知道什么pg.DataFrame手段或做,但我上面写的是在你的代码肯定有缺陷。我认为pg.DataFrame实例支持append方法,并且像lists一样工作。