10个最常用的Python包,程序员必备!

世界上有超过200,000个Python程序包(这只是基于官方的Python程序包索引PyPI托管的程序包)。

这就引出了一个问题:拥有这么多的软件包,每个Python程序员都需要学习哪些软件包是最重要的?

为了帮助回答这个问题,下面列出了您应该熟悉的十个最重要,最有用和最普遍使用的Python程序包,因为在您从事各种项目时,它们经常会出现。

此列表重点关注涵盖多种编程场景和目标的Python软件包,而不是仅关注特定领域,例如数据科学或Web开发。这10个里面,你用过几个?请在评论区留言。

注:本文为英文翻译,整理并补充了代码示例。

 

1. Numpy

您可以执行基本的数学运算,而无需任何特殊的Python包。但是,如果您要进行任何复杂的数学运算,则NumPy软件包将使您的编码工作变得更加轻松。

NumPy提供了一些工具来帮助构建多维数组,并对存储在其中的数据进行计算。您可以求解代数公式,执行常见的统计运算等等。

>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0,  1,  2,  3,  4],[ 5,  6,  7,  8,  9],[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
15
>>> type(a)
<class 'numpy.ndarray'>
>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
<class 'numpy.ndarray'>

尽管NumPy是一个有价值的Python软件包,可用于执行各种通用编程任务,但如果您想进行机器学习,则NumPy尤为重要,因为它为TensorFlow之类的库提供了部分基础。

2. Pendulum

如果您至少有一点Python编程经验,则可能知道可以使用datetime模块来管理应用程序中的日期和时间。

尽管datetime非常适合这些方面的基础工作,但Pendulum Python软件包使执行涉及日期和时间的更复杂的编码变得更加容易。使用起来更加直观,并且可以自动管理时区。

import pendulumnow = pendulum.now("Europe/Paris")# Changing timezone
now.in_timezone("America/Toronto")# Default support for common datetime formats
now.to_iso8601_string()# Shifting
now.add(days=2)

最棒的是,Pendulum旨在替代datetime。这意味着您可以将其与已经基于datetime编写的代码一起使用。除了少数几个例外,Pendulum同样可以工作,无需修改代码,同时提供普通datetime所没有的其他功能。

3. Python 图片处理包

如果您的Python应用程序以任何方式与图像进行交互,则Python映像库(也称为PIL或Pillow)是Python必需的。它使编写以各种格式打开,修改和保存图像的代码变得容易。

from PIL import Image
#Open image using Image module
im = Image.open("images/cuba.jpg")
#Show actual Image
im.show()
#Show rotated Image
im = im.rotate(45)
im.show()

如果您要对图像进行更高级的处理(例如图像识别,在这种情况下,OpenCV将是一个不错的选择),Pillow不会自行裁切的。但是对于基本的图像导入,处理和导出,Pillow是您的首选解决方案。

import cv2
import numpy as np
import matplotlib.pyplot as pltimage = cv2.imread("C://gfg//tomatoes.jpg", 1)
# Loading the imagehalf = cv2.resize(image, (0, 0), fx = 0.1, fy = 0.1)
bigger = cv2.resize(image, (1050, 1610))stretch_near = cv2.resize(image, (780, 540), interpolation = cv2.INTER_NEAREST)Titles =["Original", "Half", "Bigger", "Interpolation Nearest"]
images =[image, half, bigger, stretch_near]
count = 4for i in range(count):plt.subplot(2, 2, i + 1)plt.title(Titles[i])plt.imshow(images[i])plt.show()

4. MoviePy

MoviePy代表视频,Pillow代表图像。它为与导入,修改和导出视频文件相关的常见任务提供了一系列功能。它还可以让您执行一些操作,例如将标题插入视频或将视频旋转90度(如果出于某种原因您决定这样做)。

像Pillow一样,MoviePy也不能用作高级数据操作的工具。如果您正在编写视频编辑应用程序,则可能还需要依靠OpenCV(它可以同时处理视频和图像)来提供MoviePy缺少的高级功能。但是对于涉及Python代码视频的大多数标准任务,MoviePy可以很好地完成工作。

from skimage.filters import gaussian_filter
from moviepy.editor import VideoFileClipdef blur(image):""" Returns a blurred (radius=2 pixels) version of the image """return gaussian_filter(image.astype(float), sigma=2)clip = VideoFileClip("my_video.mp4")
clip_blurred = clip.fl_image( blur )
clip_blurred.write_videofile("blurred_video.mp4")

5. requests

编写发送HTTP请求的代码可能很棘手,这在很大程度上要归因于HTTP并未以人类易于阅读的方式精确地格式化数据。

Requests Python程序包(座右铭:“ HTTP for Humans”)通过自动执行许多繁琐的任务来解决此问题,让发送HTTP请求变得异常简单。它消除了添加查询字符串或执行POST表单编码的需要。它还可以使与HTTP服务器的连接自动保持活动状态,从而无需编写大量代码。

import requests
from requests.exceptions import HTTPErrorfor url in ['https://api.github.com', 'https://api.github.com/invalid']:try:response = requests.get(url)# If the response was successful, no Exception will be raisedresponse.raise_for_status()except HTTPError as http_err:print(f'HTTP error occurred: {http_err}')  # Python 3.6except Exception as err:print(f'Other error occurred: {err}')  # Python 3.6else:print('Success!')

简而言之,如果您的应用程序通过HTTP发送任何数据,则请求是必不可少的程序包。

6. Tkinter

是否要开发具有图形用户界面(GUI)的Python应用程序?

有很多做图形界面的Python包(实际上,我们都可以来个Python GUI前十排行榜)。但是我认为大多数Python开发人员都会同意Tkinter是用于创建GUI的最重要且也是最常用的框架。它将Python绑定到TK GUI工具箱,该工具箱几乎可在所有现代操作系统上运行。

from tkinter import *window = Tk()window.title("Welcome to LikeGeeks app")window.mainloop()

除非您强烈希望使用其他GUI工具包,否则Tkinter可能是创建Python GUI的最佳起点。

7. PyQt

尽管前面大力推荐Tkinter,PyQT(另一个用于构建GUI的Python软件包)也是一个有力的竞争者。它提供了到Qt工具箱的绑定(您猜对了),该工具箱也是跨平台的。它比Tkinter用于重型GUI编程。这意味着如果您要构建具有非常简单的界面的应用程序(例如,只有带有一些按钮和文本字段的窗口),使用Tkinter就对了。但如果要构建一个很复杂的桌面程序,比如开发一个QQ程序,则PyQT会更适合。

图片

Qt Designer Python

8. Pandas

有大量的Python软件包设计用于处理复杂的数据集。但是可以说,Pandas是最重要的。Pandas可以帮助您处理和分析大量数据,而无需学习专门的数据处理语言(例如R)。

Pandas有其局限性,因为它不适合用于高级统计建模(在这种情况下,您可能想学习R或使用statsmodels之类的Python包)。但是,如果您需要执行诸如处理时间序列数据或对数据集进行统计分析之类的工作,Pandas可以为您服务。

In [5]: dates = pd.date_range("20130101", periods=6)In [6]: dates
Out[6]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'],dtype='datetime64[ns]', freq='D')In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))In [8]: df
Out[8]: A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988

9. Pywin32

特别是对于Windows Python编程,Pywin32是必备软件包。它提供对许多本机Windows API函数的访问,使您可以执行诸如与Windows注册表进行交互,使用Windows剪贴板等操作。

如果您要构建跨平台的Python应用程序,那么Pywin32并不能为您带来很多好处,但是Windows开发人员可能会发现他们非常喜欢它,以至于使用它代替了本机Windows工具。

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')excel.Visible = True
_ = input("Press ENTER to quit:")excel.Application.Quit()

10. Pytest

如果您有一个复杂的Python开发项目,那么对新代码执行测试就至关重要。Pytest软件包提供了各种模块来帮助您完成此任务。无论是简单的单元测试还是更复杂的功能测试,Pytest都可以帮助您编写它。

# test_capitalize.pyimport pytestdef test_capital_case():assert capital_case('semaphore') == 'Semaphore'def test_raises_exception_on_non_string_arguments():with pytest.raises(TypeError):capital_case(9)

如果您最喜欢的Python库或框架未在前十个必备Python软件包中列出此列表,请不要冒犯。Python生态系统已经生成了许多有价值的软件包,以至于即使在前100名列表中,也不可能包括所有重要软件包,更不用说前10名列表了。但是,对于通用Python编程,上述软件包基本是必备。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/10673.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

线上问题的排查-java死锁问题如何排查

这里写目录标题 1.java死锁如何排查2.具体步骤1.1识别死锁现象1.2收集线程转储1.3分析线程转储1.4代码审查1.5重现问题1.6使用调试工具1.7.优化和验证 3. 解决方案总结 1.java死锁如何排查 在Java应用程序中&#xff0c;死锁是一个经典的并发问题&#xff0c;它会导致线程永久阻…

shodan(4-5)

以下笔记学习来自B站泷羽Sec&#xff1a; B站泷羽Sec 1. 查看自己的出口IP 可以知晓自己是哪个IP连接的公网 shodan myip2. 指定标题搜索 http.title:内容搜索被挂黑页的网页&#xff1a;获得标题中含有hacked by的IP shodan search --limit 10 --fields ip_str,port htt…

三种风格截然不同的实验室工控界面

三种风格截然不同的实验室工控界面各具特色。一种可能是简洁现代风&#xff0c;以简洁的线条、纯净的色彩和直观的图标&#xff0c;呈现出高效与专业。 另一种或许是科技未来风&#xff0c;运用炫酷的光影效果和立体感十足的设计&#xff0c;展现实验室的前沿科技感。 还有一…

Redis如何保证数据不丢失(可靠性)

本文主要以学习为主&#xff0c;详细参考&#xff1a;微信公众平台 Redis 保证数据不丢失的主要手段有两个&#xff1a; 持久化 多机部署 我们分别来看它们两的具体实现细节。 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中&#xff08;如硬盘&#xf…

STM32F405RGT6单片机原理图、PCB免费分享

大学时机创比赛时画的板子&#xff0c;比到一半因为疫情回家&#xff0c;无后续&#xff0c;&#xff0c;&#xff0c;已打板验证过&#xff0c;使用stm32f405rgt6做主控 下载文件资源如下 原理图文件 pcb文件 外壳模型文件 stm32f405例程 功能 以下功能全部验证通过 4路…

“穿梭于容器之间:C++ STL迭代器的艺术之旅”

引言&#xff1a; 迭代器&#xff08;Iterator&#xff09;是C STL&#xff08;标准模板库&#xff09;中非常重要的一部分&#xff0c;它提供了一种统一的方式来遍历容器中的元素。无论容器是数组、链表、树还是其他数据结构&#xff0c;迭代器都能够以一致的方式访问这些数据…

jmeter常用配置元件介绍总结之用linux服务器压测

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之用linux服务器压测 1.编写测试脚本2.执行测试脚本 1.编写测试脚本 在linux服务器上进行压测&#xff0c;由于是没有界面的&#xff0c;因此我们可以先在界面上把压测脚本写好&#xff1a; 如图&#xff1a;我这里简单的写…

Ubuntu 的 ROS 操作系统安装与测试

引言 机器人操作系统&#xff08;ROS, Robot Operating System&#xff09;是一个用于开发机器人应用的开源框架&#xff0c;它提供了一系列功能丰富的库和工具&#xff0c;能够帮助开发者构建和控制机器人。 当前&#xff0c;ROS1的最新版本为Noetic Ninjemys&#xff0c;专为…

计算机组成原理——编码与纠错(汉明编码)

校验码放在2^x次方的位置——即1&#xff0c;2&#xff0c;4——将检测位按序排列p3p2p1 汉明编码从左到右数某个位置位1&#xff08;位数&#xff09;&#xff0c;就表示第几组 奇偶校验 例题 纠错过程 汉明编码的最小距离是3

fabric操作canvas绘图(1)共32节

对于前端而言&#xff0c;离不开canvas就像鱼离不开水&#xff0c;前端canvas神器fabric你值得拥有&#xff01;接下来我们就来一步步揭开她的面纱。 一、fabric的理解 用原生的canvas来实现&#xff0c;代码量会比较大&#xff0c;而且还要处理很多细节&#xff0c;而Fabric…

C++ 内存分布及 new , delete 分配问题( ~~~ 面试重要 ~~~)

文章目录 前言一、内存分布二、new 、delete 分配问题总结 前言 本篇文章笔者将会对 C 中的内存问题简单的讲解 , 同时对 new , delete 的面试题进行重点讲解. 一、内存分布 ● C语言和C 分布情况是一样的, 如下 : ● 栈 ○ 栈 的管理是由编译器自动管理 , 不需要我们人为做…

数据结构-哈夫曼树

一.什么是哈夫曼树 不同搜索树的效率是不一样的,根据不同的频率构造效率比较好或者最好的搜索树就是哈夫曼树 二.哈夫曼树的定义 将带权路径的长度降低最低 每个叶子节点到根节点的距离乘权值&#xff0c;再全都加起来就得到了WPL值 第一颗二叉树:从上到下计算 5x14x23x32x41…

双11精选网络安全书单:打造数字世界的钢铁长城!

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 &#x1f31f;双11火热来袭&#xff0c;网络安全书单推荐&#x1f680; 随着数字化浪潮的汹涌澎湃&#xff0c;网络安全已经成为了每个从业者不可回避的重要议…

WebGUI之Gradio:Gradio 5的简介、安装和使用方法、案例应用之详细攻略

WebGUI之Gradio&#xff1a;Gradio 5的简介、安装和使用方法、案例应用之详细攻略 目录 Gradio 5的简介 1、Gradio的适用场景 2、Gradio 5 的主要改进包括&#xff1a; Gradio 5的安装和使用方法 1、安装和使用方法 2、使用方法 2.1、文本内容 (1)、简单的输入/输出组件…

初始Python篇(5)—— 集合

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 集合 相关概念 集合的创建与删除 集合的操作符 集合的相关操作方法 集合的遍历 集合生成式 列表、元组、字典、集合的…

探索Python的Shell力量:Plumbum库揭秘

文章目录 探索Python的Shell力量&#xff1a;Plumbum库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;Plumbum是什么&#xff1f;第三部分&#xff1a;如何安装Plumbum&#xff1f;2. 创建管道3. 重定向4. 工作目录操作5. 前台和后台执行 第五部分&#xff1a;场景应用…

大模型时代,算法岗到底哪个最有前景?什么样的算法工程师更吃香?

毫无疑问&#xff0c;全栈型的算法工程师将更为抢手&#xff0c;如果你精通大模型从训练到应用的整个流程&#xff0c;你走到哪里都不怕。 但往往人的精力有限&#xff0c;如果从数据、预训练、微调、对齐、推理、应用几个方面来看的话&#xff0c;个人觉得 “预训练>数据&…

Linux系统之sleep命令的基本使用

Linux系统之sleep命令的基本使用 一、sleep命令介绍二、sleep的使用帮助2.1 查看帮助信息2.2 基本语法 三、sleep命令的基本使用3.1 指定暂停时间长度3.2 结合多个时间单位 四、在脚本中应用五、注意事项 一、sleep命令介绍 sleep命令是一个在Unix和类Unix操作系统中常见的命令…

《Java核心技术 卷I》Swing处理2D图形

处理2D图形 Java1.0开始&#xff0c;Graphics类就包含绘制直线、矩形和椭圆等方法&#xff0c;但是绘制图形的操作能力有限&#xff0c;我们将使用Java2D的图形库。想绘制需要获得Graphics2D类的一个对象&#xff0c;是Graphics的子类。paintCompoent方法接收一个2D类对象&…

MySQL:客户端工具创建数据库

MySQL 是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储、管理和检索数据。MySQL是基于SQL语言的&#xff0c;它具有高效、可靠、易用的特点。 客户端工具 这个mysqld.exe就在计算机安装的数据可服务&#xff0c;启动之后&#xff0c;mys…