欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)讀取Excel表數(shù)據(jù)并轉(zhuǎn)為JSON格式文件

 更新時間:2025年04月20日 09:04:53   作者:岫珩  
這篇文章主要為大家詳細(xì)介紹了Python如何使用pandas庫讀取Excel表并將其轉(zhuǎn)為JSON格式文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考下

Python讀取Excel表格數(shù)據(jù)并寫成JSON格式文件(精簡版)

1. 步驟

步驟 1: 安裝必要的庫

確保你已經(jīng)安裝了pandas和openpyxl(用于讀取Excel文件)。你可以使用pip來安裝這些庫:

pip install pandas openpyxl

步驟 2: 讀取Excel文件

使用pandas的read_excel函數(shù)來讀取Excel文件。

步驟 3: 將數(shù)據(jù)轉(zhuǎn)換為JSON格式

使用pandas的to_json方法將DataFrame轉(zhuǎn)換為JSON格式。

步驟 4: 保存JSON文件

將轉(zhuǎn)換后的JSON數(shù)據(jù)寫入到文件中。

2. 示例代碼

代碼如下

import pandas as pd
 
# 步驟 2: 讀取Excel文件
file_path = 'path_to_your_excel_file.xlsx'  # 替換為你的Excel文件路徑
df = pd.read_excel(file_path)
 
# 步驟 3: 將DataFrame轉(zhuǎn)換為JSON格式
# orient參數(shù)可以控制JSON的輸出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 這里使用'records'格式,它會將每一行數(shù)據(jù)作為一個對象。
json_data = df.to_json(orient='records')
 
# 步驟 4: 保存JSON文件
output_file_path = 'output.json'  # 指定輸出JSON文件的路徑和名稱
with open(output_file_path, 'w', encoding='utf-8') as f:
    f.write(json_data)
 
print("Excel數(shù)據(jù)已成功轉(zhuǎn)換為JSON并保存到文件。")

3. 注意事項(xiàng)

確保你的Excel文件路徑是正確的。

根據(jù)你的需求選擇合適的orient參數(shù)值。例如,如果你想要將列作為JSON對象的鍵,可以使用orient=‘columns’。不同的選項(xiàng)會影響JSON的結(jié)構(gòu)。

使用encoding='utf-8’確保在寫入文件時正確處理Unicode字符。

這樣,你就可以將Excel表格數(shù)據(jù)讀取并保存為JSON格式的文件了。

Python讀取Excel表數(shù)據(jù)轉(zhuǎn)為JSON格式文件(詳細(xì)優(yōu)化版)

1.詳細(xì)優(yōu)化部分

該部分以上面精簡代碼為基礎(chǔ)進(jìn)行優(yōu)化改造

1.1 下載pandas

使用pip命令下載pandas庫

pip install pandas openpyxl

1.2 讀取表格文件(可指定sheet頁)

讀取excel文件,可加參數(shù)sheet_name="sheet名稱"來指定Sheet頁,如果不指定,默認(rèn)第一個sheet頁

如想要讀取的名稱為Sheet2

df = pd.read_excel(file_path, sheet_name='Sheet2')

1.3 庫日期處理

由于表格中日期轉(zhuǎn)換為json后變成了一串?dāng)?shù)字,如何解決這個問題,可使用to_datetime函數(shù)

# 假設(shè)日期列名為'Date',且數(shù)據(jù)類型為整數(shù)(Excel序列號)
df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D')  # 將Excel序列號轉(zhuǎn)換為datetime對象
df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')  # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'

1.4 布爾值轉(zhuǎn)換

表格中的true和false轉(zhuǎn)換時不會做處理,單如果json后續(xù)要導(dǎo)入到mysql表中,mysql表識別true和false會導(dǎo)入失敗,只能識別0和1
可以使用以下代碼將true和false轉(zhuǎn)為1和0

# 修改表中的Boolean值,滿足表中要求的0-1,而不是false true,不然導(dǎo)入報(bào)錯
df['是否加裝急停開關(guān)'] = df['是否加裝急停開關(guān)'].map({True: 1, False: 0})

1.5 空值Na的處理

如果出現(xiàn)了空值,可使用fillna函數(shù)替換,如下

# 將Na替換為空字符
df = df.fillna('')

1.6 列名替換

如果想修改讀取到的列名稱,可使用以下代碼將列名修改值

如excel表中列名是中文,為了更方便導(dǎo)入mysql表,這里將中文列名修改為對應(yīng)的表字段(非表中字段,而是小駝峰)

column_map ={
    '任務(wù)單編號': 'taskTicketId',
        '工號': 'employeeId'
        }

print(df.columns)
col_names = df.columns.to_list()
col_names = [column_map[s] for s in col_names]
print(col_names)
df.columns = col_names

2. 詳細(xì)優(yōu)化后的完整代碼

完整代碼如下

# 步驟 1:引入pandas庫
import pandas as pd
 
# 步驟 2: 讀取Excel文件
# file_path = 'path_to_your_excel_file.xlsx'  # 替換為你的Excel文件路徑
file_path = '車輛改造單數(shù)據(jù)庫.xlsm'  # 替換為你的Excel文件路徑
df = pd.read_excel(file_path, sheet_name='Sheet2')
# print(df)


# 假設(shè)日期列名為'Date',且數(shù)據(jù)類型為整數(shù)(Excel序列號)
# df['Date'] = pd.to_datetime(df['Date'], origin='unix', unit='D')  # 將Excel序列號轉(zhuǎn)換為datetime對象
# df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')  # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'

list = ['創(chuàng)建日期','樣品送達(dá)日期','要求完成日期','實(shí)際完成日期']

for i in list:
    df[i] = pd.to_datetime(df[i], origin='unix', unit='D')  # 將Excel序列號轉(zhuǎn)換為datetime對象
    df[i] = df[i].dt.strftime('%Y-%m-%d')  # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'


# df['創(chuàng)建日期'] = pd.to_datetime(df['創(chuàng)建日期'], origin='unix', unit='D')  # 將Excel序列號轉(zhuǎn)換為datetime對象
# df['創(chuàng)建日期'] = df['創(chuàng)建日期'].dt.strftime('%Y-%m-%d')  # 將datetime對象轉(zhuǎn)換為字符串格式'年-月-日'
 

print(df['是否加裝急停開關(guān)'])
# 修改表中的Boolean值,滿足表中要求的0-1,而不是false true,不然導(dǎo)入報(bào)錯
df['是否加裝急停開關(guān)'] = df['是否加裝急停開關(guān)'].map({True: 1, False: 0})

# df = df.fillna('')

column_map ={
    '任務(wù)單編號': 'taskTicketId',
'工號': 'employeeId',
'委托人': 'requester',
'創(chuàng)建日期': 'creationDate',
'樣品送達(dá)日期': 'sampleDeliveryDate',
'要求完成日期': 'requiredCompletionDate',
'實(shí)際完成日期': 'completionDate'
}

print(df.columns)
col_names = df.columns.to_list()
col_names = [column_map[s] for s in col_names]
print(col_names)
df.columns = col_names

# 步驟 3: 將DataFrame轉(zhuǎn)換為JSON格式
# orient參數(shù)可以控制JSON的輸出格式,例如 'records', 'index', 'columns', 'values', 'split' 等。
# 這里使用'records'格式,它會將每一行數(shù)據(jù)作為一個對象。orient='records'確保JSON輸出為記錄列表。
# force_ascii=False確保輸出的JSON中包含非ASCII字符,例如中文。
# date_format='iso'確保日期以ISO格式輸出。如果你需要其他日期格式,可以相應(yīng)調(diào)整或去掉此參數(shù)。
json_data = df.to_json(orient='records', indent=4, force_ascii=False, date_format='iso',)
 
# 步驟 4: 保存JSON文件
# output_file_path = 'output.json'  # 指定輸出JSON文件的路徑和名稱
output_file_path = '車輛改造單數(shù)據(jù)庫.json'  # 指定輸出JSON文件的路徑和名稱

with open(output_file_path, 'w', encoding='utf-8') as f:
    f.write(json_data)
 
print("Excel數(shù)據(jù)已成功轉(zhuǎn)換為JSON并保存到文件。")

以上就是Python實(shí)現(xiàn)讀取Excel表數(shù)據(jù)并轉(zhuǎn)為JSON格式文件的詳細(xì)內(nèi)容,更多關(guān)于Python讀取Excel并轉(zhuǎn)為JSON的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python使用selenium + headless chrome獲取網(wǎng)頁內(nèi)容的方法示例

    Python使用selenium + headless chrome獲取網(wǎng)頁內(nèi)容的方法示例

    這篇文章主要介紹了Python使用selenium + headless chrome獲取網(wǎng)頁內(nèi)容的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • pycharm遠(yuǎn)程連接vagrant虛擬機(jī)中mariadb數(shù)據(jù)庫

    pycharm遠(yuǎn)程連接vagrant虛擬機(jī)中mariadb數(shù)據(jù)庫

    這篇文章主要介紹了pycharm遠(yuǎn)程連接vagrant虛擬機(jī)中mariadb數(shù)據(jù)庫,需要的朋友可以參考下
    2020-06-06
  • 基于Python工具使用Web3.py以太坊智能合約開發(fā)的方法

    基于Python工具使用Web3.py以太坊智能合約開發(fā)的方法

    智能合約是區(qū)塊鏈技術(shù)的核心應(yīng)用之一,它允許在沒有中介的情況下,通過代碼自動執(zhí)行合同條款,以太坊是目前最流行的智能合約平臺之一,而Web3.py是用于與以太坊區(qū)塊鏈交互的Python庫,本文將詳細(xì)介紹如何使用Web3.py進(jìn)行以太坊智能合約的開發(fā),需要的朋友可以參考下
    2024-11-11
  • python調(diào)用cmd復(fù)制文件代碼分享

    python調(diào)用cmd復(fù)制文件代碼分享

    Python3調(diào)用cmd復(fù)制文件,win7下測試通過,大家參考使用吧
    2013-12-12
  • 對python中的os.getpid()和os.fork()函數(shù)詳解

    對python中的os.getpid()和os.fork()函數(shù)詳解

    今天小編就為大家分享一篇對python中的os.getpid()和os.fork()函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python通過websocket與js客戶端通信示例分析

    Python通過websocket與js客戶端通信示例分析

    網(wǎng)站大多使用 HTTP 協(xié)議通信,而 HTTP 是無連接的協(xié)議。只有客戶端請求時,服務(wù)器端才能發(fā)出相應(yīng)的應(yīng)答, HTTP 請求的包也比較大,如果只是很小的數(shù)據(jù)通信,開銷過大。于是,我們可以使用 websocket 這個協(xié)議,用最小的開銷實(shí)現(xiàn)面向連接的通信。
    2014-06-06
  • python九九乘法表的實(shí)例

    python九九乘法表的實(shí)例

    下面小編就為大家?guī)硪黄猵ython九九乘法表的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • python 字典的打印實(shí)現(xiàn)

    python 字典的打印實(shí)現(xiàn)

    這篇文章主要介紹了python 字典的打印實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python繪制ROC曲線的示例代碼

    python繪制ROC曲線的示例代碼

    本文主要介紹了python繪制ROC曲線的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python?Haul利器簡化數(shù)據(jù)爬取任務(wù)提高開發(fā)效率

    Python?Haul利器簡化數(shù)據(jù)爬取任務(wù)提高開發(fā)效率

    Haul?是一個專門為數(shù)據(jù)爬取任務(wù)而設(shè)計(jì)的?Python?庫,它提供了一系列的工具和功能,幫助我們輕松處理數(shù)據(jù)爬取中的重復(fù)工作和復(fù)雜問題
    2024-01-01

最新評論