2018年,20大Python数据科学库都做了哪些更新?

user_zhou 6年前
   <p>2018年,Python仍然是数据科学领域解决重大任务和挑战的佼佼者。去年,我们发了一篇博文,列举了一些被证明是最有用的Python库。今年,我们扩充了原来的清单,并重新审视之前讨论过的库,重点关注在过去一年内出现的更新。我们对它们进行了分组,排序不分先后,因为真的说不清它们哪个更好。</p>    <h3>核心库与统计</h3>    <p>1. NumPy(提交:17911,贡献者:641)</p>    <p>一般我们会将科学领域的库作为清单打头,NumPy是该领域的主要软件库之一。它旨在处理大型的多维数组和矩阵,并提供了很多高级的数学函数和方法,因此可以用它来执行各种操作。</p>    <p>在过去一年,开发团队对该库进行了大量改进。除了错误修复和解决兼容性问题之外,关键的变更还包括样式改进,即NumPy对象的打印格式。此外,一些函数现在可以处理任意编码的文件,只要这些编码受Python支持。</p>    <p>2. SciPy(提交:19150,贡献者:608)</p>    <p>另一个科学计算核心库SciPy,基于NumPy而构建,并扩展了NumPy的功能。SciPy的主要数据结构是多维数组,使用Numpy实现。该库提供了一些用于解决线性代数、概率论、积分计算等任务的工具。</p>    <p>SciPy通过与不同的操作系统进行持续集成的方式带来了重大改进,比如新的函数和方法,更重要的是——最新的优化器。此外,开发团队对很多新的BLAS和LAPACK函数进行了包装。</p>    <p>3.Pandas(提交:17144,贡献者:1165)</p>    <p>Pandas是一个Python库,提供了高级的数据结构和各种分析工具。该库的一大特色是能够将相当复杂的数据操作转换为一两个命令。Pandas提供了很多内置的方法,用于分组、过滤和组合数据,还提供了时间序列功能。所有这些方法的执行速度都很快。</p>    <p>新发布的pandas库还提供了数百个新特性、功能增强、错误修复和API变更。这些改进与Pandas对数据进行分组和排序的能力有关,支持自定义类型操作。</p>    <p>4. StatsModels(提交:10067,贡献者:153)</p>    <p>Statsmodels是一个Python模块,为统计数据分析提供了很多可能性,例如统计模型估计、运行统计测试等。你可以借助它来实现很多机器学习方法,并探索不同的绘图可能性。</p>    <p>该库在不断演化,带来了更多的可能性。今年带来了时间序列改进和新的计数模型GeneralizedPoisson、零膨胀模型和NegativeBinomialP,以及新的多变量方法因子分析、MANOVA和ANOVA的重复测量。</p>    <h3>可视化</h3>    <p>5. Matplotlib(提交:25747,贡献者:725)</p>    <p>Matplotlib是一个用于创建二维图表和图形的低级库。你可以用它来构建各种图表,从直方图和散点图到非笛卡尔坐标图。此外,很多流行的绘图库都为Matplotlib预留了位置,可与Matplotlib结合在一起使用。</p>    <p>该库在绘图样式方面做出了很多变更,如颜色、尺寸、字体、图例等。例如,坐标轴图例的自动对齐和对色盲患者更友好的色环。</p>    <p><img src="https://simg.open-open.com/show/bb385c8d13d73d802d215c85d80ee762.jpg" alt="2018年,20大Python数据科学库都做了哪些更新?" width="1090" height="416"></p>    <p>6. Seaborn(提交:2044,贡献者:83)</p>    <p>Seaborn实际上是基于matplotlib库构建的高级API。它为处理图表提供了更恰当的默认选项。此外,它还提供了一组丰富的可视化图库,包括时间序列、联合图和小提琴图等复杂的类型。</p>    <p>Seaborn的更新主要是问题修复。不过,FacetGrid(或PairGrid)与增强的交互式matplotlib后端之间的兼容性有所改进,为可视化添加了参数和选项。</p>    <p><img src="https://simg.open-open.com/show/4ad4c7095605c5a31fb6e47030a511b3.jpg" alt="2018年,20大Python数据科学库都做了哪些更新?" width="821" height="279"></p>    <p>7. Plotly(提交:2906,贡献者:48)</p>    <p>Plotly是一个可以帮助你轻松构建复杂图形的流行库。该库适用于交互式Web应用程序,它提供了很多很棒的可视化效果,包括轮廓图形、三元图和3D图表。</p>    <p>这个库在持续地增强和改进,带来新的图形和特性,支持“多链接视图”、动画和串扰集成。</p>    <p>8. Bokeh(提交:16983,贡献者:294)</p>    <p>Bokeh库使用JavaScript小部件在浏览器中创建交互式和可伸缩的可视化图形。该库提供了多种图形、样式、链接图形式的交互能力、添加小部件、定义回调以及更多有用的功能。</p>    <p>Bokeh改进的交互式功能值得称赞,例如可旋转的分类刻度标签,以及小型的缩放工具和自定义工具提示字段增强。</p>    <p><img src="https://simg.open-open.com/show/c1097401e081f884cc1d078535d38a51.jpg" alt="2018年,20大Python数据科学库都做了哪些更新?" width="433" height="431"></p>    <p>9. Pydot(提交:169,贡献者:12)</p>    <p>Pydot是一个用于生成面向复杂图形和非面向复杂图形的库。它作为面向Graphviz的一个接口,使用Python编写。我们可以借助它来显示图形的结构,这在构建神经网络和基于决策树的算法时经常会用到。</p>    <p><img src="https://simg.open-open.com/show/457fada6f2c36673691dc04c22174b86.png" alt="2018年,20大Python数据科学库都做了哪些更新?" width="351" height="604"></p>    <h3>机器学习</h3>    <p>10. Scikit-learn(提交:22753,贡献者:1084)</p>    <p>这个基于NumPy和SciPy的Python模块是处理数据的最佳库之一。它为很多标准的机器学习和数据挖掘任务提供算法,例如聚类、回归、分类、降维和模型选择。</p>    <p>该库有很多增强功能。交叉验证已经获得更新,现在可以使用多个指标。一些训练方法(如邻近取样和逻辑回归等)得到一些小改进。它的主要更新之一是完成了通用术语和API元素词汇表。</p>    <p>11. XGBoost/LightGBM/CatBoost(提交:3277/1083/1509,贡献者:280/79/61)</p>    <p>梯度提升是最流行的机器学习算法之一,它的核心原理在于构建连续精炼的基本模型的集合,即决策树。因此,有些专门的库被设计用于方便快速地实现该方法。我们认为XGBoost、LightGBM和CatBoost是值得关注的。它们都是解决常见问题最强有力的工具,而且使用方式几乎一样。我们可以使用这些库快速实现高度优化且可扩展的梯度提升,所以它们在数据科学家和Kaggle竞争者中非常受欢迎,他们在这些算法的帮助下赢得了很多比赛。</p>    <p>12. Eli5(提交:922,贡献者:6)</p>    <p>通常情况下,机器学习模型的预测结果并不完全是清晰的,这个时候可以借助Eli5来解决这个问题。它是一个用于可视化和调试机器学习模型的库,可以逐步跟踪算法的执行过程。它支持scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite库,并可以为每个库执行不同的任务。</p>    <h3>深度学习</h3>    <p>13. TensorFlow(提交:33339,贡献者:1469)</p>    <p>TensorFlow是一个流行的深度学习和机器学习框架,由Google Brain开发。它支持在人工神经网络中使用多个数据集。最受欢迎的TensorFlow应用场景包括物体识别、语音识别等。还有很多基于TensorFlow构建的库,例如tflearn、tf-slim、skflow等。</p>    <p>这个库发布新版本的速度很快,引入了很多新功能。最新的修复包括潜在的安全漏洞和改进的TensorFlow与GPU的集成,现在可以在单台计算机的多个GPU上运行Estimator模型。</p>    <p>14. PyTorch(提交:11306,贡献者:635)</p>    <p>PyTorch是一个大型框架,可用它基于GPU加速执行张量计算、创建动态计算图以及自动计算梯度。此外,PyTorch还提供了丰富的API,用于解决与神经网络相关的应用。</p>    <p>该库基于Torch而构建,使用C语言实现,并包含了使用Lua编写的包装器。它的Python API于2017年推出,从那时起,该框架越来越受欢迎,并吸引了越来越多的数据科学家。</p>    <p>15. Keras(提交:4539,贡献者:671)</p>    <p>Keras是一个用于处理神经网络的高级库,运行在TensorFlow或Theano之上,现在发布的新版本可以使用CNTK或MxNet作为后端。它简化了很多特定任务,并大大减少了样板代码的数量,但它可能不适用于某些复杂的事情。</p>    <p>该库在性能、可用性、文档和API方面进行了改进,并推出了一些新特性,如Conv3DTranspose层、新的MobileNet应用程序和自我规范化网络。</p>    <h3>分布式深度学习</h3>    <p>16. dist-keras/elephas/spark-deep-learning(提交:1125/170/67,贡献者:5/13/11)</p>    <p>深度学习问题变得越来越重要,因为越来越多的场景要求更多的时间和成本。而像Apache Spark这样的分布式计算系统可以更轻松地处理大量数据,这反过来又为深度学习带来更多的可能性。dist-keras、elephas和spark-deep-learning变得越来越流行,并正在迅速发展演化。很难说它们当中哪个更好,因为它们都是为解决一些相同的任务而设计的。这些库和Keras可以直接用在Apache Spark中,用以训练神经网络。spark-deep-learning还提供了工具用于为Python神经网络创建管道。</p>    <h3>自然语言处理</h3>    <p>17. NLTK(提交:13041,贡献者:236)</p>    <p>NLTK是一组库的集合,一个完整的自然语言处理平台。你可以借助NLTK以各种方式处理和分析文本,如标记、打标签、提取信息等。NLTK还用于原型设计和构建研究性系统。</p>    <p>该库的增强还包括API和兼容性的微小变更以及面向CoreNLP的新接口。</p>    <p>18. SpaCy(提交:8623,贡献者:215)</p>    <p>SpaCy是一个自然语言处理库,包含了优秀的示例、API文档和演示应用程序。该库使用Cython(Python的C扩展)编写。它支持将近30种语言,可以方便地与深度学习集成,并保证健壮性和高准确率。SpaCy有一个为处理整个文档而设计的架构,在处理文档时不需要将它分成短语,这也是SpaCy的一个重要特性。</p>    <p>19. Gensim(提交:3603,贡献者:273)</p>    <p>Gensim基于Numpy和Scipy而构建,是一个用于语义分析、主题建模和向量空间建模的Python库。它提供了主流的NLP算法实现,例如word2vec。Gensim有自己的models.wrappers.fasttext实现,不过仍然可以使用fasttext库进行单词表示的高效学习。</p>    <h3>数据抓取</h3>    <h3>20. Scrapy(提交:6625,贡献者:281)</h3>    <p>Scrapy是一个用于创建扫描网站页面并收集结构化数据的爬虫的库。此外,Scrapy可以从API中提取数据。因为具备良好的可扩展性和可移植性,该库使用起来非常方便。</p>    <p>该库在过去一年里的变化包括代理服务器的若干次升级以及改进的错误通知和问题识别系统。用在元数据设置中的Scrapy解析也有了新的特性。</p>    <h3>结论</h3>    <p>这些是我们列出的2018年数据科学Python库的集合。与去年相比,一些新的库越来越受欢迎,而那些经典库也正在不断改进。</p>    <p>下面的表格显示了这些库在Github上的活动统计信息。</p>    <p><img src="https://simg.open-open.com/show/10ae5dbf88a8638b3a3b70d8e6c8362d.png" alt="2018年,20大Python数据科学库都做了哪些更新?" width="1200" height="1379"></p>    <p>各个库的链接地址:</p>    <p>NumPy: <a href="/misc/goto?guid=4958541272734249107" rel="nofollow,noindex">http://www.numpy.org/</a></p>    <p>SciPy: <a href="/misc/goto?guid=4959757995565376894" rel="nofollow,noindex">https://scipy.org/scipylib/</a></p>    <p>Pandas: <a href="/misc/goto?guid=4959757995666949743" rel="nofollow,noindex">https://pandas.pydata.org/</a></p>    <p>StatsModels: <a href="/misc/goto?guid=4959757995753749211" rel="nofollow,noindex">http://www.statsmodels.org/devel/</a></p>    <p>Matplotlib: <a href="/misc/goto?guid=4959757995838115495" rel="nofollow,noindex">https://matplotlib.org/index.html</a></p>    <p>Seaborn: <a href="/misc/goto?guid=4959757995917597904" rel="nofollow,noindex">https://seaborn.pydata.org/</a></p>    <p>Plotly: <a href="/misc/goto?guid=4958973120380242217" rel="nofollow,noindex">https://plot.ly/python/</a></p>    <p>Bokeh: <a href="/misc/goto?guid=4959757996026609036" rel="nofollow,noindex">https://bokeh.pydata.org/en/latest/</a></p>    <p>Pydot: <a href="/misc/goto?guid=4959757996111088851" rel="nofollow,noindex">https://pypi.org/project/pydot/</a></p>    <p>Scikit-learn: <a href="/misc/goto?guid=4958541835409101228" rel="nofollow,noindex">http://scikit-learn.org/stable/</a></p>    <p>XGBoost: <a href="/misc/goto?guid=4959757996225720244" rel="nofollow,noindex">http://xgboost.readthedocs.io/en/latest/</a></p>    <p>LightGBM: <a href="/misc/goto?guid=4959757996318729094" rel="nofollow,noindex">http://lightgbm.readthedocs.io/en/latest/Python-Intro.html</a></p>    <p>CatBoost: <a href="/misc/goto?guid=4959757996401231351" rel="nofollow,noindex">https://github.com/catboost/catboost</a></p>    <p>Eli5: <a href="/misc/goto?guid=4959757996484769516" rel="nofollow,noindex">https://eli5.readthedocs.io/en/latest/</a></p>    <p>TensorFlow: <a href="/misc/goto?guid=4958974442727004844" rel="nofollow,noindex">https://www.tensorflow.org/</a></p>    <p>PyTorch: <a href="/misc/goto?guid=4959757996593900065" rel="nofollow,noindex">https://pytorch.org/</a></p>    <p>Keras: <a href="/misc/goto?guid=4959741470403953949" rel="nofollow,noindex">https://keras.io/</a></p>    <p>dist-keras: <a href="/misc/goto?guid=4959757996705692654" rel="nofollow,noindex">http://joerihermans.com/work/distributed-keras/</a></p>    <p>elephas: <a href="/misc/goto?guid=4959757996796964224" rel="nofollow,noindex">https://pypi.org/project/elephas/</a></p>    <p>spark-deep-learning: <a href="/misc/goto?guid=4959757996877692423" rel="nofollow,noindex">https://databricks.github.io/spark-deep-learning/site/index.html</a></p>    <p>NLTK: <a href="/misc/goto?guid=4959757996961383279" rel="nofollow,noindex">https://www.nltk.org/</a></p>    <p>SpaCy: <a href="/misc/goto?guid=4959757997040622197" rel="nofollow,noindex">https://spacy.io/</a></p>    <p>Gensim: <a href="/misc/goto?guid=4959726602567638704" rel="nofollow,noindex">https://radimrehurek.com/gensim/</a></p>    <p>Scrapy: <a href="/misc/goto?guid=4959735890259488368" rel="nofollow,noindex">https://scrapy.org/</a></p>    <p>查看英文原文: <a href="/misc/goto?guid=4959757997185967343" rel="nofollow,noindex">https://www.kdnuggets.com/2018/06/top-20-python-libraries-data-science-2018.html</a></p>    <p>感谢蔡芳芳对本文的审校。</p>    <p> </p>    <p>来自:http://www.infoq.com/cn/news/2018/07/20-python-libraries-data</p>    <p> </p>