跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

7 个提升数据工程与开发效率的实用 Python 库

7 个实用的 Python 库,包括 Pendulum 用于日期时区处理,FTFY 修复文本乱码,Sketch 作为 AI 辅助 Pandas 编码,Pgeocode 进行邮政编码地理编码,Rembg 移除图像背景,Humanize 格式化数据,以及 OSMnx 获取 OpenStreetMap 数据。这些工具涵盖了数据工程中的时间管理、清洗、AI 辅助、地理信息及图像处理等关键环节,能有效提升开发效率和项目表现。

佛系玩家发布于 2025/2/7更新于 2026/9/1271 浏览
7 个提升数据工程与开发效率的实用 Python 库

在过去的两年里,Python 在数据工程和商业智能项目中得到了广泛应用。选择合适的库可以显著提高开发效率,增强项目表现。以下整理了 7 个令人惊叹的 Python 库,涵盖日期处理、文本修复、AI 辅助编码、地理信息、图像处理及数据可视化等领域。

1. Pendulum:强大的日期时间处理库

Python 内置的 datetime 模块功能强大但 API 较为繁琐。Pendulum 扩展了该模块,提供了更直观、人性化的 API,特别擅长处理时区和日期运算。

核心特性:

  • 支持时区转换(如 UTC 转本地时间)
  • 支持自然语言解析(如 "next monday")
  • 格式化输出友好

安装:

pip install pendulum

使用示例: 实例化时区并进行换算:

import pendulum
# 创建默认 UTC 时间的 datetime 对象
dt = pendulum.datetime(2023, 6, 8)
print(dt)  # 输出:2023-06-08T00:00:00+00:00

# 使用本地时区
local = pendulum.local(2023, 6, 8)
print("本地时间:", local)
print("本地时区:", local.timezone.name)
# 输出:本地时间:2023-06-08T00:00:00+08:00
# 输出:本地时区:Asia/Shanghai

# 获取当前 UTC 时间
utc = pendulum.now('UTC')
print("Current UTC time:", utc)

# 将 UTC 转换为欧洲/巴黎时间
europe = utc.in_timezone('Europe/Paris')
print("巴黎当前时间:", europe)

适用场景: 需要频繁处理跨时区日志、定时任务调度或用户时间显示的项目。


2. FTFY:修复乱码与编码问题

在处理网络爬虫数据或导入外部文件时,常遇到 Mojibake(乱码)现象。这通常是由于字符编码不一致导致的。FTFY (Fix Text For You) 库能自动检测并修复这些编码错误。

核心特性:

  • 修复 mojibake 乱码
  • 修正不正确的引号(如弯引号变直引号)
  • 支持多种编码格式(ISO-8859-1, Windows-1252 等)

安装:

pip install ftfy

使用示例:

import ftfy

# 修复包含乱码的句子
print(ftfy.fix_text('Correct the sentence using “ftfyâ€\x9d.'))
# 输出:Correct the sentence using "ftfy".

# 修复其他编码问题
print(ftfy.fix_text('à perturber la réflexion'))
# 输出:perturber la réflexion

适用场景: NLP 数据清洗、日志分析、多语言文本预处理。


3. Sketch:基于 AI 的 Pandas 代码助手

Sketch 是一个专为 Pandas 用户设计的 AI 代码编写助手。它利用机器学习算法理解数据上下文,提供代码建议,无需在 IDE 中安装额外插件即可快速开始。

核心特性:

  • 自然语言查询数据(.sketch.ask)
  • 生成代码片段(.sketch.howto)
  • 特征工程辅助(.sketch.apply)

安装:

pip install sketch

使用示例: 首先需要在 Pandas DataFrame 上启用 .sketch 扩展。

import sketch
import pandas as pd

# 读取数据
file = "data/airports.csv"
df = pd.read_csv(file)

# 询问数据结构
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).

# 生成可视化代码
df.sketch.howto("Visualize the emotions")

注意: .sketch.apply 功能通常需要 OpenAI API 密钥支持,需自行配置。

适用场景: 快速探索数据集、减少样板代码编写、辅助数据分析新手。


4. Pgeocode:邮政编码地理编码

Pgeocode 允许通过邮政编码查找距离和地理信息,支持近 100 个国家/地区。对于空间分析项目非常有用。

核心特性:

  • 计算两个邮编之间的距离
  • 获取经纬度坐标
  • 支持多国数据

安装:

pip install pgeocode

使用示例: 获取特定邮政编码的地理信息(以印度为例):

import pgeocode

# 初始化 India 数据
nomi = pgeocode.Nominatim('in')

# 查询邮编信息
result = nomi.query_postal_code(["620018", "620017", "620012"])
print(result)

# 计算两个邮编之间的物理距离(公里)
distance = pgeocode.GeoDistance('in')
dist_val = distance.query_postal_code("620018", "620012")
print(f"Distance: {dist_val} km")

关于中国数据: 中国的国家代码为 'CN'。若需查询中国邮编,请使用 pgeocode.Nominatim('cn')。

适用场景: 物流路径规划、区域销售分析、地理位置服务。


5. Rembg:图像背景移除

Rembg 是一个简单的库,用于从图像中删除背景。它基于深度学习模型,效果出色且易于集成。

安装:

pip install rembg

使用示例:

from rembg import remove
import cv2

input_path = 'image.jpeg'
output_path = 'output.png'

# 读取输入图像
input_img = cv2.imread(input_path)

# 移除背景
output_img = remove(input_img)

# 保存结果
cv2.imwrite(output_path, output_img)

适用场景: 电商产品图处理、头像裁剪、图像素材编辑。


6. Humanize:人性化数据格式化

Humanize 库旨在将数字、日期和时间转换为更易读的字符串格式,例如将秒数转换为'2 分钟前'。

安装:

pip install humanize

使用示例: 整数格式化:

import humanize

# 添加千位分隔符
a = humanize.intcomma(951009)
print(a)  # 输出:951,009

# 转换为单词形式
b = humanize.intword(10046328394)
print(b)  # 输出:10.0 billion

日期和时间格式化:

import datetime as dt

# 自然日期
a = humanize.naturaldate(dt.date(2012, 6, 5))
print(a)  # 输出:Jun 05 2012

# 自然日
b = humanize.naturalday(dt.date(2012, 6, 5))
print(b)  # 输出:Jun 05

适用场景: 用户界面展示、日志可读性优化、报告生成。


7. OSMnx:OpenStreetMap 数据获取

OSMnx 是获取当地社区空间信息的强大工具,可通过 Python 轻松下载 OpenStreetMap (OSM) 数据。

安装: 建议使用虚拟环境以避免依赖冲突。

conda create -n osm_env python=3.9
conda activate osm_env
pip install osmnx

使用示例: 下载柏林和汉堡的餐厅数据:

import os
from os.path import join
import osmnx
import pandas as pd

# 设置路径变量
main_path = "/your/data/path"
data_path = join(main_path, "data")

# 定义参数
cities = ["Berlin, Germany", "Hamburg, Germany"]
places = ["restaurant", "bar"]
years = ["2020", "2021"]

# 确保目录存在
for p in places:
    if not os.path.exists(join(data_path, p)):
        os.makedirs(join(data_path, p))

# 设置 Overpass 查询参数
settings = '[out:json][timeout:180][date:"{year}-12-31T00:00:00Z"]'

extracted_data = []

for place in places:
    for city in cities:
        for year in years:
            tag = {"amenity": place}
            osmnx.settings.overpass_settings = settings.format(year=year)
            
            # 提取几何数据
            tagged_data = osmnx.geometries_from_place(city, tags=tag)
            tagged_data["snap_year"] = year
            
            # 导出 CSV
            filename = f"{place}_{year}_{city}.csv"
            path = join(data_path, place)
            tagged_data.to_csv(join(path, filename))
            extracted_data.append(tagged_data)
            print(f"Extraction of {year} and {city} for {tag} completed")

适用场景: 城市规划研究、POI 数据分析、地理信息系统开发。


总结与建议

上述 7 个库覆盖了数据处理的全流程:

  1. 时间管理:Pendulum 解决时区痛点。
  2. 数据清洗:FTFY 修复编码,Humanize 优化展示。
  3. AI 辅助:Sketch 加速 Pandas 操作,Rembg 处理图像。
  4. 地理空间:Pgeocode 处理邮编,OSMnx 获取地图数据。

在实际项目中,建议根据具体需求组合使用。例如,在使用 OSMnx 获取地理数据后,可用 Pendulum 处理时间戳,最后用 Humanize 格式化输出结果。同时,注意各库的版本兼容性,建议在虚拟环境中隔离依赖。

对于初学者,推荐先掌握 Pendulum 和 Humanize,这两者上手快且通用性强。对于数据工程师,Sketch 和 OSMnx 能显著提升生产力。所有库均遵循开源协议,可放心用于商业项目。

目录

  1. 1. Pendulum:强大的日期时间处理库
  2. 创建默认 UTC 时间的 datetime 对象
  3. 使用本地时区
  4. 输出:本地时间:2023-06-08T00:00:00+08:00
  5. 输出:本地时区:Asia/Shanghai
  6. 获取当前 UTC 时间
  7. 将 UTC 转换为欧洲/巴黎时间
  8. 2. FTFY:修复乱码与编码问题
  9. 修复包含乱码的句子
  10. 输出:Correct the sentence using "ftfy".
  11. 修复其他编码问题
  12. 输出:perturber la réflexion
  13. 3. Sketch:基于 AI 的 Pandas 代码助手
  14. 读取数据
  15. 询问数据结构
  16. 输出:iata, name, city, state, country
  17. 询问数据形状
  18. 输出:The shape of the dataframe is (3376, 8).
  19. 生成可视化代码
  20. 4. Pgeocode:邮政编码地理编码
  21. 初始化 India 数据
  22. 查询邮编信息
  23. 计算两个邮编之间的物理距离(公里)
  24. 5. Rembg:图像背景移除
  25. 读取输入图像
  26. 移除背景
  27. 保存结果
  28. 6. Humanize:人性化数据格式化
  29. 添加千位分隔符
  30. 转换为单词形式
  31. 自然日期
  32. 自然日
  33. 7. OSMnx:OpenStreetMap 数据获取
  34. 设置路径变量
  35. 定义参数
  36. 确保目录存在
  37. 设置 Overpass 查询参数
  38. 总结与建议

更多推荐文章

查看全部
  • 网页端 40MB 离线模型,抠图不用后端也不用服务器
  • B 站直播弹幕场控机器人使用指南
  • Go 语言开发规范与最佳实践指南
  • 照片太大传不上去?我后来只想让压缩这件事别再折腾人
  • 纯 LLM、多模态大模型与 AIGC 就业方向对比分析
  • 前端开发三年复盘:从低代码平台到互联网工程化实战
  • Python 文件操作:读取、打开、写入、关闭及文件指针详解
  • 网络安全入门:价值观、方法论与职业发展指南
  • 《Agent Runtime 工程化》Sandbox 应该属于 Harness 还是 Runtime?
  • 《Agent Runtime 工程化》Agent Loop、Harness、Runtime 到底是什么关系?
  • Android App 性能优化核心实践:稳定、流畅与省电
  • 用 ComfyUI 搭建 Stable Diffusion 换装工作流
  • AIGC与现代教育技术的应用实践
  • 免费体验 Nano Banana Pro 的几个入口
  • 用 ChatGPT、DALL·E 和 Runway 做日漫小故事
  • Java 并发核心:synchronized 与 volatile 深度解析
  • DeepSeek-R1 大模型基于 MS-Swift 框架部署、推理与微调实践
  • pip 实操笔记:安装、虚拟环境与常见报错
  • VS Code Copilot Chat 扩展调试指南:解决运行异常
  • 图像坏点矫正算法 (3x3 矩阵处理)

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online