一文带你玩转Python必备的几种数据格式 《玩转pycharm》

一文带你玩转Python必备的几种数据格式 《玩转pycharm》

目录
  • 前言
  • 1. JSON &8211; 轻量级的数据交换格式
  • 2. CSV &8211; 表格数据的最佳选择
  • 3. XML &8211; 结构化文档的标准
  • 4. YAML &8211; 人性化的配置文件格式
  • 5. Pickle &8211; Python对象的二进制序列化
  • 6. Parquet &8211; 高效的大数据列式存储
  • 7. Protocol Buffers &8211; 高效的二进制序列化格式
  • 数据格式对比与选择建议
  • 格式转换技巧
    • JSON转CSV
    • CSV转JSON
    • Pandas多格式转换
  • 小编归纳一下

    前言

    在Python开发中,数据格式的选择直接影响着程序的性能和可维护性。不同的数据格式有着各自的特点和适用场景。这篇文章小编将详细介绍Python开发中最常用的几种数据格式,包括它们的特性、使用场景以及相互转换技巧,帮助你根据实际需求选择最合适的数据表示方式。

    1. JSON &8211; 轻量级的数据交换格式

    基本介绍

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。

    Python操作JSON

    import json Python对象转JSON字符串data = “name”: “张三”, “age”: 25, “is_student”: True}json_str = json.dumps(data, ensure_ascii=False) ensure_ascii=False支持中文print(json_str) 输出: “name”: “张三”, “age”: 25, “is_student”: true} JSON字符串转Python对象python_obj = json.loads(json_str)print(python_obj[“name”]) 输出: 张三 读写JSON文件with open(‘data.json’, ‘w’, encoding=’utf-8′) as f: json.dump(data, f, ensure_ascii=False)with open(‘data.json’, ‘r’, encoding=’utf-8′) as f: loaded_data = json.load(f)

    适用场景

    Web API数据传输

    配置文件存储

    不同语言体系间的数据交换

    2. CSV &8211; 表格数据的最佳选择

    基本介绍

    CSV(Comma-Separated Values)是以纯文本形式存储表格数据的常用格式。

    Python操作CSV

    import csv 写入CSV文件data = [ [‘姓名’, ‘年龄’, ‘城市’], [‘张三’, ’25’, ‘北京’], [‘李四’, ’30’, ‘上海’]]with open(‘data.csv’, ‘w’, newline=”, encoding=’utf-8′) as f: writer = csv.writer(f) writer.writerows(data) 读取CSV文件with open(‘data.csv’, ‘r’, encoding=’utf-8′) as f: reader = csv.reader(f) for row in reader: print(row) 使用DictReader更友好with open(‘data.csv’, ‘r’, encoding=’utf-8′) as f: reader = csv.DictReader(f) for row in reader: print(row[‘姓名’], row[‘年龄’])

    适用场景

    电子表格数据导出/导入

    数据分析的原始数据存储

    数据库表数据备份

    3. XML &8211; 结构化文档的标准

    基本介绍

    XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。

    Python操作XML

    import xml.etree.ElementTree as ET 创建XMLroot = ET.Element(“catalog”)book1 = ET.SubElement(root, “book”, id=”1″)ET.SubElement(book1, “title”).text = “Python编程”ET.SubElement(book1, “author”).text = “张三”ET.SubElement(book1, “price”).text = “59.00”tree = ET.ElementTree(root)tree.write(“books.xml”, encoding=”utf-8″, xml_declaration=True) 解析XMLtree = ET.parse(“books.xml”)root = tree.getroot()for book in root.findall(“book”): title = book.find(“title”).text price = book.find(“price”).text print(f”书名: title}, 价格: price}”)

    适用场景

    配置文件(如Android的布局文件)

    Web服务(如SOAP协议)

    文档结构存储(如Office文档格式)

    4. YAML &8211; 人性化的配置文件格式

    基本介绍

    YAML(YAML Ain’t Markup Language)是一种人性化的数据序列化标准,比JSON更易读。

    Python操作YAML

    import yaml 写入YAML文件data = ‘name’: ‘张三’, ‘age’: 25, ‘skills’: [‘Python’, ‘Java’, ‘SQL’], ‘address’: ‘city’: ‘北京’, ‘postcode’: ‘100000’ }}with open(‘data.yaml’, ‘w’, encoding=’utf-8′) as f: yaml.dump(data, f, allow_unicode=True) 读取YAML文件with open(‘data.yaml’, ‘r’, encoding=’utf-8′) as f: loaded_data = yaml.safe_load(f) print(loaded_data[‘name’])

    适用场景

    应用程序配置文件

    持续集成/部署配置(如GitLab CI)

    复杂数据结构的序列化

    5. Pickle &8211; Python对象的二进制序列化

    基本介绍

    Pickle是Python特有的数据序列化格式,可以将任意Python对象转换为二进制格式。

    Python操作Pickle

    import pickle 序列化对象data = ‘a’: [1, 2, 3], ‘b’: (‘string’, ‘另一个字符串’), ‘c’: None}with open(‘data.pkl’, ‘wb’) as f: pickle.dump(data, f) 反序列化with open(‘data.pkl’, ‘rb’) as f: loaded_data = pickle.load(f) print(loaded_data)

    注意事项

    安全性:不要反序列化不受信赖的来源的数据

    兼容性:不同Python版本间的Pickle文件可能不兼容

    适用场景

    Python对象的本地持久化

    机器进修模型的保存

    进程间通信

    6. Parquet &8211; 高效的大数据列式存储

    基本介绍

    Parquet是一种列式存储格式,特别适合大数据处理和分析。

    Python操作Parquet

    import pandas as pdimport pyarrow.parquet as pq 创建示例DataFramedf = pd.DataFrame( ‘name’: [‘张三’, ‘李四’, ‘王五’], ‘age’: [25, 30, 35], ‘city’: [‘北京’, ‘上海’, ‘广州’]}) 写入Parquet文件df.to_parquet(‘data.parquet’) 读取Parquet文件df_read = pd.read_parquet(‘data.parquet’)print(df_read.head())

    适用场景

    大数据分析

    数据仓库存储

    需要高效查询的大型数据集

    7. Protocol Buffers &8211; 高效的二进制序列化格式

    基本介绍

    Protocol Buffers(protobuf)是Google开发的高效二进制序列化格式。

    Python使用示例

    先定义.proto文件:

    syntax = “proto3”;message Person string name = 1; int32 age = 2; repeated string emails = 3;}

    使用protoc编译:

    protoc –python_out=. person.proto

    Python中使用:

    import person_pb2 创建并序列化person = person_pb2.Person()person.name = “张三”person.age = 25person.emails.append(“zhangsan@example.com”)serialized = person.SerializeToString() 反序列化new_person = person_pb2.Person()new_person.ParseFromString(serialized)print(new_person.name)

    适用场景

    高性能网络通信

    微服务间数据传输

    需要版本兼容的数据存储

    数据格式对比与选择建议

    选择建议:

    需要人类可读的配置:YAML > JSON > XML

    Web API交互:JSON

    大数据分析:Parquet

    Python对象持久化:Pickle

    高性能网络通信:Protobuf

    简单表格数据:CSV

    格式转换技巧

    JSON转CSV

    import jsonimport csvwith open(‘data.json’, ‘r’, encoding=’utf-8′) as f: data = json.load(f) 假设data是列表形式的JSONwith open(‘output.csv’, ‘w’, newline=”, encoding=’utf-8′) as f: writer = csv.DictWriter(f, fieldnames=data[0].keys()) writer.writeheader() writer.writerows(data)

    CSV转JSON

    import csvimport jsonwith open(‘data.csv’, ‘r’, encoding=’utf-8′) as f: reader = csv.DictReader(f) data = [row for row in reader]with open(‘output.json’, ‘w’, encoding=’utf-8′) as f: json.dump(data, f, ensure_ascii=False, indent=2)

    Pandas多格式转换

    import pandas as pd 读取各种格式df_json = pd.read_json(‘data.json’)df_csv = pd.read_csv(‘data.csv’)df_parquet = pd.read_parquet(‘data.parquet’) 写入各种格式df.to_json(‘output.json’, orient=’records’, force_ascii=False)df.to_csv(‘output.csv’, index=False)df.to_parquet(‘output.parquet’)

    小编归纳一下

    掌握Python中各种数据格式的特点和用法,能够让你在开发经过中根据具体需求选择最合适的工具。无论是简单的配置文件,还是复杂的大数据处理,Python生态都提供了完善的解决方案。

    在实际项目中,往往需要根据性能要求、可读性需求、团队习性等影响选择哪种数据格式。建议多操作、多比较,积累经验后天然能够做出最佳选择。

    到此这篇关于一文带你玩转Python必备的几种数据格式的文章就介绍到这了,更多相关Python数据格式内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    无论兄弟们可能感兴趣的文章:

    • Python中常用文本数据格式转换
    • python中JSON数据格式的详细使用教程
    • Python实现常见数据格式转换的技巧详解
    • Python文件操作和数据格式详解(简单简洁)
    • python实现一组典型数据格式转换
    • 在Python的struct模块中进行数据格式转换的技巧
    版权声明