Python案例如何存储数据

wen python案例 49

本文目录导读:

Python案例如何存储数据

  1. 按“数据是否结构化”分类
  2. 快速选择指南
  3. 一句话记住

好,这个问题很实用,Python存储数据的方式非常多,我会从最常见的场景出发,给你梳理一个清晰的分类和案例。

按“数据是否结构化”分类

结构化数据(表格、数据库)

案例1:CSV文件(最通用)

import csv
# 存储
data = [
    {"name": "张三", "age": 25, "city": "北京"},
    {"name": "李四", "age": 30, "city": "上海"}
]
with open("users.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["name", "age", "city"])
    writer.writeheader()
    writer.writerows(data)
# 读取
with open("users.csv", "r", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

案例2:Excel文件(需要 openpyxlpandas

import pandas as pd
# 存储
df = pd.DataFrame({
    "姓名": ["张三", "李四"],
    "分数": [85, 92]
})
df.to_excel("成绩.xlsx", index=False)
# 读取
df_read = pd.read_excel("成绩.xlsx")
print(df_read)

案例3:SQLite数据库(轻量级数据库)

import sqlite3
# 连接(不存在会自动创建)
conn = sqlite3.connect("mydb.db")
cursor = conn.cursor()
# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS students (
    id INTEGER PRIMARY KEY,
    name TEXT,
    score REAL
)
""")
# 插入数据
cursor.execute("INSERT INTO students (name, score) VALUES (?, ?)", 
               ("王五", 88.5))
conn.commit()
# 查询
cursor.execute("SELECT * FROM students")
print(cursor.fetchall())
conn.close()

半结构化数据(JSON、XML)

案例4:JSON(最常用,适合web/API场景)

import json
# 数据(可以是字典、列表)
data = {
    "project": "数据分析",
    "version": 1.0,
    "results": [
        {"id": 1, "value": 0.95},
        {"id": 2, "value": 0.87}
    ]
}
# 写入文件
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)
# 读取文件
with open("data.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
    print(loaded["project"])

Python对象持久化(保留Python对象状态)

案例5:Pickle(序列化任意Python对象)

import pickle
# 任何Python对象
my_model = {
    "weights": [0.5, 0.3],
    "bias": 0.1,
    "config": {"learning_rate": 0.01}
}
# 存储
with open("model.pkl", "wb") as f:
    pickle.dump(my_model, f)
# 读取
with open("model.pkl", "rb") as f:
    restored = pickle.load(f)
    print(restored["weights"])

高性能/大数据场景

案例6:NumPy数组(机器学习数据)

import numpy as np
# 创建数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 存储为.npy格式(速度快,占用小)
np.save("matrix.npy", arr)
# 读取
arr_loaded = np.load("matrix.npy")
print(arr_loaded)

案例7:HDF5(适合大规模科学数据)

import h5py
# 存储
with h5py.File("sensor_data.h5", "w") as f:
    f.create_dataset("temperature", data=[22.5, 23.1, 21.8])
    f.create_dataset("humidity", data=[60, 65, 58])
# 读取
with h5py.File("sensor_data.h5", "r") as f:
    temp = f["temperature"][:]
    print(temp)

快速选择指南

场景 推荐方式 原因
简单配置 JSON/ YAML 人类可读,结构灵活
表格数据 < 100MB CSV / Excel 通用,Excel可查看
表格数据 > 100MB Parquet / HDF5 压缩率高,读写快
需要频繁增删改查 SQLite 数据库支持SQL
跨语言/网络传输 JSON / MessagePack 标准格式
保存训练好的模型 Pickle / Joblib 保留Python对象
深度学习数据集 TFRecord / HDF5 框架原生支持

一句话记住

  • 小数据 → JSON (方便查看)
  • 表格数据 → CSV 或 SQLite (简单通用)
  • 大数组 → .npy 或 HDF5 (性能好)
  • Python对象 → Pickle (灵活但小心安全性)
  • 生产环境 → 数据库(MySQL、PostgreSQL)+ 云存储

你是想存储什么类型的数据?我可以给你更具体的推荐和代码示例。

抱歉,评论功能暂时关闭!