Excel的好处之一是它供给了一个直观和强壮的图形界面来检查你的数据。相比之下,pandas+Jupyternotebook供给了大量的编程才能,但在图形化显现和操作DataFrame视图方面才能有限。
在Python生态系统中,有几个东西被设计来添补这一空白。它们的杂乱程度从简略的JavaScript库到杂乱的、全功用的数据剖析引擎不等。一个共同点是它们都供给了一种以图形格局检查和挑选性地过滤数据的办法。从这个共同点动身,它们在设计和功用上有很大的不同。
本文将回顾这些DataFrame可视化选项中的几个,以便让你了解状况并评估哪些选项或许对你的剖析进程有用。
布景介绍
关于这篇文章,咱们将运用某出售数据集样本。下面是Jupyternotebook中的数据视图。
importpandas
url=’https://github.com/chris1610/pbpython/blob/master/data/2018_Sales_Total_v2.xlsx?raw=True’
df=pd.read_excel(url)
df
下面是Excel中一个类似的视图,对所有列都运用了过滤器。
这种在Excel中熟悉的视图使你能够轻松地看到你的所有数据。你能够通过过滤和排序来检查数据,并在需求时深入了解细节。当你在探究一个新的数据集或处理一个现有数据集的新问题时,这种类型的功用是最有用的。
显然,关于数百万行的数据,这是不可行的。但是,即使你有大的数据集,而且是一个pandas专家,期望你仍然会把DataFrames转存到Excel,并检查数据的子集。
我运用Excel+python的部分原因是,在Excel中检查数据的特别才能要比一般的DataFrame视图好得多。
有了这个布景,让咱们来看看在Excel中复制这种简略的检查才能的一些选项。
JavaScript东西
最简略的办法是运用一个JavaScript库来为Jupyternotebook中的DataFrame视图增加一些交互性。
Qgrid
咱们要看的第一个东西是来自Quantopian的Qgrid。这个Jupyternotebook部件运用SlickGrid组件来为你的DataFrame增加互动性。
一旦它被装置,你能够显现一个支撑排序和过滤数据的DataFrame版本。
importqgrid
importpandas
url=’https://github.com/chris1610/pbpython/blob/master/data/2018_Sales_Total_v2.xlsx?raw=True’
df=pd.read_excel(url)
widget=qgrid.show_grid(df)
widget
Qgrid支撑运用根据底层数据类型的各种部件进行直观的过滤。此外,你能够配置一些渲染功用,然后将选定的数据读入一个DataFrame。这是一个相当有用的功用。
Qgrid不进行任何可视化,也不答应你运用pandas表达式来过滤和挑选数据。
总的来说,Qgrid关于简略的数据操作和检查来说效果不错。
PivottableJs
下一个选项并不是用来检查DataFrame的,但我以为它是一个十分有用的总结数据的东西,所以我把它包括在内。
pivottablejs模块运用一个透视表JavaScript库,用于交互式数据透视和总结。
一旦装置了它,运用起来就很简略。
frompivottablejsimportpivot_ui
pivot_ui(df)
在这个比如中,我通过点击和拖动总结了每个客户的购买数量。
除了根本的求和功用外,你也能够做一些可视化和统计剖析。
这个小组件关于过滤原始的DataFrame没有用处,但是关于数据的透视和总结来说确实很强壮。其中一个很好的特点是,一旦你建立了透视表,你就能够过滤数据。
这个部件的另一个缺点是,它没有运用任何pandas的透视或挑选功用。尽管如此,pivottablejs仍然是一个十分有用的快速透视和总结的东西。
数据剖析运用
第二类GUI运用是老练的运用,一般运用网络后端,如Flask或根据Qt的独立运用。这些运用程序的杂乱性和才能各不相同,从简略的表格视图和绘图才能到强壮的统计剖析。这些东西的一个共同之处在于,它们与pandas紧密结合,因此你能够运用pandas代码来过滤数据并与这些运用程序进行交互。
PandasGUI
我将评论的第一个运用程序是PandasGUI。这个运用程序的共同之处在于,它是一个用Qt构建的独立运用程序,能够从Jupyternotebook中调用。
运用前面比如中的相同数据,导入show指令。
frompandasguiimportshow
show(df)
假如一切顺利的话,你最终会得到一个独立的GUI。因为它是一个独立的运用程序,你能够对视图进行相当多的配置。例如,我移动了几个标签,在一个页面上显现更多的才能。
在这个比如中,我运用pandas查询语法过滤数据,以显现一个客户和购买数量>15的状况。
PandasGUI与Plotly集成,也能够建立可视化。下面是一个单价柱状图的比如。
PandasGUI的一个很好的功用是,过滤器在所有标签中都对DataFrame有效。你能够运用这个功用,在绘制或转化数据时测验不同的数据视图。
PandasGUI的另一个功用是,你能够通过透视或融合来从头刻画数据。下面是一个按SKU分类的单位出售量的汇总。
下面是发生的视图的姿态。
PandasGUI是一个令人印象深入的运用程序。我喜爱它怎么跟踪所有的改动,而且只是一个规范pandas功用的小包装。这个程序正在活跃开发中,所以我将密切关注它,看它怎么跟着时间的推移而改善和开展。
Tabloo
Tabloo这个名字让我每次看到它都会浅笑。期望某个BI商业化可视化东西不会因为这个名字的相似性而感到不悦!
无论怎么,Tabloo运用Flask后端为DataFrames供给一个简略的可视化东西,以及类似于PandasGUI的绘图才能。
运用Tabloo与PandasGUI十分相似。
importtabloo
tabloo.show(df)
Tabloo运用了像PandasGUI那样的查询语法,但我无法弄清楚怎么像PandasGUI那样增加多个过滤器。
最终,Tabloo确实也有一些根本的绘图功用,但它不像PandasGUI那样丰富。
Tabloo有一些有趣的概念,但没有像PandasGUI那样的才能。它现已有一段时间没有更新了,所以它或许处于休眠状态,但我想把它包括进来,以取得尽或许完好的查询。
Dtale
最终一个运用程序是Dtale,它是最杂乱的选项。Dtale的架构与Tabloo类似,它运用Flask后端,但也包括一个强壮的React前端。Dtale是一个老练的项目,有许多的文档和许多的功用。我将在这篇文章中只介绍一小部分功用。
开始运用Dtale与本类别中的其他运用程序类似。
importdtale
dtale.show(df)
这个视图给你一个提示,Dtale不仅仅是一个数据结构检查器。它是一个十分强壮的统计东西集。我不能在这儿介绍所有的增强功用,但这儿有一个快速比如,显现了单位价格列的直方图。
我十分喜爱Dtale的一个特点是,你能够导出代码并看到它在做什么。这是一个十分强壮的功用,使Excel+Python处理方案区别于一般的Excel。
下面是一个从上面的可视化中导出代码的比如。
#DISCLAIMER:’df’referstothedatayoupassedinwhencalling’dtale.show’
importnumpyasnp
importpandasaspd
ifisinstance(df,(pd.DatetimeIndex,pd.MultiIndex)):
df=df.to_frame(index=False)
#removeanypre-existingindicesforeaseofuseintheD-Talecode,butthisisnotrequired
df=df.reset_index().drop(‘index’,axis=1,errors=’ignore’)
df.columns=[str(c)forcindf.columns]#updatecolumnstostringsincasetheyarenumbers
s=df[~pd.isnull(df[‘{col}’])][[‘{col}’]]
chart,labels=np.histogram(s,bins=20)
importscipy.statsassts
kde=sts.gaussian_kde(s[‘unitprice’])
kde_data=kde.pdf(np.linspace(labels.min(),labels.max()))
#mainstatistics
stats=df[‘unitprice’].describe().to_frame().T
关于过滤数据的问题,Dtale也答应你对数据进行格局化。在下面的比如中,我对货币和日期列进行了格局化,使其更简略阅览。
正如我先前所说,Dtale是一个强壮的东西,有许多才能。假如你有兴趣,我鼓舞你检查一下,看看它是否合适你。
需求留意的一个方面是,在企图运转Dtale时,你或许会遇到Windows防火墙问题。在一个关闭的公司机器上,这或许是一个问题。关于各种装置选项的更多细节,请参考文档。
不论这个问题怎么,我以为它绝对值得检查一下Dtale,即使只是为了看看你能够运用的所有功用。
IDE变量检查器
假如你在VSCode或Spyder等东西中进行开发,你能够运用一个简略的DataFrame变量检查器。
例如,这儿是运用Spyder的变量资源管理器对咱们的DataFrame的检查。
假如你运用Spyder,这个检查器是十分方便的。你在GUI中没有任何过滤数据的才能,但你能够改动排序顺序。
VSCode也有一个类似的功用。下面是一个简略的视图,显现了你怎么过滤数据。
假如你现已在Spyder或VScode中进行作业,这些功用都很有用。但是,当涉及到杂乱的过滤或杂乱的数据剖析时,它们几乎没有Dtale的才能。
但我期望VSCode能持续改善他们的DataFrame检查器。现在看来,VSCode几乎能够做任何事情,所以我很想看看这个功用是怎么开展的。
PyXLL
前面说到的文章需求PyXLL包,这是一个商业运用。我对一个公司开发商业产品没有定见。我以为这对Python生态系统的成功至关重要。但是,一个付费的选项意味着你或许需求得到更多的支撑才能把它引进你的组织。幸运的是,你能够免费试用30天,看看它是否符合你的需求。
抛开这个留意事项,让咱们用咱们的比如数据集来试试。
真正强壮的是,你能够让notebook与Excel并列,并运用jupyter魔法指令在notebook和Excel之间交换数据。在这个比如中,运用%xl_setdf将直接把DataFrame放到Excel文件中。然后,你能够在混合模式下与Excel作业。
PyXLL在整合Python和Excel方面有许多不同的功用,所以很难将其与前面评论的结构进行比较。总的来说,我喜爱运用Excel的可视化组件加上Python编程的力量的想法。假如你对这种Python和Excel的结合感兴趣,你必定应该看看PyXLL。
xlwings
xlwings现已存在了一段时间,xlwings与PyXLL类似,它也是由一家商业公司支撑的。但是,它有一个开源的社区版,以及一个付费的专业版。这儿的比如运用的是社区版。完好的专业版xlwings软件包有几个不同的功用来整合Excel和Python。
虽然xlwings不能直接与Jupyternotebook集成,但你能够用DataFrame实时填充Excel电子表格并运用Excel进行剖析。
下面是一个简短的代码片段。
importpandasaspd
importxlwingsasxw
url=’https://github.com/chris1610/pbpython/blob/master/data/2018_Sales_Total_v2.xlsx?raw=True’
df=pd.read_excel(url)
#CreateanewworkbookandaddtheDataFrametoSheet1
xw.view(df)
这段代码将翻开一个新的Excel实例并将df放入A1单元格。下面是它的姿态。
这能够是一个快速的捷径,而不是保存并从头翻开Excel来检查你的数据。其实这样做很简略,所以我或许会在自己的数据剖析中多测验一些。
评论前必须登录!
注册