人人都喜欢用的十大python标准库

2022 年你必须知道的 10 个 Python 库 Python 是最流行和使用最广泛的编程语言之一,已经取代了业内的许多编程语言。Python 在开发人员中流行的原因有很多,其中之一是它拥有大量用户可以使用的库。要了解有关 Python 的更多信息,您可以立即加入我们的Python 认证课程。以下是 Python 受欢迎的几个重要原因:Python 拥有大量的库。Python 是一种初学者级别的编程语言,因为它简单易用。从开发到部署和维护 Python 希望他们的开发人员更有效率。可移植性是 Python 大受欢迎的另一个原因。 阅读详情

在这里插入图片描述
Python有以下三个特点:

· 易用性和灵活性

· 全行业高接受度:Python无疑是业界最流行的数据科学语言

· 用于数据科学的Python库的数量优势
做为当今人工智能和机器学习领域最流行的编程语言之一。Python 以其有用的库和包而著称,即使没有软件工程背景的人也能编程。 本文基于 GitHub 仓库的示例数据集,探索流行的 Python 标准库。

Python 拥有一组与 Python 语言一起分发的标准库,如 DateTime、math 或 Random。本文的目标是在 GitHub 的 Python 仓库中找到 10 个最有用的标准库。为实现我们的目标,我们研究了 GitHub 中不同的 Python 仓库,并收集了它们的旧库来回答这个问题。

为了开始我们的研究,首先,我们收集了 GitHub 中 5 个著名的 Python 资源库在过去一年的提交情况。然后,我们对这些仓库中的 Python 源文件进行解析,并收集其提交中使用的库。最后,我们将这些 GitHub 仓库提交中使用的 10 个最流行的 Python 标准库进行可视化。如果有想跟我们一起交流学习的可以来扣扣裙(609616821)互相交流哦

用于数据收集的Python库

你是否曾遇到过这样的情况:缺少解决问题的数据?这是数据科学中一个永恒的问题。这也是为什么学习提取和收集数据对数据科学家来说是一项非常重要的技能。数据提取和收集开辟了前所未有的道路。

有不同的方法可以访问 GitHub 仓库中的数据,例如 GitHub torrent、Git API 调用或 Google big query。但是,在本文中,我们想要尝试一个新的非常有用的 Python 包,名为 Pydriller,它可以收集我们需要的数据。Pydriller 速度快,使用方便。我是在攻读博士学位的时候熟悉了这个有趣的包。你可以在 这里 查看 Pydriller 的文档。要从 Pydriller 开始,首先,我们安装包:

pip install pydriller

每次提交时,GitHub 中的一个或多个源文件都可以被修改。在 GitHub 这样的版本控制系统中,每一次提交都有一个文件,名为“diff”。它通过提交特定的提交来存储在源文件中应用的更改。在 GitHub 仓库的提交中查找库的方法之一是在“diff”文件中搜索正则表达式。

但在本文中,我们想尝试一些不同的方法。我们比较两个不同版本的源文件“提交之前”和“提交之后”应用提交,然后收集这两个文件在库名中的差异。

通过这种方法,我们就可以发现库在不同提交中的使用频率。好消息是,Pydriller 允许我们在应用提交之前和应用提交之后访问源文件的版本。下面是收集数据所需的代码:

#import libraries
import pydriller as pyd
from datetime import datetime
#period to collect data
dt1 = datetime(2019, 11, 1)
dt2 = datetime(2020, 11, 1)
#path of 5 Python repositories
path = ["https://github.com/django/django.git","https://github.com/pandas-dev/pandas.git",
        "https://github.com/numpy/numpy","https://github.com/home-assistant/home-assistant.git",
        "https://github.com/donnemartin/system-design-primer.git"]
#collecting a version of a source file before and after applying a commit
tf_source = pd.DataFrame(columns=['commit_ID', 'before_Commit', 'after_Commit'])
for commit in pyd.RepositoryMining(path_to_repo=path, since=dt1, to=dt2).traverse_commits():
    for modified_file in commit.modifications:
        if modified_file.filename.endswith(".py"):
            tf_source = tf_source.append({
   
   'commit_ID': commit.hash,'before_Commit': modified_file.source_code_before,
                                          'after_Commit': modified_file.source_code}, ignore_index=True)

用 Pydriller 在 GitHub 中收集 5 个著名的 Python 库。

我们在 GitHub 上收集了 5 个大的 Python 项目在去年的提交情况,其中有 Django、Pandas、NumPy、Homeassistant、system-design-primer。“RepositoryMining”是 Pydriller 的主要 API 调用之一。

我们可以通过 RepositoryMining 中的两个参数来定义一个时间段来收集不同仓库中的提交:since和to。另外,我们考虑所有名称以“.py”结尾的源文件的提交,因为这些资源库中也有其他编程语言的源文件,但我们关注的是 Python 库。

我们收集了三个特征:commit.hash、source_code_before、source_code。Pydriller 中的commit.hash返回提交的id,source_code_before是应用提交前的源文件版本,source_code则显示提交后的源文件内容。下面是我们收集的数据头:
在这里插入图片描述 tf_source.head()
到目前为止,我们已经收集了开始旅程所需的数据。在下一节中,我们将学习如何探索这些源文件中的库。

如何解析 Python 源代码

提取源代码中信息的方法之一是将它们转换成抽象语法树(Abstract Syntax Tree,AST)。然后,我们就可以遍历这棵树,并收集目标节点。

但最重要的一点是,我们只想收集 Python 标准库,而不是所有在仓库中使用的包,比如本地定义的库,它们只有在仓库中才有意义。Python 标准库是和 Python 语言一起发布的。

因此,为了将标准包和其他包分开,我们需要拉取 Python 中所有有效的标准库。然后,我们可以写一个函数来收集源代码中的库名。

我们可以将本节分为两步:收集 Python 中所有可用的标准库的列表、构建基于抽象语法书的函数来收集库名。
在这里插入图片描述

1. 收集 Python 中所有可用的标准库的列表

在 Python 的网站 上,有一张 Python 中所有标准库的列表,并附有简短说明。这个页面将所有的 Python 标准库按字母名称排序,帮助我们对 Python 中所有的标准库进行拉取。我把所有 Python 标准库的列表放在 这里,以 .csv 的格式。

2. 构建基于抽象语法书的函数来收集库名

既然我们有了所有标准 Python 库的列表,我们就需要从 Python GitHub 仓库中收集我们示例数据集中的库名称。正如我们提到的,其中一种方法是遍历抽象语法树。

在本文中,我们的目标节点是import和importfrom。我们希望有一个函数遍历解析树,找到目标节点,并返回库的名称。下面是这样做的类。

#import libraries
import ast
import tokeni
1、开启Python编程之旅:优势、特点与语言基础解析 本文介绍了Python编程语言的优势和特点,并深入解析了编程语言的基础知识,包括自然语言与符号语言的区别、编程语言的结构以及低级别和高级别语言的不同。同时,还讨论了Python在多个领域的广泛应用,并为初学者提供了学习建议和未来发展方向。无论你是编程新手还是有一定经验的开发者,都能从中获得有价值的知识。 阅读详情

相关推荐

1、Python编程入门:开启无限可能的数字世界

本文介绍了Python编程的基础知识及其在数字世界中的广泛应用。从程序员的职业优势到Python语言的特点,再到编程语言的分类与执行过程,全面展示了学习Python的重要性和实用性。无论你是编程新手还是希望深入学习者,都能从中获得启发和指导。

ol789012345的博客 71

1、开启Python编程之旅:从入门到精通

本文全面介绍了Python编程语言的魅力与优势,从编程的基础概念讲起,深入探讨了Python的特性、应用领域以及未来发展前景。文章还为初学者提供了系统的学习路径、优质学习资源和实用的学习建议,帮助读者从入门到精通,开启属于自己的编程之旅。无论你是编程新手还是希望提升技能的开发者,都能从中获得宝贵的知识和启发。

numpy6sculptor的博客 107

1、开启Python编程之旅:优势、选择与语言基础

本文介绍了编程的魅力与成为程序员的十大优势,重点推荐Python作为入门语言,阐述了其简洁高效、语法友好、多用途等特点。文章详细讲解了编程语言的基础知识,包括自然语言与符号语言的区别、编程语结构、低级与高级语言分类以及编程范式。同时对比了编译器与解释器的工作原理和优缺点,并提供了系统的学习路径建议、资源推荐与学习技巧,帮助初学者顺利开启Python编程之旅。

ik678901的博客 42

1、Python编程:开启无限可能的世界

本文深入探讨了Python编程的魅力与优势,阐述了为何Python是开启编程世界的理想选择。文章从编程的基础概念出发,介绍了语言分类、代码结构、编程语言类型及翻译执行机制,并分析了程序员的职业发展路径与未来科技趋势。无论是初学者还是进阶者,都能从中获得关于Python和编程领域的全面认知,激发学习热情,探索无限可能的数字世界。

pca5navigator的博客 53

计算机系统自学路线图:从C语言到虚拟内存与安全防护

程序运行的本质,是高级语言、汇编指令与操作系统机制层层协作的结果。从C语言中指针和内存布局的细节,到大小端字节序对数据解析的影响,再到虚拟内存如何为进程构建独立地址空间,每一个基础概念都直接关系到线上崩溃和性能问题的排查效率。理解这些原理,不仅能让开发者看懂汇编视图中的栈帧与返回地址,也能在遇到段错误、数据竞争或缓冲区溢出时快速定位根因。无论你是学生还是业务开发者,透过实验亲手验证链接加载、进程并发、系统IO与网络编程的底层逻辑,都是一条高效的系统能力进阶路径。这份开源教程,正是这样一套覆盖计算机系统十大主

weixin_42525328的博客 258

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

在信息化时代,操作系统是数字世界的基石,而终端命令行则是高效驾驭服务器的核心技能。无论是软件部署、服务监控还是故障排查,掌握基于Shell的指令操作都能大幅提升工程效率。从最基础的文件目录管理、文本处理,到权限控制、进程监控与网络调试,命令行提供了一套强大且可自动化的操作范式。尤其对于运维工程师和开发者而言,理解管道、重定向以及脚本化任务,意味着将重复劳动转化为可复用的自动化流程。本文从环境准备讲起,系统梳理常用Linux命令的实际场景与输出验证,并延伸至Shell脚本编写与定时任务,帮助初学者快速建立从操

weixin_30522983的博客 258

logisim实验——通过2个半加器实现1-bit全加器,通过4个一位全加器构成4-bit加法器(详解)

一、由异或门和与门所构成的半加器: 二、由两个半加器构成的1-bit全加器: ..

zep 1万+

虚拟零售智能客服架构设计:如何用大模型实现多轮对话与精准推荐?

想象一下,当你在一个电商平台购物时,遇到了一个能像你的专属导购一样,不仅能听懂你模糊的需求(“我想买一件适合夏天去海边玩,又能兼顾日常通勤的裙子”),还能记得你之前提到的尺码偏好和预算,甚至在你犹豫时,主动推荐几款符合你风格且正好有促销活动的商品——这不再是科幻电影中的场景,而是基于大语言模型(LLM)技术的新一代虚拟零售智能客服能够提供的体验。这一层是我们架构设计的重点,会在后续章节详细展开。如基于CRF、RNN的模型,或基于规则的状态更新,通常需要大量标注的对话状态数据,且对新领域、新槽位的适应性差。

Java大师兄的博客 1591

MTK MT6833平台屏幕与TP驱动移植实战:从FAE伪代码到内核模块集成

本文详细介绍了在MTK MT6833平台上进行屏幕与TP驱动移植的完整实战流程。文章从解析供应商提供的初始化伪代码入手,逐步拆解了在LK阶段点亮屏幕、在内核层集成Panel驱动以支持休眠唤醒,以及移植并调试sitronix_ts触摸驱动的核心步骤与关键技巧,为嵌入式开发人员提供了从零到一集成新硬件的清晰指南。

rnn9storyteller的博客 442

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

手推反向传播+numpy实现

反向传播的重要性不必多说,手推也是必备基础,大厂面试要求用numpy实现一下BP也是经常的事。下面以一个简单的两层网络为例(简单到连bias都没有的那种),真·手推反向传播+numpy实现。 说明: input:输入 net_h:隐层 S(x):sigmoid简写 SD(x):sigmoid导数的简写 out_h:隐层经过sigmoid激活的输出 net_o:输出层 out_o:经过经过sigmoid激活的输出层,也就是最后的输出 target(简写t1、t2):Ground...

xian0710830114的专栏 1238

(02)Cartographer源码无死角解析-(81) ROS栅格地图→服务接收子图、cairo图像绘详解、OccupancyGrid地图发布

疑问1疑问1src/cartographer/cartographer/mapping/2d/probability_grid.cc 文件中的 ProbabilityGrid::DrawToSubmapTexture 函数的 proto::SubmapQuery::Response::SubmapTexture* 示例对象 texture 中texture->mutable_slice_pose() 的含义具体是什么。

江南才尽江南山,年少无知年少狂! 1931

最小二乘(MLS)求点云法向量

MLS算法的基本思想是通过在点云的局部邻域内拟合一个光滑曲面,如平面或多项式曲面,以此来重建和处理点云数据。对于法向量估计,MLS通常在每个点的邻域内拟合局部平面,然后从该平面的法向量作为点的法向量。

twnkie的博客 744

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 如何用python做一个简单好用的计算器
下一篇: 抢茅台脚本居然用的Python,我们Python真是太强大了---图拉夫
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值