Python自动化|几秒提取成千上百个Excel指定数据,你学废了吗?

在数据密集的工作环境中,我们经常需要从多个Excel文件中提取指定的数据.这种重复性的工作不仅枯燥,还非常耗时.今天,我将分享如何使用Python实现从成千上万个Excel文件中自动提取数据的方法,让你几秒钟完成5000分钟的工作,彻底告别枯燥重复工作.

案例背景

假设你是一个数据分析师,需要从不同部门上传的Excel文件中提取销售数据.每个文件都有不同的格式,但你只需要提取其中某个指定表格的特定列数据,并汇总到一个总表中.

示例

我们将使用以下Python库来实现这个功能:

pandas:用于处理数据.

openpyxl:用于读取和写入Excel文件.

glob:用于查找匹配的文件路径名.

首先,确保你已经安装了这些库.如果没有,请使用以下命令安装:

pip install pandas openpyxl

步骤一:准备数据

假设你有多个Excel文件,文件名格式为data_1.xlsx、data_2.xlsx、……、data_n.xlsx,每个文件都包含如下数据:

data_1.xlsx

| ID | Name | Sales |
|----|------|-------|
| 1  | A    | 1000  |
| 2  | B    | 1500  |
| 3  | C    | 2000  |

data_2.xlsx

| ID | Name | Sales |
|----|------|-------|
| 1  | D    | 1200  |
| 2  | E    | 1600  |
| 3  | F    | 2100  |

步骤二:编写Python代码

以下是实现自动化提取数据的Python代码:

import pandas as pd
import openpyxl
import glob

def extract_data_from_excel(files_pattern, sheet_name, column_name):
    # 存储所有提取的数据
    all_data = []

    # 查找所有匹配的Excel文件
    for file in glob.glob(files_pattern):
        # 读取Excel文件中的指定工作表
        df = pd.read_excel(file, sheet_name=sheet_name)
        # 提取指定列的数据
        data = df[column_name].tolist()
        # 将数据添加到总列表中
        all_data.extend(data)
    
    return all_data

# 使用示例
files_pattern = "data_*.xlsx"  # 匹配所有以data_开头的Excel文件
sheet_name = "Sheet1"          # 工作表名称
column_name = "Sales"          # 需要提取的列

# 提取数据
extracted_data = extract_data_from_excel(files_pattern, sheet_name, column_name)

# 打印提取的数据
print("Extracted Data:", extracted_data)

# 将提取的数据保存到新的Excel文件
output_df = pd.DataFrame(extracted_data, columns=[column_name])
output_df.to_excel("extracted_sales_data.xlsx", index=False)
print("Data saved to extracted_sales_data.xlsx")

详细解释

导入库:导入pandas、openpyxl和glob库.

定义函数:extract_data_from_excel函数接受三个参数:文件路径模式、工作表名称和列名称.

查找文件:使用glob.glob查找匹配的Excel文件.

读取和提取数据:循环遍历所有文件,读取指定工作表并提取指定列的数据.

汇总数据:将提取的数据汇总到一个列表中.

保存数据:将汇总的数据保存到一个新的Excel文件中.

输出

假设你有两个文件data_1.xlsx和data_2.xlsx,运行代码后,你会在当前目录下生成一个名为extracted_sales_data.xlsx的新文件,内容如下:

| Sales |
|-------|
| 1000  |
| 1500  |
| 2000  |
| 1200  |
| 1600  |
| 2100  |

进一步优化

你可以进一步优化代码,例如添加错误处理、处理不同格式的Excel文件或指定提取多个列的数据.以下是一个改进版本的代码:

import pandas as pd
import openpyxl
import glob

def extract_data_from_excel(files_pattern, sheet_name, columns):
    all_data = []

    for file in glob.glob(files_pattern):
        try:
            df = pd.read_excel(file, sheet_name=sheet_name)
            data = df[columns].copy()
            all_data.append(data)
        except Exception as e:
            print(f"Error processing file {file}: {e}")
    
    result_df = pd.concat(all_data, ignore_index=True)
    return result_df

# 使用示例
files_pattern = "data_*.xlsx"
sheet_name = "Sheet1"
columns = ["ID", "Name", "Sales"]

extracted_data = extract_data_from_excel(files_pattern, sheet_name, columns)
extracted_data.to_excel("extracted_sales_data.xlsx", index=False)
print("Data saved to extracted_sales_data.xlsx")
  • 通过这种方式,你可以更加灵活和高效地处理大量Excel文件,提取你需要的数据,几秒钟完成原本需要花费大量时间的工作.

  • 感谢大家的关注和支持!想了解更多Python编程精彩知识内容,请关注我的 微信公众号:python小胡子,有最新最前沿的的python知识和人工智能AI与大家共享,同时,如果你觉得这篇文章对你有帮助,不妨点个赞,并点击关注.动动你发财的手,万分感谢!!!

  • 原创文章不易,求点赞、在看、转发或留言,这样对我创作下一个精美文章会有莫大的动力!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python茶水实验室

你的关注,是我创作的最大动力.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值