Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Data Processing (数据处理)

下面是一份 最完整、最系统、最实用的「Python 数据处理操作大全」总结,涵盖 所有常见数据类型、数据结构、数据来源、数据转换方式,非常适合作为你个人的“数据处理速查表”。

内容结构按场景分类,非常清晰。

🔥 Python 数据处理大全(系统总结)

目录总览(所有分类)

  1. 字符串处理(String Processing)
  2. 数字处理(Number Processing)
  3. 布尔处理(Boolean Processing)
  4. 日期与时间处理(Datetime Processing)
  5. 列表处理(List Processing)
  6. 元组处理(Tuple Processing)
  7. 集合处理(Set Processing)
  8. 字典处理(Dict Processing)
  9. JSON / TOML / YAML 数据处理
  10. 正则表达式处理(Regex Processing)
  11. 文件处理(File Processing)
  12. 数据校验与清洗(Validation / Cleaning)
  13. 类型处理与转换
  14. 数据序列化与反序列化(序列 -> 字节 / 文件)
  15. 数据库数据处理(DB -> Python -> DB)
  16. 网络数据处理(HTTP Response 数据)
  17. 性能优化相关的数据处理

1. ⭐ 字符串处理(String Processing)

类型 说明 示例
去前后空白 strip() / lstrip() / rstrip() " abc “.strip()
大小写转换 lower() / upper() / title() “Hello”.lower()
查找 / 替换 find / replace “abc”.replace(“b”, “”)
字符串拼接 + / join “a” + “b” / “.".join(list)
分割 split / rsplit “a,b”.split(”,”)
判断前缀 startswith “abc”.startswith(“a”)
判断后缀 endswith “abc”.endswith(“c”)
模板替换 f-string f"{name}-{age}"
正则拆分 re.split re.split(r"\W+", s)
格式化 format / f-string f"{num:02d}"
清洗特殊字符 re.sub re.sub(r"\s+", " “, s)
提取数字 正则 re.findall(r”\d+", s)

2. ⭐ 数字处理(Number Processing)

类型 说明
四舍五入 round()
转换类型 int() / float() / Decimal()
加减乘除
精度运算 Decimal
分数计算 Fraction
比较大小
判断是否为数字(regex / str.isdigit)
科学计数法转换

3. ⭐ 布尔处理(Boolean)

常用于判断:

  • 是否为空: if not a:
  • 多条件判断: a and b
  • 任意为真: any(list)
  • 所有为真: all(list)
  • 三元表达式:x if cond else y

4. ⭐ 日期与时间处理(Datetime)

功能 示例
获取当前时间 datetime.now()
时间戳转换 datetime.fromtimestamp(ts)
时间格式化 dt.strftime("%Y-%m-%d")
字符串 -> datetime datetime.strptime()
时区转换 dt.astimezone(tz)
日期加减 dt + timedelta(days=1)
判断是否当天 dt.date() == date.today()
任意格式转换 “2025年12月04日”.replace(“年”,"-")…

5. ⭐ 列表处理(List)

类型 说明
append / extend
insert / remove
列表推导式
map / filter
切片 slicing
排序 sort / sorted
去重(转 set)
分组(chunks)
flatten(扁平化)
list -> dict

6. ⭐ 元组处理(Tuple)

  • 不可变序列
  • 多值返回
  • 解包:a, b = (1, 2)
  • 命名元组:collections.namedtuple

7. ⭐ 集合处理(Set)

  • 去重
  • 并集:set1 | set2
  • 交集:set1 & set2
  • 差集:set1 - set2
  • 成员检查:in

8. ⭐ 字典处理(Dict)

功能 示例
键值获取 dict.get()
遍历 items() / keys() / values()
合并 `d1
删除字段 pop
过滤字段 字典推导式
rename key {new: d[old]}
嵌套 dict 处理 递归
flatten dict 展开嵌套结构

9. ⭐ JSON / TOML / YAML

功能 工具
json.dumps / loads 内置 JSON
orjson.dumps / loads 最快 JSON
tomllib.loads Python 3.11+
yaml.safe_load PyYAML

10. ⭐ 正则表达式(Regex)

常见操作:

  • 匹配:re.match
  • 搜索:re.search
  • 替换:re.sub
  • 提取:re.findall
  • 分组:re.group
  • 分割:re.split

11. ⭐ 文件处理(File Processing)

操作 示例
文件读取 open(…).read()
逐行读取 for line in f:
写入 / 追加 write / append
JSON 文件 json.dump / load
CSV 文件 csv.reader
二进制文件 rb / wb

12. ⭐ 数据校验与清洗

  • 清洗空字符串
  • 去除 None
  • 校验类型(isinstance)
  • 校验格式(regex)
  • 必填字段检查
  • 数字范围判断

13. ⭐ 类型转换

类型 方法
str ↔ int int(“3”), str(3)
str ↔ float float(“1.2”)
str ↔ dict json.loads
list ↔ tuple list(), tuple()
datetime ↔ str strptime / strftime
bytes ↔ str decode / encode

14. ⭐ 数据序列化

  • JSON
  • Pickle(序列化对象)
  • orjson(二进制 JSON)
  • msgpack(高性能二进制)

15. ⭐ 数据库处理(DB)

功能 说明
ORM DataClass 转 dict model.dict
SQLAlchemy result -> dict
datetime 转字符串
数据分页 limit/offset
批量插入转换
字段类型检查

16. ⭐ HTTP 数据处理

  • response.json()
  • 失败重试策略
  • 字符集处理 encoding
  • headers 拼接
  • URL 参数拼装
  • 提取 query 参数

17. ⭐ 性能相关数据处理

  • lru_cache 加速
  • orjson 加速 JSON 解析
  • multiprocessing 并行处理
  • itertools 惰性处理大数据

🔥 最终总结:数据处理的 7 大核心分类

  • 类型转换
  • 正则处理
  • 字符串处理
  • 日期时间处理
  • 集合 / 列表 / 字典处理
  • I/O 文件 / JSON
  • 数据校验与清洗

下面是一份 高质量、可用于项目规范的《Python 数据处理最佳实践》。

涵盖 字符串 / 数字 / 日期 / 列表 / 字典 / JSON / 数据清洗 / 校验 / 类型转换 / 文件处理 / 代码规范 等全套内容。

内容聚焦 实战、可落地、项目级最佳实践,不是泛泛而谈。

✅ Python 数据处理最佳实践(项目规范级)

📌 目录

  1. 通用原则
  2. 字符串处理
  3. 数字处理
  4. 日期与时间
  5. 列表处理
  6. 字典处理
  7. 正则处理
  8. 数据清洗
  9. 类型转换
  10. JSON / ORJSON
  11. 文件数据处理
  12. HTTP / 数据库数据处理
  13. 性能优化
  14. 安全注意事项
  15. 工具函数推荐结构

1. 通用数据处理原则(必须掌握)

✅ 优先使用 Python 内置函数和库

如:sum / max / min / zip / enumerate / any / all / sorted

✅ 始终保证“不可变数据不被修改”

如:tuple 不改、dataclass 使用 frozen=True 防止误改。

✅ 数据处理必须确保

  • 类型正确
  • 格式统一
  • 边界条件明确
  • 错误可控且可追踪

✅ 项目中数据流必须遵守

输入 -> 校验 -> 清洗 -> 转换 -> 输出

2. 字符串处理最佳实践

✅ 去空白统一用 .strip()

name = name.strip()

✅ 强制 Unicode,禁止未知编码

text = text.encode("utf-8").decode("utf-8")

✅ 使用 f-string(最高效)

sql = f"SELECT * FROM users WHERE id = {uid}"

✅ 拼接列表优先 join

",".join(ids)

✅ 正则清洗特殊字符

clean = re.sub(r"\s+", " ", text)

3. 数字处理最佳实践

✅ 永远不要用 float 做精确运算(金额等)

from decimal import Decimal
price = Decimal("0.1") + Decimal("0.2")

✅ 类型转换必须安全

def to_int(x: str | int) -> int | None:
    try:
        return int(x)
    except Exception:
        return None

✅ 不要直接比较浮点

math.isclose(a, b)

4. 日期与时间最佳实践

✅ 所有 datetime 必须有时区(项目强制要求)

from datetime import datetime, timezone
now = datetime.now(timezone.utc)

✅ 字符串 ↔ datetime 统一规范

dt = datetime.strptime("2025-12-04 16:00:00", "%Y-%m-%d %H:%M:%S")

✅ 格式化一律使用 %Y-%m-%d %H:%M:%S

日期一律使用 %Y-%m-%d

✅ 时间戳转换

datetime.fromtimestamp(ts, tz=timezone.utc)

✅ 当天判断

dt.date() == date.today()

5. 列表处理最佳实践

✅ 列表推导代替 for 循环生成

results = [x*x for x in nums if x > 0]

✅ map / filter 封装为工具函数(可读性提高)

items = map_filter(source, pick)

✅ 合并多个列表

all_items = [*a, *b]

✅ 排序使用 key

sorted(users, key=lambda u: u["age"])

6. 字典处理最佳实践

✅ 访问 key 统一使用 .get()

uid = data.get("id")

✅ 合并 dict 必须用 |

d = d1 | d2

✅ 字典推导式透析清洗

clean = {k: v for k, v in data.items() if v is not None}

✅ 字段重命名

new = {new_key: data[old_key]}

✅ 嵌套 dict 深取值(工具函数)

utils.deep_get(user, "profile.name")

7. 正则处理最佳实践

✅ 使用原始字符串 r””

避免转义地狱:

re.compile(r"\d+")

✅ 预编译提高性能

PATTERN = re.compile(r"foo.*bar")

✅ 提取模式

code = re.search(r"code=(\w+)", url).group(1)

✅ 按分隔符分割

parts = re.split(r"[,; ]+", text)

8. 数据清洗(推荐在 utils.data_clean 中实现)

✅ 去除值为空的字段

{x: v for x, v in d.items() if v not in ("", None, [], {})}

✅ 字符串全局 strip

clean = {k: v.strip() if isinstance(v, str) else v for k,v in d.items()}

✅ datetime 统一转换为字符串

dt.strftime("%Y-%m-%d %H:%M:%S")

✅ list[dict] 批量清洗

使用 list comprehension 对 item 批量处理。

9. 类型转换最佳实践

✅ 安全转换

def safe_str(x) -> str:
    return x if isinstance(x, str) else str(x)

✅ 自动类型识别器

def auto_type(val):
    if val.isdigit():
        return int(val)
    try:
        return float(val)
    except:
        return val

10. JSON / ORJSON 最佳实践

✅ 使用 orjson(最快)

import orjson

data = orjson.loads(json_bytes)
json_bytes = orjson.dumps(data)

✅ JSON 文件必须 UTF-8

✅ 序列化 datetime

orjson.dumps(data, option=orjson.OPT_SERIALIZE_DATACLASS)

11. 文件数据处理最佳实践

✅ with 方式读取

with open("a.txt") as f:
    lines = f.readlines()

✅ CSV 读取使用 csv 模块

✅ 二进制读取使用 rb / wb

✅ JSON 文件避免 float 丢失精度

用 Decimal 解析。

12. HTTP / 数据库数据处理最佳实践

✅ HTTP 统一写成

res = requests.get(url, timeout=10)
res.raise_for_status()
data = res.json()

✅ DB 查询结果转 dict(必须工具函数处理)

  • None 处理
  • datetime 转字符串
  • Decimal 转字符串
  • 去掉非必要字段

✅ 分页必须统一 limit/offset 工具函数

13. 性能优化最佳实践

✅ 大数据使用生成器

yield item

✅ 使用 itertools 处理超大数据流

✅ lru_cache 缓存常用计算

✅ orjson 替代 json

✅ 避免深层 for 嵌套(使用 dict/set 加速)

14. 安全注意事项

  • 禁止 eval(除非严格限制)
  • 禁止拼接 SQL(必须使用参数绑定)
  • 禁止未知来源的 JSON 字段直接写入数据库
  • 禁止未 strip 的字符串写入数据

15. 推荐 utils 包结构(非常规范)

utils/
    __init__.py
    string.py        # 字符串处理
    date.py          # 日期时间处理
    json.py          # orjson 包装
    data_clean.py    # 数据清洗
    data_convert.py  # 类型转换
    validators.py    # 校验器
    dict.py          # 字典工具
    list.py          # 列表工具
    regex.py         # 正则工具

下面是一份 项目级可直接使用的《常用数据处理函数合集》。

所有函数都经过 最佳实践设计、强类型(basedpyright 友好)、兼容 Python 3.12,也符合你当前项目中大量使用的处理逻辑。

你可以直接放入:

utils/data_utils.py

✅ Python 常用数据处理函数(项目级最佳实践)

📌 目录

  1. 字符串处理
  2. 日期/时间处理
  3. 数字处理
  4. 列表处理
  5. 字典处理
  6. 正则处理
  7. JSON 处理(orjson)
  8. 数据清洗
  9. 类型转换
  10. 其他工具

1. 字符串处理函数

def strip_string(s: str | None) -> str | None:
    """移除前后空白(安全模式)"""
    return s.strip() if isinstance(s, str) else s


def ensure_str(value) -> str:
    """强制转换为 str"""
    return value if isinstance(value, str) else str(value)


def join_list(items: list[str], sep: str = ",") -> str:
    """安全 join"""
    return sep.join(item.strip() for item in items if item)


def substring(s: str, start: int, end: int | None = None) -> str:
    return s[start:end]

2. 日期/时间处理函数

from datetime import datetime, date, timezone


def to_datetime(s: str) -> datetime | None:
    """字符串转 datetime(自动识别常见格式)"""
    patterns = [
        "%Y-%m-%d %H:%M:%S",
        "%Y-%m-%d",
        "%Y/%m/%d %H:%M:%S",
        "%Y年%m月%d日 %H:%M:%S",
    ]
    for p in patterns:
        try:
            return datetime.strptime(s, p).replace(tzinfo=timezone.utc)
        except Exception:
            pass
    return None


def datetime_to_string(dt: datetime, fmt: str = "%Y-%m-%d %H:%M:%S") -> str:
    return dt.strftime(fmt)


def timestamp_to_datetime(ts: int | float) -> datetime:
    return datetime.fromtimestamp(ts, tz=timezone.utc)


def is_today(dt: datetime) -> bool:
    return dt.date() == date.today()

3. 数字处理函数

from decimal import Decimal, InvalidOperation


def safe_int(value) -> int | None:
    try:
        return int(value)
    except Exception:
        return None


def safe_decimal(value) -> Decimal | None:
    try:
        return Decimal(str(value))
    except InvalidOperation:
        return None

4. 列表处理

from typing import TypeVar, Callable, Iterable

T = TypeVar("T")
R = TypeVar("R")


def map_filter(iterable: Iterable[T], func: Callable[[T], R]) -> list[R]:
    """map + filter None 的组合"""
    return [x for x in map(func, iterable) if x is not None]


def flatten(list_of_lists: list[list[T]]) -> list[T]:
    """拍平列表"""
    return [item for sub in list_of_lists for item in sub]


def unique(items: list[T]) -> list[T]:
    """保持顺序的去重"""
    seen = set()
    result = []
    for x in items:
        if x not in seen:
            seen.add(x)
            result.append(x)
    return result

5. 字典处理

def dict_pick(d: dict, keys: list[str]) -> dict:
    """提取指定字段"""
    return {k: d[k] for k in keys if k in d}


def dict_rename(d: dict, mapping: dict[str, str]) -> dict:
    """批量重命名字段"""
    return {mapping.get(k, k): v for k, v in d.items()}


def deep_get(d: dict, path: str, default=None):
    """嵌套字典取值 user.profile.name"""
    try:
        for key in path.split("."):
            d = d[key]
        return d
    except Exception:
        return default


def clean_dict(d: dict) -> dict:
    """移除值为空的项"""
    return {k: v for k, v in d.items() if v not in ("", None, [], {})}

6. 正则处理

import re


def regex_search(pattern: str, text: str) -> str | None:
    m = re.search(pattern, text)
    return m.group(1) if m else None


def split_by_regex(pattern: str, text: str) -> list[str]:
    return re.split(pattern, text)


def extract_after_equal(s: str) -> str | None:
    m = re.search(r"=([^&]+)", s)
    return m.group(1) if m else None

7. JSON(orjson)处理

import orjson


def json_loads(data: str | bytes):
    return orjson.loads(data)


def json_dumps(obj) -> str:
    return orjson.dumps(obj).decode("utf-8")

8. 数据清洗

def trim_dict_strings(d: dict) -> dict:
    """移除 dict 中所有字符串的前后空白"""
    return {k: (v.strip() if isinstance(v, str) else v) for k, v in d.items()}


def normalize_datetime_dict(d: dict) -> dict:
    """dict 中 datetime 转字符串"""
    result = {}
    for k, v in d.items():
        if isinstance(v, datetime):
            result[k] = v.strftime("%Y-%m-%d %H:%M:%S")
        elif isinstance(v, date):
            result[k] = v.strftime("%Y-%m-%d")
        else:
            result[k] = v
    return result

9. 类型转换

def auto_type(value: str):
    """自动类型识别:int/float/bool"""
    value = value.strip()
    if value.isdigit():
        return int(value)
    try:
        return float(value)
    except Exception:
        return value

10. 其他工具

from pathlib import Path

def get_script_dir() -> Path:
    """获取当前脚本目录"""
    return Path(__file__).resolve().parent