如何优化此Pandas代码以更快地运行

时间:2016-02-23 19:21:07

标签: python pandas couchdb seaborn

我有这个代码来创建一个来自DataFrame数据的swarmplot:

df = pd.DataFrame({"Refined__Some_ID":some_id_list,
                   "Refined_Age":age_list,
                   "Name":name_list                   
                          }
                         )
#Creating dataframe with strings from the lists
select  = df.apply(lambda row : any([isinstance(e, str) for e in row  ]),axis=1) 
#Exlcluding data from select in a new dataframe
dfAnalysis = df[~select]
dfAnalysis['Refined_Age'].replace('', np.nan, inplace=True)
dfAnalysis = dfAnalysis.dropna()
dfAnalysis['Refined_Age'] = dfAnalysis['Refined_Age'].apply(int)
# print dfAnalysis
print type(dfAnalysis['Refined_Patient_Age'][1])
g = sns.swarmplot(x = dfAnalysis['Refined_ID'],y = dfAnalysis['Refined_Age'], hue = dfAnalysis['Name'], orient="v")
g.set_xticklabels(g.get_xticklabels(),rotation=30)
# print g

这需要花费大量的时间来运行(14小时计算!)。我怎样才能加快速度?另外,为什么代码首先这么慢?

数据框中包含的3个列表来自Couchdb数据库,其中包含大约320,000个文档。

更新1

我本来打算只查看前20个类别,但排除了这样做的代码。

该行应该是:

x = dfAnalysis['Refined_ID'].iloc[:20]

1 个答案:

答案 0 :(得分:3)

你真的是指一个有几十万分的傻瓜吗?除了它将永远,这是胡说八道。试试前1000,看看你得到了什么样的混乱。然后使用boxplot或小提琴图。在使用之前尝试了解您的工具。

来自docstring:

  

[...]它不能扩展到大量的观察结果(无论是在显示所有点的能力方面还是在计算所需的计算方面   安排他们)。