Python自动化提取多Excel数据至新表格教程

版权申诉
0 下载量 35 浏览量 更新于2024-09-29 收藏 1.07MB ZIP 举报
资源摘要信息:"Python自动办公-27 Python从多路径多Excel表中获取数据并存入新表.zip" 在现代办公自动化中,处理Excel文件是一个非常普遍的需求。Python作为一种高效的编程语言,通过其丰富的库支持,能够帮助我们方便地进行Excel文件的操作。本资源包名为“Python自动办公-27 Python从多路径多Excel表中获取数据并存入新表.zip”,聚焦于利用Python从多个路径和多个Excel表格中提取数据,并将这些数据汇总存入一个新的Excel表格中。这不仅提升了数据处理的效率,也增强了数据处理的灵活性。 Python处理Excel文件主要依靠几个常用的库,比如`xlrd`和`xlwt`用于读写旧版`.xls`格式的Excel文件,`openpyxl`用于操作`.xlsx`格式文件,以及`pandas`库,它提供了一个叫做`DataFrame`的数据结构,非常适合进行数据分析和处理,尤其是针对大型数据集。此外,`pandas`能够直接读取Excel文件为`DataFrame`对象,并可以将`DataFrame`写入Excel文件,极大简化了数据处理的流程。 在本资源包中,我们假设用户需要从多个路径下的多个Excel文件中提取数据,这些Excel文件可能具有不同的结构和内容。任务的目标是将所有这些数据整合到一个新的Excel文件中。为了实现这一目标,我们可能会使用如下步骤: 1. 使用`os`库列出所有指定路径下的Excel文件。 2. 对每个Excel文件使用`pandas`库读取其数据到`DataFrame`。 3. 对每个`DataFrame`进行必要的数据清洗和预处理操作,以保证数据一致性。 4. 使用`pandas`的合并和拼接功能,将所有处理好的数据汇总到一个新的`DataFrame`中。 5. 最后,将汇总后的`DataFrame`写入到一个新的Excel文件中。 在具体实现上,`pandas`库中的`read_excel`函数可以指定文件路径读取Excel文件,`concat`函数可以用来合并多个`DataFrame`对象。如果需要指定读取特定的sheet,可以使用`sheet_name`参数。对于文件路径的处理,`os`库可以很方便地列出文件和目录,`glob`模块则可以进行更加复杂的文件模式匹配。在数据清洗阶段,可能涉及到去除重复数据、填充空值、格式转换等操作。这些操作都可以在`pandas`中找到相应的函数和方法,比如`drop_duplicates`、`fillna`、`to_numeric`等。 此外,如果数据量非常大,对性能有较高要求,还可以使用`Dask`库。`Dask`能够在不加载整个数据集到内存的情况下进行并行计算,非常适合处理大型数据集。 在自动化办公中,利用Python进行Excel数据处理,可以将之前需要大量时间手动操作的步骤自动化,节省大量重复劳动时间,减少人为错误,提高工作效率和数据处理的准确性。这对于企业数据管理、数据分析、财务报表整理等领域具有重要价值。 最后,需要注意的是,实际操作中需要根据具体文件的格式和内容调整代码逻辑,确保程序能够正确处理各种情况,比如文件不存在、格式错误或数据类型不匹配等问题。此外,在处理敏感数据时,还应确保遵守数据保护法规和公司政策,对数据进行适当的安全处理。

# 导入pandas库 import pandas as pd # 读取excel文件的两个sheet sheet1 = pd.read_excel("对照组.xlsx", sheet_name="idle_transition_probability") sheet2 = pd.read_excel("对照组.xlsx", sheet_name="hexagon_grid_table") # 把sheet转换成字典列表 sheet1 = sheet1.to_dict(orient="records") sheet2 = sheet2.to_dict(orient="records") # 创建一个空的字典,用来存储区域id和坐标的对应关系 area_dict = {} # 选择sheet1的第2列和第3列 sheet1 = sheet1.iloc[:, [1, 2]] # 把sheet1的第2列和第3列的数据转换成列表 start_area_list = sheet1.iloc[:, 0].tolist() end_area_list = sheet1.iloc[:, 1].tolist() # 用zip函数把两个列表组合成一个迭代器 area_pairs = zip(start_area_list, end_area_list) # 用for循环遍历每一对上下车地点所在区域的id for start_area, end_area in area_pairs: # 根据id从字典中获取对应的坐标 start_coord = area_dict[start_area] end_coord = area_dict[end_area] # 遍历sheet2,把区域id作为键,坐标作为值,存入字典中 for row in sheet2: area_id = row["格子ID"] longitude = row["中心经度"] latitude = row["中心维度"] area_dict[area_id] = (longitude, latitude) # 创建一个空的列表,用来存储每个时间段的曼哈顿距离 distance_list = [] # 计算两个坐标之间的x轴距离和y轴距离 x_distance = abs(end_coord[0] - start_coord[0]) y_distance = abs(end_coord[1] - start_coord[1]) # 计算两个坐标之间的曼哈顿距离,并添加到列表中 manhattan_distance = x_distance + y_distance distance_list.append(manhattan_distance) # 创建一个空的DataFrame df = pd.DataFrame() # 把列表添加到DataFrame中,指定列名 df["曼哈顿距离"] = distance_list # 把DataFrame保存到Excel文件中,指定文件名和sheet名 df.to_excel("result.xlsx", sheet_name="result")请你帮我修改一下

2023-05-25 上传