社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

程序员软件库 • 2 年前 • 260 次点击  

大家好,我是早起。
在使用 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 的小技巧,喜欢可以点赞、留言。

往期最佳

01. 再推荐一款Windows必备工具
02. 解除网盘下载限制,大文件也无需启动客户端
03. 为 Windows 加上翅膀,让 PC 瞬间起飞的神器
04. 想看的网页被404?建议你用它解决
05. 这次C盘是真的有救了!
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151325
 
260 次点击