Python自動化處理Excel資料

2023-11-02 06:01:19

需求描述:資料格式如下所示,需要分離出2023年7月1號之後的資料明細

資料核對與處理:從Excel檔案中提取特定日期後的簽收資料

1. 引言

在實際資料處理和分析過程中,經常會遇到需要從大量資料中提取出特定日期範圍內的資訊的需求。本文將介紹如何使用Python的pandas庫來處理Excel檔案,並提取出2023年7月1日之後的簽收資料。

2. 準備工作

首先,我們需要匯入所需的庫。在本文中,我們將使用pandas庫來處理Excel檔案。

import pandas as pd

3. 設定顯示選項

為了能夠正確顯示所有列和行,我們可以設定pandas的顯示選項。

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

4. 讀取Excel資料檔案

接下來,我們使用pd.read_excel()函數來讀取Excel檔案中的資料,並指定nrows引數來限制讀取的行數。

data = pd.read_excel('C:\\Users\\Admin\\Desktop\\資料核對\\工作簿2.xlsx', nrows=600)

5. 資料處理

為了方便後續操作,我們將DataFrame的索引設定為「貨件單號」和「SKU」。

data = data.set_index(['貨件單號', 'SKU'])

然後,我們將「簽收明細」這一列進行拆分,並將拆分後的每個資料項排成多行。

data = data['簽收明細'].str.split('\n', expand=True).stack().reset_index(level=2, drop=True)
data.name = '簽收明細'

接著,我們從拆分後的資料中提取出「日期」和「數量」兩列,並將其轉換為正確的資料型別。

data = data.str.split(' \| ', expand=True)
data.columns = ['日期', '數量']
data['日期'] = pd.to_datetime(data['日期'])
data['數量'] = pd.to_numeric(data['數量'])

6. 篩選資料並儲存結果

現在,我們可以篩選出2023年7月1日之後的資料,並將結果儲存到Excel檔案中。

result = data[data['日期'] >= '2023-07-01'].reset_index()
result.to_excel('2023年7月1號之後簽收資料.xlsx', index=True)

7. 結果展示

最後,我們輸出提示資訊,顯示結果已經儲存到檔案中。

print(f"結果已經儲存到檔案中:2023年7月1號之後簽收資料.xlsx")

8. 總結

本文介紹瞭如何使用Python的pandas庫處理Excel檔案,並提取出特定日期範圍內的簽收資料。通過設定顯示選項、讀取Excel檔案、進行資料處理、篩選資料並儲存結果,我們能夠高效地處理大量資料,並得到我們需要的資訊

完整程式碼:

import pandas as pd

# 設定最大列數為 None,以顯示所有列
pd.set_option('display.max_columns', None)

# 設定最大行數為 None,以顯示所有行
pd.set_option('display.max_rows', None)

# 讀取Excel資料檔案
data = pd.read_excel('C:\\Users\\Admin\\Desktop\\資料核對\\工作簿2.xlsx', nrows=600)

# 輸出全部資料(顯示所有行和列)
print(data)

# 將DataFrame的索引設定為「貨件單號」和「SKU」,以便後續操作
data = data.set_index(['貨件單號', 'SKU'])

# 將「簽收明細」這一列進行拆分,並將拆分後的每個資料項排成多行
data = data['簽收明細'].str.split('\n', expand=True).stack().reset_index(level=2, drop=True)
data.name = '簽收明細'

# 從拆分後的資料中提取「日期」和「數量」兩列
data = data.str.split(' \| ', expand=True)
data.columns = ['日期', '數量']
data['日期'] = pd.to_datetime(data['日期'])
data['數量'] = pd.to_numeric(data['數量'])

# 篩選出 202371 日之後的資料,並將結果儲存到 Excel 檔案中
result = data[data['日期'] >= '2023-07-01'].reset_index() # 篩選符合條件的行,並重置索引
result.to_excel('2023年7月1號之後簽收資料.xlsx', index=True) # 將結果儲存到 Excel 檔案中

# 輸出提示資訊
print(f"結果已經儲存到檔案中:2023年7月1號之後簽收資料.xlsx")