本章目录
一、开篇介绍
1. 需求
\qquad
利用Python
对本地得多个Excel文件进行合并处理。
2. Python所用包
\qquad pandas、os、sys
二、功能代码
2.1. 本地文件获取
2.1.1 对于本地多层文件夹中文件整合
\qquad
1. os.walk()
介绍
描述:Directory tree generator.
样例: os.walk(top, topdown=True, onerror=None, followlinks=False)
- top – 文件夹路径,, 返回的是一个三元组(root,dirs,files)。
root:
当前文件夹目录dirs:
root文件夹下的文件夹,返回一个列表files:
root文件夹下的文件夹,返回一个列表
- topdown --可选,默认为 True,优先遍历外层文件夹,否则优先遍历最内层文件夹。
- 其他可选暂不介绍,自行了解
\qquad
2. os.walk()
代码
import os
for root,dirs,files in os.walk(r'D:\父文件夹',topdown=True):
print(root,' ',dirs,' ',files)
for root,dirs,files in os.walk(r'D:\父文件夹',topdown=False,followlinks=False):
print(root,' ',dirs,' ',files)
for root,dirs,files in os.walk(r'D:\父文件夹',topdown=False):
print(root,' ',dirs,' ',files)
2.1.2 对于本地单层文件夹中文件整合
\qquad
os.listdir()
不做介绍,对遍历后的文件进行筛选(拼接哪些文件名的文件),如下是获取path文件下以A开头,以.xlsx结尾的文件,filelist 是一个列表,内容为文件名加上文件后缀。
filelist = [item for item in os.listdir(path) if item.endswith('.xlsx') and item.startswith('A')]
2.1.3 文件的路径拼接
\qquad
os.path.join()
不做介绍
2.2. 本地文件拼接
2.1.1 将文件路径存储在列表中
\qquad
在文件拼接之前,我们首先需要将文件的路径存储在一个列表中。
import os
file_path = []
for root,dirs,files in os.walk(r'D:\父文件夹',topdown=True):
print(root,dirs,files)
for file in files:
file_path.append(os.path.join(root,file))
2.1.1 利用pandas读取文件
\qquad
此时已经将文件的路径存储在一个列表中,随后就是读取Excel文件数据。首先先对单个文件读取
\qquad
1. pandas.read_excel()
介绍
描述: Read an Excel file into a pandas DataFrame.
样例: pd.read_excel(
io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
dtype=None,
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
)
- io – excel文件路径。
- sheet_name选择excel文件中的sheet_name,值为0,1,2…或者sheet名
- header用来指定哪一行作为列名的,默认是第0行。
- names自定义列名,列表形式。
- index_col指定用哪一列做为行索引。
- usecols读取数据时,读取指定列。
- dtype针对每一列设置不同的数据类型。
- converters对指定列的数据进行指定函数的处理,传入参数为列名与函数组成的字典。
- true_values将指定的文本转换为True,默认为None,列表。
- false_values将指定的文本转换为False,默认为None,列表。
- skiprows跳过指定的行。
- nrows指定需要读取前多少行,通常用于较大的数据文件中。
- na_values指定某些列的某些值为NaN。
- keep_default_na表示导入数据时是否导入空值。其他可选暂不介绍,详细的自行了解
2.1.1 利用pandas合并文件
\qquad
此时能够以各种方式读取到单个文件了,接着就是如何拼接,以及拼接的方式了。一开始数据的整个,每个文件的格式都是相同,所以这里介绍最常见的两种方式。
- 列对其,行拼接 pd.concat([df,df_tem])
- 行对其,列拼接 pd.concat([df,df_tem],axis=1)
import pandas as pd
df = pd.DataFrame()
for fp in file_path:
df_tem = pd.read_excel(fp)
df = pd.concat([df,df_tem])
结言
\qquad 本章到此结束,涉及到的内容不深,如有错误,请见谅,评论更正。