最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你玩轉(zhuǎn)Python必備的幾種數(shù)據(jù)格式

 更新時間:2025年06月30日 08:35:51   作者:Python_trys  
在Python開發(fā)中,數(shù)據(jù)格式的選擇直接影響著程序的性能和可維護性,本文將詳細介紹Python開發(fā)中最常用的幾種數(shù)據(jù)格式,希望可以幫助大家選擇最合適的數(shù)據(jù)表示方式

前言

在Python開發(fā)中,數(shù)據(jù)格式的選擇直接影響著程序的性能和可維護性。不同的數(shù)據(jù)格式有著各自的特點和適用場景。本文將詳細介紹Python開發(fā)中最常用的幾種數(shù)據(jù)格式,包括它們的特性、使用場景以及相互轉(zhuǎn)換方法,幫助你根據(jù)實際需求選擇最合適的數(shù)據(jù)表示方式。

1. JSON - 輕量級的數(shù)據(jù)交換格式

基本介紹

JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,也易于機器解析和生成。

Python操作JSON

import json

# Python對象轉(zhuǎn)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字符串轉(zhuǎn)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數(shù)據(jù)傳輸

配置文件存儲

不同語言系統(tǒng)間的數(shù)據(jù)交換

2. CSV - 表格數(shù)據(jù)的最佳選擇

基本介紹

CSV(Comma-Separated Values)是以純文本形式存儲表格數(shù)據(jù)的常用格式。

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['年齡'])

適用場景

電子表格數(shù)據(jù)導(dǎo)出/導(dǎo)入

數(shù)據(jù)分析的原始數(shù)據(jù)存儲

數(shù)據(jù)庫表數(shù)據(jù)備份

3. XML - 結(jié)構(gòu)化文檔的標準

基本介紹

XML(eXtensible Markup Language)是一種標記語言,用于存儲和傳輸結(jié)構(gòu)化數(shù)據(jù)。

Python操作XML

import xml.etree.ElementTree as ET

# 創(chuàng)建XML
root = 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)

# 解析XML
tree = 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服務(wù)(如SOAP協(xié)議)

文檔結(jié)構(gòu)存儲(如Office文檔格式)

4. YAML - 人性化的配置文件格式

基本介紹

YAML(YAML Ain’t Markup Language)是一種人性化的數(shù)據(jù)序列化標準,比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'])

適用場景

應(yīng)用程序配置文件

持續(xù)集成/部署配置(如GitLab CI)

復(fù)雜數(shù)據(jù)結(jié)構(gòu)的序列化

5. Pickle - Python對象的二進制序列化

基本介紹

Pickle是Python特有的數(shù)據(jù)序列化格式,可以將任意Python對象轉(zhuǎn)換為二進制格式。

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)

注意事項

安全性:不要反序列化不受信任的來源的數(shù)據(jù)

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

適用場景

Python對象的本地持久化

機器學(xué)習(xí)模型的保存

進程間通信

6. Parquet - 高效的大數(shù)據(jù)列式存儲

基本介紹

Parquet是一種列式存儲格式,特別適合大數(shù)據(jù)處理和分析。

Python操作Parquet

import pandas as pd
import pyarrow.parquet as pq

# 創(chuàng)建示例DataFrame
df = 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())

適用場景

大數(shù)據(jù)分析

數(shù)據(jù)倉庫存儲

需要高效查詢的大型數(shù)據(jù)集

7. Protocol Buffers - 高效的二進制序列化格式

基本介紹

Protocol Buffers(protobuf)是Google開發(fā)的高效二進制序列化格式。

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

# 創(chuàng)建并序列化
person = person_pb2.Person()
person.name = "張三"
person.age = 25
person.emails.append("zhangsan@example.com")

serialized = person.SerializeToString()

# 反序列化
new_person = person_pb2.Person()
new_person.ParseFromString(serialized)
print(new_person.name)

適用場景

高性能網(wǎng)絡(luò)通信

微服務(wù)間數(shù)據(jù)傳輸

需要版本兼容的數(shù)據(jù)存儲

數(shù)據(jù)格式對比與選擇建議

選擇建議:

需要人類可讀的配置:YAML > JSON > XML

Web API交互:JSON

大數(shù)據(jù)分析:Parquet

Python對象持久化:Pickle

高性能網(wǎng)絡(luò)通信:Protobuf

簡單表格數(shù)據(jù):CSV

格式轉(zhuǎn)換技巧

JSON轉(zhuǎn)CSV

import json
import csv

with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 假設(shè)data是列表形式的JSON
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=data[0].keys())
    writer.writeheader()
    writer.writerows(data)

CSV轉(zhuǎn)JSON

import csv
import json

with 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多格式轉(zhuǎn)換

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')

結(jié)語

掌握Python中各種數(shù)據(jù)格式的特點和用法,能夠讓你在開發(fā)過程中根據(jù)具體需求選擇最合適的工具。無論是簡單的配置文件,還是復(fù)雜的大數(shù)據(jù)處理,Python生態(tài)都提供了完善的解決方案。

在實際項目中,往往需要根據(jù)性能要求、可讀性需求、團隊習(xí)慣等因素綜合考慮選擇哪種數(shù)據(jù)格式。建議多實踐、多比較,積累經(jīng)驗后自然能夠做出最佳選擇。

到此這篇關(guān)于一文帶你玩轉(zhuǎn)Python必備的幾種數(shù)據(jù)格式的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Windows下PyCharm安裝Numpy包及無法安裝問題解決方案

    詳解Windows下PyCharm安裝Numpy包及無法安裝問題解決方案

    這篇文章主要介紹了詳解Windows下PyCharm安裝Numpy包及無法安裝問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python圖形用戶界面tkinter之按鈕Button的使用說明

    python圖形用戶界面tkinter之按鈕Button的使用說明

    這篇文章主要介紹了python圖形用戶界面tkinter之按鈕Button的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Python fileinput模塊使用實例

    Python fileinput模塊使用實例

    這篇文章主要介紹了Python fileinput模塊使用實例,fileinput模塊可以遍歷文本文件的所有行,本文就給出它的使用代碼實例,需要的朋友可以參考下
    2015-05-05
  • python中rc1什么意思

    python中rc1什么意思

    在本篇文章里小編給大家整理了關(guān)于python中rc1的基礎(chǔ)知識點內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • M1 mac安裝PyTorch的實現(xiàn)步驟

    M1 mac安裝PyTorch的實現(xiàn)步驟

    本文將介紹如何在M1機器上本地安裝和運行PyTorch。你使用的M1機型(Air、Pro、Mini或iMac)沒有區(qū)別。感興趣的可以了解一下
    2021-08-08
  • python爬取各類文檔方法歸類匯總

    python爬取各類文檔方法歸類匯總

    網(wǎng)絡(luò)爬蟲不僅需要能夠抓取HTML中的敏感信息,也需要有抓取其他類型文檔的能力這篇文章主要為大家匯總了python爬取各類文檔方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python Handler處理器和自定義Opener原理詳解

    Python Handler處理器和自定義Opener原理詳解

    這篇文章主要介紹了Python Handler處理器和自定義Opener原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python使用Matplotlib和Seaborn進行數(shù)據(jù)可視化分析

    Python使用Matplotlib和Seaborn進行數(shù)據(jù)可視化分析

    Python作為數(shù)據(jù)科學(xué)領(lǐng)域的明星語言,擁有強大且豐富的可視化庫,其中最著名的莫過于 Matplotlib 和 Seaborn,下面我們來看看如何使用Matplotlib和Seaborn繪制常用圖表并掌握一些基本的圖表定制技巧吧
    2025-12-12
  • python中的opencv?圖像梯度

    python中的opencv?圖像梯度

    這篇文章主要介紹了python中的opencv?圖像梯度,圖像梯度計算的是圖像變化的速度,圖像梯度計算需要求導(dǎo)數(shù),但是圖像梯度一般通過計算像素值的差來得到梯度的近似值,下文詳細介紹需要的小伙伴可以參考一下
    2022-06-06
  • python3 assert 斷言的使用詳解 (區(qū)別于python2)

    python3 assert 斷言的使用詳解 (區(qū)別于python2)

    今天小編就為大家分享一篇python3 assert 斷言的使用詳解 (區(qū)別于python2),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論

潢川县| 冀州市| 东乡| 增城市| 通州市| 鸡西市| 樟树市| 揭东县| 敦煌市| 措美县| 张掖市| 马关县| 香格里拉县| 建阳市| 静海县| 府谷县| 阆中市| 孟州市| 舒兰市| 札达县| 冷水江市| 醴陵市| 三亚市| 遂川县| 枣庄市| 杭锦旗| 安宁市| 新郑市| 万荣县| 易门县| 滁州市| 中西区| 长寿区| 延庆县| 江陵县| 阿城市| 垫江县| 蒙自县| 布尔津县| 长沙市| 苗栗县|