一文速学-Pandas多文件批次聚合处理详解+实例代码

简介: 一文速学-Pandas多文件批次聚合处理详解+实例代码

前言


很多情况下我们处理的文件并不只是一个单纯的CSV文件或者Excel文件。我们会结合更多是数据去进行聚合统计分析,或许是需要解析到一整个数据存储压缩包,或许是对一整个目录文件读取再进行数据操作,这都需要我们掌握一定的多文件处理方法和策略。此篇文章正是基于此场景下处理多文件方法整合策略。


Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的博客详细介绍这两种数据结构的处理方法:


一文速学-数据分析之Pandas数据结构和基本操作代码


一文速学-Pandas实现数值替换、排序、排名、插入和区间切片


一些Pandas基础函数的使用方法:


一文速学-Pandas索引重塑实现长宽表数据转换


一文速学-Pandas索引设置操作各类方法详解+代码展示


关于包含在异常值里面的空值和重复值均有三篇博客专门详细介绍了处理他们的方法:


一文速学-Pandas处理重复值操作各类方法详解+代码展示


一文速学-Pandas处理缺失值操作各类方法详解


一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示


想要系统性学习掌握Pandas数据分析的朋友可以订阅我的专栏,Pandas基础由浅入深,涵盖各类业务处理以及日常办公场景方方面面处理方法。一文速学系列-Pandas数据分析


一、多文件场景


我们就以2020年CCF大数据与智能竞赛的数据来作为实例来处理:


8856d16fa0b5471a83b52d0746fc81b2.png


现在我们有这么文本文件需要进行读取分析,按照往常我们一个一个读取显然费时费力。那么我们肯定想到了如果能够一次读取所有的文件名就可以循环遍历读取文件内容了,此时有两种方法可以获取到目录下所有文件名称:


方法一


第一种方法是引用OS库中的walk方法,python中os.walk是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。其语法为:


os.walk(top, topdown=True, οnerrοr=None, followlinks=False)


参数说明:


top 是你所要便利的目录的地址


topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)


onerror 需要一个 callable 对象,当walk需要异常时,会调用


followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)


os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。


返回说明:


每次遍历的对象都是返回的是一个三元组(root,dirs,files)


root 所指的是当前正在遍历的这个文件夹的本身的地址


dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)


files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)


其中files就是我们该目录下的所有文件名称:


file_dir = "D:\\metric-traffic\\traffic\\"
for root, dirs, files in os.walk(file_dir):
    print(files)

bc9c956a381147629494cbec749cdf37.png

将该目录下所有的文件路径可以这样写:

file_dir = "D:\\metric-traffic\\traffic\\"
for root, dirs, files in os.walk(file_dir):
    for name in files:
        print(os.path.join(root, name)) # 文件

47d7b6a36ad44dd7b3a0229689db6387.png

方法二


方法一需要循环遍历而且一次只能读出一条完整路径,可以通过list来保存单个路径形成列表,但是多个循环遍历效率较为低下。Python提供了glob库,只要安装python就可以使用该模块。glob模块主要用来查找和文件,可以使用*、?、[]这三种通配符对路径中的文件进行匹配。


  • *:代表0个或多个字符
  • ?:代表一个字符
  • []:匹配指定范围内的字符,如[0-9]匹配数字


如果我们想要取得一个目录下的所有文件名称仅需要两行代码:

file_dir = "D:\\metric-traffic\\traffic\\"
glob.glob(file_dir+"*.txt")

18689572edcc41b88fc3ad29b763fd21.png


二、多文件读取


使用Pandas的读取文件很方便,例如read_csv,read_json或者是read_sql都是十分简单且高效的操作。循环处理的话遍历读取文件就好了,根据我们获取到的目录路径:


file_dir = "D:\\metric-traffic\\traffic\\"
list_file=glob.glob(file_dir+"*.txt")
for i in range(len(list_file)):
    df=pd.read_csv(list_file[i])
    print(df)


目录
相关文章
|
5月前
|
存储 JSON 关系型数据库
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
67 0
|
7月前
|
数据可视化 数据挖掘 数据处理
【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)
【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)
194 0
|
6月前
|
数据挖掘 Python
【Python】数据分析:结构化数分工具 Pandas | Series 与 DataFrame | 读取CSV文件数据
【Python】数据分析:结构化数分工具 Pandas | Series 与 DataFrame | 读取CSV文件数据
53 1
|
20天前
|
数据可视化 Python
如何在Pandas中对数据集进行多级分组并进行聚合计算?
在Pandas中进行多级分组与聚合计算的步骤包括导入库(如pandas和matplotlib),准备数据集,使用`groupby()`方法分组,应用聚合函数(如`sum()`、`mean()`)及可视化结果。
25 11
|
2月前
|
数据可视化 Python
如何使用Python的Pandas库进行数据分组和聚合操作?
【2月更文挑战第29天】【2月更文挑战第105篇】如何使用Python的Pandas库进行数据分组和聚合操作?
|
5月前
|
数据挖掘 索引 Python
Pandas 高级教程——高级分组与聚合
Pandas 高级教程——高级分组与聚合
104 7
|
5月前
|
数据挖掘 索引 Python
Pandas 中级教程——数据分组与聚合
Pandas 中级教程——数据分组与聚合
49 0
|
5月前
|
存储 JSON 数据格式
4个解决特定的任务的Pandas高效代码
在本文中,我将分享4个在一行代码中完成的Pandas操作。这些操作可以有效地解决特定的任务,并以一种好的方式给出结果。
129 2
|
6月前
|
存储 数据处理 索引
Pandas读取Excel文件内容的方法使用正确的指南
Pandas读取Excel文件内容的方法使用正确的指南
|
6月前
|
数据可视化 数据挖掘 Python
python pandas 宝可梦数据分析可视化实战 课程设计 完整代码+数据 可直接运行
python pandas 宝可梦数据分析可视化实战 课程设计 完整代码+数据 可直接运行
59 0