跳到主要内容 7 个提升数据工程与开发效率的实用 Python 库 | 极客日志
Python AI 算法
7 个提升数据工程与开发效率的实用 Python 库 7 个实用的 Python 库,包括 Pendulum 用于日期时区处理,FTFY 修复文本乱码,Sketch 作为 AI 辅助 Pandas 编码,Pgeocode 进行邮政编码地理编码,Rembg 移除图像背景,Humanize 格式化数据,以及 OSMnx 获取 OpenStreetMap 数据。这些工具涵盖了数据工程中的时间管理、清洗、AI 辅助、地理信息及图像处理等关键环节,能有效提升开发效率和项目表现。
佛系玩家 发布于 2025/2/7 更新于 2026/4/21 0 浏览在过去的两年里,Python 在数据工程和商业智能项目中得到了广泛应用。选择合适的库可以显著提高开发效率,增强项目表现。以下整理了 7 个令人惊叹的 Python 库,涵盖日期处理、文本修复、AI 辅助编码、地理信息、图像处理及数据可视化等领域。
1. Pendulum:强大的日期时间处理库 Python 内置的 datetime 模块功能强大但 API 较为繁琐。Pendulum 扩展了该模块,提供了更直观、人性化的 API,特别擅长处理时区和日期运算。
支持时区转换(如 UTC 转本地时间)
支持自然语言解析(如 "next monday")
格式化输出友好
import pendulum
dt = pendulum.datetime(2023 , 6 , 8 )
print (dt)
local = pendulum.local(2023 , 6 , 8 )
print ("本地时间:" , local)
print ("本地时区:" , local.timezone.name)
utc = pendulum.now('UTC' )
print ("Current UTC time:" , utc)
europe = utc.in_timezone('Europe/Paris' )
print ("巴黎当前时间:" , europe)
适用场景: 需要频繁处理跨时区日志、定时任务调度或用户时间显示的项目。
2. FTFY:修复乱码与编码问题 在处理网络爬虫数据或导入外部文件时,常遇到 Mojibake(乱码)现象。这通常是由于字符编码不一致导致的。FTFY (Fix Text For You) 库能自动检测并修复这些编码错误。
修复 mojibake 乱码
修正不正确的引号(如弯引号变直引号)
支持多种编码格式(ISO-8859-1, Windows-1252 等)
import ftfy
print (ftfy.fix_text('Correct the sentence using “ftfyâ€\x9d.' ))
print (ftfy.fix_text('à perturber la réflexion' ))
适用场景: NLP 数据清洗、日志分析、多语言文本预处理。
3. Sketch:基于 AI 的 Pandas 代码助手 Sketch 是一个专为 Pandas 用户设计的 AI 代码编写助手。它利用机器学习算法理解数据上下文,提供代码建议,无需在 IDE 中安装额外插件即可快速开始。
自然语言查询数据(.sketch.ask)
生成代码片段(.sketch.howto)
特征工程辅助(.sketch.apply)
使用示例:
首先需要在 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?" )
df.sketch.ask("What is the shape of the dataframe" )
df.sketch.howto("Visualize the emotions" )
注意: .sketch.apply 功能通常需要 OpenAI API 密钥支持,需自行配置。
适用场景: 快速探索数据集、减少样板代码编写、辅助数据分析新手。
4. Pgeocode:邮政编码地理编码 Pgeocode 允许通过邮政编码查找距离和地理信息,支持近 100 个国家/地区。对于空间分析项目非常有用。
计算两个邮编之间的距离
获取经纬度坐标
支持多国数据
使用示例:
获取特定邮政编码的地理信息(以印度为例):
import pgeocode
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 是一个简单的库,用于从图像中删除背景。它基于深度学习模型,效果出色且易于集成。
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 分钟前'。
import humanize
a = humanize.intcomma(951009 )
print (a)
b = humanize.intword(10046328394 )
print (b)
import datetime as dt
a = humanize.naturaldate(dt.date(2012 , 6 , 5 ))
print (a)
b = humanize.naturalday(dt.date(2012 , 6 , 5 ))
print (b)
适用场景: 用户界面展示、日志可读性优化、报告生成。
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))
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
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 数据分析、地理信息系统开发。
总结与建议
时间管理 :Pendulum 解决时区痛点。
数据清洗 :FTFY 修复编码,Humanize 优化展示。
AI 辅助 :Sketch 加速 Pandas 操作,Rembg 处理图像。
地理空间 :Pgeocode 处理邮编,OSMnx 获取地图数据。
在实际项目中,建议根据具体需求组合使用。例如,在使用 OSMnx 获取地理数据后,可用 Pendulum 处理时间戳,最后用 Humanize 格式化输出结果。同时,注意各库的版本兼容性,建议在虚拟环境中隔离依赖。
对于初学者,推荐先掌握 Pendulum 和 Humanize,这两者上手快且通用性强。对于数据工程师,Sketch 和 OSMnx 能显著提升生产力。所有库均遵循开源协议,可放心用于商业项目。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online