文章目录
1. Numpy
您可以在 Python 中执行基本数学运算,无需任何特殊软件包。但是,NumPy 可让复杂数学任务的编码变得更加容易。
NumPy 提供了帮助构建多维数组的工具。它可以对存储在其中的数据进行计算。您可以求解代数公式并执行常见的统计运算。
>>> import numpy as np
>>> a = np.arange( 15 ).reshape( 3 , 5 )
>>> a
数组([[ 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
>>>类型(a)
< class 'numpy.ndarray' >
>>> b = np.array([ 6 , 7 , 8 ])
>>> b
数组([ 6 , 7 , 8 ])
>>>类型(b)
< class 复制代码
NumPy 对于各种通用编程任务都很有价值。如果你想进行机器学习,它尤其重要。NumPy 为 TensorFlow 等库提供了部分基础。
2. Pendulum
如果你有一些 Python 经验,你可能知道 DateTime 模块。它有助于管理程序中的日期和时间。
DateTime 非常适合基本任务。但是,Pendulum 包可以更轻松地使用日期和时间进行更复杂的编码。Pendulum 使用起来更直观。它还可以自动处理时区。
import pendulum
now = 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.PIL 或 Pillow
您有一个可以处理图像的 Python 应用程序吗?
然后你需要 Python 图像库,也称为 PIL 或 Pillow。它可以帮助你编写代码来轻松打开、更改和保存图像。你可以处理许多不同类型的图像。
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()
如果您需要更高级的图像处理功能(例如图像识别),那么 Pillow 就不适合您。在这种情况下,OpenCV 会是一个不错的选择。但是,对于基本的图像导入、处理和导出,Pillow 是您的首选解决方案。
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread("C://gfg//tomatoes.jpg", 1)
# Loading the image
half = 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 = 4
for i in range(count):
plt.subplot(2, 2, i + 1)
plt.title(Titles[i])
plt.imshow(images[i])
plt.show()
4. MoviePy
MoviePy 用于视频。Pillow 用于图像。MoviePy 可以导入、更改和导出视频。它可以添加标题或旋转视频。但它不能进行高级更改。
弗或复杂的视频任务,请改用 OpenCV。OpenCV 适用于视频和图像。MoviePy 适用于 Python 中的大多数基本视频工作。
from skimage.filters import gaussian_filter
from moviepy.editor import VideoFileClip
def 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”。它通过自动执行许多繁琐的任务使发送 HTTP 请求变得非常简单。您无需添加查询字符串或进行 POST 表单编码。它还可以保持与 HTTP 服务器的连接处于活动状态,而无需编写大量代码。
import requests
from requests.exceptions import HTTPError
for 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 raised
response.raise_for_status()
except HTTPError as http_err:
print(f'HTTP error occurred: {http_err}') # Python 3.6
except Exception as err:
print(f'Other error occurred: {err}') # Python 3.6
else:
print('Success!')
简而言之,如果您的应用程序通过 HTTP 发送任何数据,则 Requests 包是必不可少的。
6. Tkinter
您想开发带有图形用户界面(GUI)的 Python 应用程序吗?
您可以使用许多 Python 包来制作 GUI。我们甚至可以列出前 10 个 Python GUI 框架。但大多数 Python 开发人员认为 Tkinter 是最常用和最重要的框架。Tkinter 允许您将 Tk GUI 工具包与 Python 一起使用。Tk 适用于几乎所有现代操作系统。
from tkinter import *
window = Tk()
window.title("Welcome to LikeGeeks app")
window.mainloop()
如果你不喜欢其他 GUI 工具包,那就使用 Tkinter。它是新 Python GUI 的最佳选择。
7. PyQt
Tkinter 是用 Python 制作 GUI 的好选择。PyQT 也是一个不错的选择。PyQT 可与 Qt 工具包配合使用,并可在不同的操作系统上使用。PyQT 比 Tkinter 更适合制作复杂的 GUI。如果您想制作具有基本界面的应用程序(例如带有按钮和文本框的窗口),请使用 Tkinter。但如果您想制作复杂的桌面应用程序(例如聊天程序),PyQT 更合适。
8.Pandas
有许多 Python 包可用于处理复杂数据集。然而,Pandas 无疑是最重要的。它可以帮助您处理和分析大量数据。您无需学习 R 等专门的数据处理语言。
Pandas 有局限性。它不适合高级统计建模。在这种情况下,您可能需要学习 R 或使用 Python 包(如 statsmodels)。但如果您需要执行以下操作,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
**Pywin32 是 Windows 上 Python 编程的必备软件包。**它允许您访问许多本机 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.py
import pytest
def test_capital_case():
assert capital_case('semaphore') == 'Semaphore'
def test_raises_exception_on_non_string_arguments():
with pytest.raises(TypeError):
capital_case(9)
11.Wget
这是一个免费的工具,可以从网络上下载非交互式文件。它支持 HTTP、HTTPS 和 FTP 协议,并通过 HTTP 代理检索文件。由于它是非交互式的,因此即使用户未登录,它也可以在后台运行。Wget 是从网站或页面下载所有图像的理想选择。
wget.download(url,bar=bar_thermometer)
12 Pendulum
Pendulum 是一款 Python 工具,可让您更轻松地处理日期和时间。您可以使用它来代替内置的 Python 日期和时间功能。对于需要将日期和时间放入 Python 代码中的程序员来说,它非常有用。
>>> import pendulum
>>> now_in_paris = pendulum.now( 'Europe/Paris' )
>>> now_in_paris
'2016-07-04T00:49:58.502116+02:00'
# 无缝时区切换
>>> now_in_paris.in_timezone( 'UTC' )
'2016-07-03T22:49:58.502116+00:00'
>>> tomorrow = pendulum.now().add(days= 1 )
>>> last_week = pendulum.now().subtract(weeks= 1 )
>>> past = pendulum.now().subtract(minutes= 2 )
>>> past.diff_for_humans()
'2 分钟前'
>>> delta = past - last_week
>>> delta.hours
23
>>> delta.in_words(locale= 'en' )
'6 days 23 hours 58 minutes'
# 正确处理日期时间规范化
>>> pendulum.datetime( 2013 , 3 , 31 , 2 , 30 , tz= 'Europe/Paris' )
'2013-03-31T03:30:00+02:00' # 2:30 不存在(跳过的时间)
# 正确处理 dst 转换
>>> just_before = pendulum.datetime( 2013 , 3 , 31 , 1 , 59 , 59 , 999999 , tz= 'Europe/Paris' )
'2013-03-31T01:59:59.999999+01:00'
>>> just_before.add(微秒= 1)
'2013-03-31T03:00:00 + 02:00'
13.Imbalanced-learn
大多数数据集中每个类别的样本数量不均衡。这使得人工智能很难学习和预测。Imbalanced-learn 是一个可以帮助解决这个问题的工具。如果你的数据不平衡,请尝试使用 Imbalanced-learn。
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics importbalanced_accuracy_score,classification_report from imblearn.over_sampling import SMOTE from sklearn.svm import SVC
# 生成不平衡数据集
X , y = make_classification(n_classes= 2 , class_sep= 2 , weights=[ 0.1 , 0.9 ], n_informative= 3 , n_redundant= 1 , flip_y= 0 ,
n_features= 20 , n_clusters_per_class= 1 ,
n_samples= 1000 , random_state= 10 )
# 将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )
# 对训练数据应用 SMOTE 过采样
smote = SMOTE(random_state= 42 )
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
# 创建 SVM 分类器
svm = SVC(kernel= 'linear' )
# 使用过采样数据拟合模型
svm.fit(X_resampled, y_resampled)
# 在测试集上评估模型
y_pred = svm.predict(X_test)
print ( "Balanced Accuracy:" ,balanced_accuracy_score(y_test, y_pred))
print (classification_report(y_test, y_pred))
14.FlashText
在 NLP 中,您经常需要在文本中查找或更改关键字。正则表达式是一种常用的方法。但是,如果您有很多关键字,正则表达式可能会很慢。FlashText 是一个可以提供帮助的 Python 工具。即使有很多关键字,它也能很好地工作。
https://github.com/vi3k6i5/flashtext
15.Fuzzywuzzy
这个名字听起来可能有点奇怪,但这个库对于字符匹配问题非常有用。它可以快速处理字符串相似性和标记匹配等任务。它还可以轻松匹配存储在不同数据库中的记录。
16.PyFlux
时间序列分析是机器学习中常见的问题。PyFlux 是一个为此目的而设计的开源 Python 库。它包含一系列优秀的现代时间序列模型,例如 ARIMA、GARCH 和 VAR。
17.Ipyvolume
此库可用于在 Jupyter 笔记本中可视化 3D 图形,例如 3D 图。不过,它目前处于 Beta 测试阶段。
18. Dash
Dash 是一款出色的 Python 工具,可用于制作 Web 应用。它使用 Flask、Plotly.js 和 React.js。您可以轻松添加下拉菜单、滑块和图表。您只需编写 Python 代码,无需 JavaScript。Dash 非常适合构建在 Web 浏览器中运行的数据可视化应用。
19.Bashplotlib
这是一个用于在终端中绘制基本图形的命令行工具。它允许您在没有 GUI 的情况下快速可视化数据。
https://github.com/glamp/bashplotlib
20. Colorama
Colorama 是一个 Python 工具,可让您在终端中打印彩色文本。它使用简单的代码来更改颜色和样式。Colorama 在 Windows 和 Linux 上均可很好地运行。