如何用 Python 批量循环读取 Excel ?

admin 2024年11月24日13:58:09评论10 views字数 1232阅读4分6秒阅读模式
来自公众号:早起Python

在使用 Python 批量处理 Excel 时经常需要批量读取数据,常见的方式是结合glob模块,可以实现将当前文件夹下的所有csv批量读取,并且合并到一个大的DataFrame

df_list = []
for file in glob.glob("*.csv"):
df_list.append(pd.read_excel(file))

df = pd.concat(df_list)

但是这样要求读取的每一个csv文件格式、列名都是一样的。

如果想要将每一个csv独立的进行读取,可以使用 os 模块来循环遍历当前文件夹中的 CSV 文件,然后使用 Pandas 的 read_csv 函数来读取每个文件

import os
import pandas as pd

df_list = []

for file in os.listdir():
if file.endswith(".csv"):
df_list.append(pd.read_csv(file))

现在,df_list 中的每个元素都是一个 DataFrame,但是这样依旧不够完美,调用的时候依旧需要手动从列表中提取。

那如何自动读取当前文件夹下全部CSV数据,并将每个CSV赋给不同的变量

可以使用Python中的globals() 函数,它返回一个字典,其中包含当前程序的所有全局变量,例如我们可以使用如下语法来为字典中的某个键赋值:

globals()[key] = value

所以,使用下面的代码可以实现自动读取当前文件夹下全部CSV数据,并将每个CSV赋给不同的变量

df_list = []

for i, file in enumerate(os.listdir()):
if file.endswith(".csv"):
df_list.append(pd.read_csv(file))

for i, df in enumerate(df_list):
globals()[f'df{i+1}'] = df

当然,类似的方法还可以应用于读取Excel的不同sheet,例如假设data.xlsx有10个sheet

df_list = [pd.read_excel("data.xlsx", sheet_name=i) for i in range(10)]

for i, df in enumerate(df_list):
globals()[f"df{i+1}"] = df

如果你不清楚数据有多少Sheet,也可以使用 sheet_name=None,然后根据返回的字典自动读取

df_list = pd.read_excel("data.xlsx", sheet_name=None)

for i, (name, df) in enumerate(df_list.items()):
globals()[f"df_{name}"] = df

以上就是利用 Python 读取多份 Excel 的小技巧,喜欢可以点赞、留言。

---END---

推荐↓↓↓

原文始发于微信公众号(Python编程):如何用 Python 批量循环读取 Excel ?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月24日13:58:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何用 Python 批量循环读取 Excel ?https://cn-sec.com/archives/1632498.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息