6个令大喵惊喜的 Python 库

news2024/11/7 18:08:33

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
  1. 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 命令提示符)
  1. 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)

输出美国机场的概况:

alt
# 问表单有哪些项目
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).

以上两条命令的结果:

alt

.sketch.howto

HowTo 是一项功能,它提供了一个代码块,可用作各种数据相关任务的起点或结论。

我们可以要求代码片段来规范化它们的数据、创建新特征、绘制数据,甚至构建模型。

这将节省时间并轻松复制和粘贴代码;

您无需从头开始手动编写代码。

# 请用一段代码实现可视化
df.sketch.howto("Visualize the emotions")

输出

alt

.sketch.apply

.apply 函数有助于生成新特征、解析字段和执行其他数据操作。

要使用此功能,我们需要拥有一个 OpenAI 帐户并使用 API 密钥来执行任务。我还没有尝试过这个功能。

我喜欢使用这个库,尤其是如何操作,我发现它很有用。

  1. pgeocode 地理编码

“pgeocode”是我最近遇到的一个优秀的库,它对我的空间分析项目非常有用。

例如,它允许您查找两个邮政编码之间的距离,并通过输入国家/地区和邮政编码来提供地理信息。

https://pgeocode.readthedocs.io/en/latest/

alt

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、如何根据邮编获取经纬度和所在地名称?

待续

  1. 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)

输入本地目录存入待处理的照片:

alt

输出扣去背景的效果:

alt
  1. 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 多平台发布

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

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

相关文章

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 链式提示 在本视频中,我们将学习如何通过将多个提示链接在一起,将复杂的任务拆分为一系列更简单的子任务。你可能会想,为什么要将一个任务拆分为多个提示,而你可以像我们在上一个视频中学到的那样…

高级IO -- 多路转接之 select

高级IO – 多路转接之 select 文章目录 高级IO -- 多路转接之 select初识selectselect 函数原型关于fd_set结构 select使用示例编写Sock编写selectService测试 理解select执行过程socket就绪条件读就绪写就绪 select的特点select的缺点select的缺点 初识select 系统提供select…

2023同为测试你的薪资为何比别人低?

软件测试这个行业我见过工作5年依然是初级水平的功能测试,拿着不到1W的薪资,也见过1年时间达到高级自动化水平的大牛!拿着20K的薪资。 影响你薪资的有两点! 一、你的技术水平高低直接决定你薪资的多少,工作时间长短并…

3D引擎和渲染

常见的三维引擎 三维引擎按平台可分为客户端三维引擎,Web端三维引擎;按用途可分为游戏三维引擎、CAD/CAM/CAE三维引擎; 游戏引擎常见的有UE4、Unity3D;CAD工程用的三维引擎又分商用的还有开源的,商用的比较著名的有A…

华为OD-2023B卷-太阳能板最大面积(java)

2.华为OD-2023B卷 -太阳能板最大面积(回到目录) 太阳能板最大面积 知识点分治 时间限制:1s 空间限制:32MB 限定语言:不限 难度:★★ 中规中矩的双指针题目。暴力for循环过不了全部样例。 题目描述: 给航天器一侧加装长方形或正方形的太阳能板(图中的红色斜线区域),需…

uniapp请求封装入门级实战记录

简单记录一下uniapp请求进行封装的相关内容,方便以后查看! 1.目录结构 2.封装文件 2.1 全局公共方法封装 2.2 请求方法封装 2.3 项目请求路径封装 2.4 常用变量封装 2.5 页面使用 1.目录结构 项目根目录下创建common文件夹,包含内容: …

springBoot源码分析如何加载配置文件

前言:springBoot的版本是 2.2.4.RELEASE 一、入口 /*** Run the Spring application, creating and refreshing a new* {link ApplicationContext}.* param args the application arguments (usually passed from a Java main method)* return a running {link A…

DM5加密

MD5加密 概述 MD5(Message Digest Algorithm 5)是一种常用的哈希函数,能够将任意长度的消息压缩成一个128位的哈希值。它由Ronald Rivest在1991年设计,其设计目标是用来取代较早的MD4算法。 MD5算法通过多次处理分组数据来生成…

2023年5月青少年机器人技术等级考试理论综合试卷(三级)

青少年机器人技术等级考试理论综合试卷(三级)2023.06 分数: 100 题数: 30 一、 单选题(共 20 题, 共 80 分) 1.如图所示电路, 下列说法正确的是? ( ) A.电路中电阻 R3 和…

Kafka有几种消费者分区分配策略?

Range范围分配策略 Range范围分配策略是Kafka默认的分配策略,它可以确保每个消费者消费的分区数量是均衡的。 注意:Rangle范围分配策略是针对每个Topic的。 配置 配置消费者的partition.assignment.strategy为org.apache.kafka.clients.consumer.Ran…

JMeter如何从数据库中获取数据并作为变量使用?

目录 前言 1、JMeter连接MySQL数据库 2、线程组下新建一个 JDBC Connection Configuration 配置元件 3、实现数据库的查询-单值引用 4、实现数据库的查询-多值引用 总结: 前言 JMeter如何从数据库中获取数据并作为变量使用?这在我们使用JMeter做接…

Selenium Python教程第5章

5. 等待页面加载完成(Waits) 现在的大多数的Web应用程序是使用AJAX技术。当一个页面被加载到浏览器时,该页面内的元素可以在不同的时间点被加载。这使得定位元素变得困难。如果元素不再页面之中,会抛出 ElementNotVisibleException 异常。 使用 waits功能…

蓝桥杯单片机定时器不够用?PCA大力助你测距超声波!

在国赛的练习中遇到了定时器不够用的问题,也在网上有查阅到许多蓝桥杯单片机的用PCA定时器测距超声波的例子,但在移植实践运用了几个人的代码后总是各种各样的的问题不好用,因此深感有必要自己好好研究下,终于在一番摸爬中写出了用…

Shapr3d建模制图软件大学生教育优惠免费1年申请教程

前言介绍 shapr3d是iOS系统上一款专业的3D建模App,目前已经有window版本,主要搭配iPad Pro与Apple Pencil使用,它的特点是易学、方便与专业。我们可以使用它可以在几分钟内就可以把草图上的想法变成设计图。 从工程项目到珠宝设计&#xff…

ADAudit Plus:保护企业信息安全的强大内部审计解决方案

内部安全审计在现代企业中扮演着至关重要的角色。它是确保组织网络和系统安全的关键步骤,帮助企业发现和解决潜在的安全风险和漏洞。在这个信息技术高度发达的时代,保护企业的敏感数据和防范内部和外部威胁变得尤为重要。 内部安全审计 ADAudit Plus是一…

Windows本地账号数据迁移工具,可迁移本地账号数据到域账号,包括配置文件,桌面文件,浏览器收藏,聊天记录等。

Transwiz可以很容易地将您的个人数据和设置转移到新计算机: 用于备份和恢复用户配置文件的简单向导界面 下载链接 链接:https://pan.baidu.com/s/1LWmplUgHYg9ut3QLMnFslg?pwd=ogpx 提取码:ogpx 以下为Transwiz工具的使用教程实录: 创建一台虚拟机,我在上面简单模拟…

基于STL的 演讲比赛流程管理系统

目录 一、演讲比赛程序要求 1、比赛规则 2、程序功能 二、创建管理类 三、菜单功能 四、退出功能 五、演讲比赛功能 1、功能分析 2、创建选手类 3、进行比赛 4、保存分数 六、查看比赛记录 1、读取记录分数 2、查看记录功能 3、bug解决 七、清空功能 一、演讲比赛…

【Linux】信号(上)

文章目录 📕 信号入门生活角度的信号技术角度的信号 📕 信号产生认识 signal 函数键盘产生信号通过系统调用产生信号软件条件产生信号硬件异常产生信号 📕 核心转储📕 信号保存信号集函数 📕 信号处理用户态与内核态处…

如何通过桥接模式重构代码?

文章目录 什么是桥接模式?UML结构图通用代码实现适用场景案例场景分析⽤⼀坨坨代码实现桥接模式重构代码代码实现⽀付类型桥接抽象类⽀付类型的实现定义⽀付模式接⼝测试 总结 同类的业务、同样的功能,怎么就你能写出来那么多if else。 很多时候你写出来…

【Web服务器】Tomcat的部署

文章目录 前言一、Tomcat 的概念1. Tomcat 核心组件1.1 什么是 servlet1.2 什么是 JSP 2. Tomcat 功能组件结构2.1 Container 结构分析 3. Tomcat 请求过程4. 配置文件4.1 安装目录4.2 conf 子目录 二、Tomcat 服务部署1. 下载并安装 JDK1.1 关闭防火墙,将安装 Tomc…