6个令大喵惊喜的 Python 库
在过去的两年里,我一直在广泛使用Python。因此,我一直在寻找令人惊叹的库,可以增强我在数据工程和商业智能项目中的工作。
1.Pendulum
Python 中有许多库可用于日期时间,但我发现 Pendulum 在日期的任何操作上都易于使用。
Pendulum扩展了内置的 Python 日期时间模块,添加了更直观的 API,用于处理时区并对日期和时间执行操作:
例如添加时间间隔、减去日期和在时区之间转换。它提供了一个简单、人性化的 API 来格式化日期和时间。
1、安装
pip install pendulum
2、实例化时区和时区换算:
# 导入库
# import library
import pendulum
dt = pendulum.datetime(2023, 6, 8)
print(dt)
输出:
2023-06-08T00:00:00+00:00
2.2 local() 使用本地时区
#local() 使用本地时区
local = pendulum.local(2023, 6, 8)
print("本地时间:", local)
print("本地时区:", local.timezone.name)
输出:
本地时间: 2023-06-08T00:00:00+08:00
本地时区: Asia/Shanghai
2.3 创建日期时间实例
# Printing UTC time
utc = pendulum.now('UTC')
print("Current UTC time:", utc)
输出:
Current UTC time: 2023-06-08T10:44:51.856673+00:00
2.4 将 UTC 时区转换为欧洲/巴黎时间
# 将UTC 时区转换为欧洲/巴黎时间
europe = utc.in_timezone('Europe/Paris')
print("巴黎当前时间:", europe)
输出:
Current UTC time: 2023-06-08T10:47:27.836789+00:00
Current time in Paris: 2023-06-08T12:47:27.836789+02:00
-
FTFY
您是否遇到过数据中存在的外语无法正确显示的情况?这被称为莫吉巴克。
Mojibake
是一个术语,用于描述由于编码或解码问题而发生的乱码或乱码文本。
当使用一种字符编码编写的文本使用不同的编码错误解码时,通常会发生这种情况。ftfy python库将帮助您修复Mojibake,这在NLP用例中非常有用。
安装
pip install ftfy
例
print(ftfy.fix_text('Correct the sentence using “ftfyâ€\x9d.'))
print(ftfy.fix_text('✔ No problems with text'))
print(ftfy.fix_text('à perturber la réflexion'))
输出
除了Mojibake,ftfy将修复不正确的编码,不正确的行尾和不正确的引号。可以理解解码为以下任何编码的文本:
拉丁语-1 (ISO-8859–1)
Windows-1252 (cp1252 — 用于微软产品)
Windows-1251 (cp1251 — cp1252的俄语版本)
Windows-1250 (cp1250 — cp1252的东欧版本)
ISO-8859–2(与Windows-1250不完全相同)
MacRoman(在 Mac OS 9 及更早版本上使用)
cp437(用于 MS-DOS 和某些版本的 Windows 命令提示符)
-
Sketch
Sketch是一个独特的AI代码编写助手,专为使用Python中的pandas库的用户而设计。
它利用机器学习算法来理解用户数据的上下文,并提供相关的代码建议,使数据操作和分析任务更容易、更高效。
Sketch不需要用户在他们的IDE中安装任何其他插件,因此可以快速轻松地开始使用。
这可以大大减少数据相关任务所需的时间和精力,并帮助用户编写更好、更高效的代码。
安装
pip install sketch
例我们需要在 Pandas 数据框中添加一个 .sketch 扩展名才能使用此库。
.sketch.ask
ask是Sketch的一项功能,允许用户以自然语言格式询问有关其数据的问题。它为用户的查询提供基于文本的响应。
# Importing libraries
import sketch
import pandas as pd
file = "D://7 Datasciense//DS_visilization//altair//airports.csv"
# Reading the data (using twitter data as an example)
df = pd.read_csv(file)
print(df)
输出美国机场的概况:
# 问表单有哪些项目
df.sketch.ask("Which columns are category type?")
iata, name, city, state, country
合并到下一个命令输出截图
# 描述表单的形状行和列的大小
df.sketch.ask("What is the shape of the dataframe")
The shape of the dataframe is (3376, 8).
以上两条命令的结果:
.sketch.howto
HowTo 是一项功能,它提供了一个代码块,可用作各种数据相关任务的起点或结论。
我们可以要求代码片段来规范化它们的数据、创建新特征、绘制数据,甚至构建模型。
这将节省时间并轻松复制和粘贴代码;
您无需从头开始手动编写代码。
# 请用一段代码实现可视化
df.sketch.howto("Visualize the emotions")
输出
.sketch.apply
.apply 函数有助于生成新特征、解析字段和执行其他数据操作。
要使用此功能,我们需要拥有一个 OpenAI 帐户并使用 API 密钥来执行任务。我还没有尝试过这个功能。
我喜欢使用这个库,尤其是如何操作,我发现它很有用。
-
pgeocode 地理编码
“pgeocode”是我最近遇到的一个优秀的库,它对我的空间分析项目非常有用。
例如,它允许您查找两个邮政编码之间的距离,并通过输入国家/地区和邮政编码来提供地理信息。
https://pgeocode.readthedocs.io/en/latest/
https://pypi.org/project/pgeocode/
以上页面里可以找到链接下载全球的邮政编码:
http://download.geonames.org/export/zip/
数据按“原样”提供,不带任何精度、时效性或完整性的保证或陈述。 此自述文件描述了GeoNames邮政编码数据集。
主要的GeoNames地理名称数据提取位于此处: http://download.geonames.org/export/dump/
支持的国家/地区:
目前支持近100个国家/地区。当国家邮政服务开始以兼容许可证发布数据时,将添加新的国家/地区。
对许多国家/地区来说,纬度/经度是通过在主要的geonames数据库中搜索邮政编码的地名来确定的, administrativedivisions和邮政编码的数值邻近度是地名消歧的因素。
对于找不到主要的geonames数据库中对应的地理名称的邮政编码和地名,计算相邻邮政编码的平均纬度/经度。
部分中文国家简称的编码
地名数据库中提供的国家名单
以及相应的国家代码如下:
安道尔(AD)、阿根廷(AR)、美属萨摩亚(AS)、
奥地利(AT)、澳大利亚(AU)、奥兰群岛(AX)、
孟加拉国(BD)、比利时(BE)、保加利亚(BG)、
百慕大(BM)、巴西(BR)、白俄罗斯(BY)、
加拿大(加拿大)、瑞士(瑞士)、哥伦比亚(CO)、
哥斯达黎加(CR)、捷克(CZ)、德国(DE)、
丹麦(DK)、多米尼加共和国(DO)、
阿尔及利亚(DZ)、西班牙(西班牙)、芬兰(FI)、
法罗群岛(FO)、法国(fr)、
墨西哥(MX)、荷兰(荷兰)、挪威(NO)、
新西兰(新西兰)、
菲律宾(菲律宾)、巴基斯坦(PK)、波兰(PL)、
波多黎各(PR)、葡萄牙(PT)、留尼汪岛(RE)、
罗马尼亚(RO)、俄罗斯联邦(俄罗斯)、瑞典(SE)、
斯洛文尼亚(SI)、斯洛伐克(SK), 圣马力诺(SM)、
泰国(TH)、土耳其(TR)、乌克兰(UA)、
美利坚合众国(美国)、乌拉圭(UY)、罗马教廷(VA)、
美属维尔京群岛(VI)、马约特岛(YT)、南非(ZA)
完整的英文国家简称的编码
Andorra (AD), Argentina (AR), American Samoa (AS), Austria (AT), Australia (AU), Åland Islands (AX),
Bangladesh (BD), Belgium (BE), Bulgaria (BG), Bermuda (BM), Brazil (BR), Belarus (BY),
Canada (CA), Switzerland (CH), Colombia (CO), Costa Rica (CR), Czechia (CZ),
Germany (DE), Denmark (DK), Dominican Republic (DO), Algeria (DZ),
Spain (ES),
Finland (FI), Faroe Islands (FO), France (FR),
United Kingdom of Great Britain and Northern Ireland (GB), French Guiana (GF), Guernsey (GG), Greenland (GL), Guadeloupe (GP), Guatemala (GT), Guam (GU),
Croatia (HR), Hungary (HU),
Ireland (IE), Isle of Man (IM), India (IN), Iceland (IS), Italy (IT),
Jersey (JE), Japan (JP),
Liechtenstein (LI), Sri Lanka (LK), Lithuania (LT), Luxembourg (LU), Latvia (LV),
Monaco (MC), Republic of Moldova (MD), Marshall Islands (MH), The former Yugoslav Republic of Macedonia (MK), Northern Mariana Islands (MP), Martinique (MQ), Malta (MT), Mexico (MX), Malaysia (MY),
New Caledonia (NC), Netherlands (NL), Norway (NO), New Zealand (NZ),
Philippines (PH), Pakistan (PK), Poland (PL), Saint Pierre and Miquelon (PM), Puerto Rico (PR), Portugal (PT),
Réunion (RE), Romania (RO), Russian Federation (RU), Sweden (SE), Slovenia (SI), Svalbard and Jan Mayen Islands (SJ), Slovakia (SK), San Marino (SM),
Thailand (TH), Turkey (TR),
Ukraine (UA), United States of America (US), Uruguay (UY),
Holy See (VA), United States Virgin Islands (VI),
Wallis and Futuna Islands (WF), Mayotte (YT),
South Africa (ZA)
安装
pip install pgeocode
例获取特定邮政编码的地理信息
# Checking for country "India"
nomi = pgeocode.Nominatim('In')
# Getting geo information by passing the postcodes
nomi.query_postal_code(["620018", "620017", "620012"])
输出
“PGEOCODE”
通过将国家和邮政编码作为输入来计算两个邮政编码之间的距离。结果以公里为单位。
# 两个邮政编码之间的物理距离
distance = pgeocode.GeoDistance('In')
distance.query_postal_code("620018", "620012")
输出
geopandas
派生出若干新的需求:
a、就是如何获得中国的国家简称?
待续
b、如何根据邮编获取经纬度和所在地名称?
待续
-
rembg
rembg 是另一个有用的库,可以轻松地从图像中删除背景。
#Installation
pip install rembg
例
# Importing libraries
from rembg import remove
import cv2
# path of input image (my file: image.jpeg)
input_path = 'image.jpeg'
# path for saving output image and saving as a output.jpeg
output_path = 'output.jpeg'
# Reading the input image
input = cv2.imread(input_path)
# Removing background
output = remove(input)
# Saving file
cv2.imwrite(output_path, output)
输入本地目录存入待处理的照片:
输出扣去背景的效果:
-
Humanize
人性化“为数字、日期和时间提供简单、易于阅读的字符串格式。
该库的目标是获取数据并使其更加人性化,例如,通过将秒数转换为更具可读性的字符串(如“2 分钟前”)。
该库可以通过多种方式格式化数据,包括使用逗号格式化数字、将时间戳转换为相对时间等。
我经常在数据工程项目中使用整数和日期和时间。
安装
pip install humanize
示例-整数
# Importing library
import humanize
import datetime as dt
# Formatting numbers with comma
a = humanize.intcomma(951009)
# converting numbers into words
b = humanize.intword(10046328394)
#printing
print(a)
print(b)
输出
951,009
10.0 billion
示例日期和时间
import humanize
import datetime as dt
a = humanize.naturaldate(dt.date(2012, 6, 5))
b = humanize.naturalday(dt.date(2012, 6, 5))
print(a)
print(b)
输出
Jun 05 2012
Jun 05
您可能已经熟悉其中一些库,但对我来说,Sketch、Pendulum、pgeocode 和 ftfy 对于我的数据工程工作是必不可少的。我的项目非常依赖它们。
本文由 mdnice 多平台发布