我有这个代码来创建一个来自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]
答案 0 :(得分:3)
你真的是指一个有几十万分的傻瓜吗?除了它将永远,这是胡说八道。试试前1000,看看你得到了什么样的混乱。然后使用boxplot或小提琴图。在使用之前尝试了解您的工具。
来自docstring:
[...]它不能扩展到大量的观察结果(无论是在显示所有点的能力方面还是在计算所需的计算方面 安排他们)。