在使用 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 的小技巧,喜欢可以点赞、留言。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】
![](https://i-blog.csdnimg.cn/blog_migrate/2124f759481f38a5e586b73dfc35f91c.png)