• python实现excel的数据提取


    一文带你实现excel表格的数据提取

    今天记录一下如何使用python提取Excel中符合特定条件的数据

    数据处理和分析的过程中,我们经常需要从Excel表格中提取特定条件下的数据。Python的pandas库为我们提供了方便的方法来进行数据查询和过滤

    Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

    • Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构数据分析工具。
    • Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
    • Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。
    • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。
    • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
    • Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

    Pandas应用

    Pandas 的主要数据结构是 **Series (一维数据)**与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。

    01.简单数据类型的提取

    序号ab
    11.52.8
    23.24.7
    32.13.6
    44.31.9
    54.13.2

    要求:提取a,b两列中介于2.5到5之间的数据

    使用query方法提取数据

    首先,我们将使用query方法来提取符合条件的数据。query方法允许我们使用类似SQL的语法进行数据查询

    代码如下:
    import pandas as pd
    
    # 读取Excel表格
    df = pd.read_excel('data.xlsx')  # 将'data.xlsx'替换为你的文件路径
    
    # 使用query方法进行查询
    query_string = '2.5 < x < 5 and 2.5 < y < 5'
    filtered_data = df.query(query_string)
    
    # 打印提取的数据
    print(filtered_data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    02.复杂数据类型的数据提取

    如下是一个包含70+sheet表单excel工作簿,现在要求从该excel中抽取特定的数据列到新表
    在这里插入图片描述

    话不多说,直接上代码
    import pandas as pd
    import openpyxl
    
    
    wb = openpyxl.Workbook()
    
    # 获取默认工作表
    ws = wb.active
    
    # 读取原始Excel文件
    # df = pd.read_excel('SA.xlsx')
    df = pd.read_excel('SA.xlsx', sheet_name=['RCD', 'RPC','RCM','MCV_S','MCV_C','CFV',
                                              'GCM','SGCS','SGCC','GCSB','GCC_S','GCC','MOV_SO'
                                              ,'MOV_SC','MOV_N','MNV_C','BSV_C','MSV_CSC','MSV_CLC'
                                              ,'MSV_CLO','CAH_N','BAH_N','BAH_L','BAH_OT','MOS_T','MOS_C'
                                              ,'MOS_N','MOS_L','NOPDS','ALA_P','AVIE','SLT8','SLT4','BOOLS'
                                              ,'REALS','EPS','SA','KG','TRAN','SETP','PID','NSD','DV','AMI',
                                              'DCO','ACO','DCI','ACI6','ACI4','ACI','DM','AM4','AM','SOE','PVI'
                                              ,'DVO','AVO','DVI','AVI8','AVI6','AVI4','AVI'])
    
    # 创建一个新的Excel文件
    wb = pd.ExcelWriter('new.xlsx')
    
    # 遍历每个sheet
    for sheet_name, sheet_data in df.items():
        # 提取需要的列数据
        columns_to_extract = [ 'PN','SN']
        if all(column in sheet_data.columns for column in columns_to_extract):
            extracted_data = sheet_data[columns_to_extract]
    
        # 将提取的数据写入新的Excel文件中的对应sheet
            extracted_data.to_excel(wb, sheet_name=sheet_name, index=False)
            extracted_data.to_excel('new.xlsx', index=False)
    
    df_extracted = pd.read_excel('new.xlsx', sheet_name=None,engine='openpyxl')
    
    # 创建一个新的Excel写入器
    writer = pd.ExcelWriter('merged_1023.xlsx')
    
    # 遍历抽取的Excel的每个sheet
    for sheet_name, df_sheet in df_extracted.items():
        # 将每个sheet写入新的Excel中
        df_sheet.to_excel(writer, sheet_name, index=False)
    
    # 保存并关闭新的Excel
    writer.close()
    wb.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    详细的注释已经写在上面,可以根据自己的需求和条件选择相应的文件进行数据提取

    合并结果如下:

    在这里插入图片描述

  • 相关阅读:
    解决运行Pycharm中pip升级成功,但安装第三方包却未生效问题
    vue项目推荐组件/工具库清单
    自动对话系统
    [CISCN 2019初赛]Love Math - RCE(异或绕过)
    PLGA纳米粒负载环丙沙星Ciprofloxacin-PLGA|甲硝唑修饰PLGA纳米粒PLGA-Metronidazole
    Chrome中如何导出和导入书签
    【笔记】echarts图表的缩放和鼠标滚动冲突的处理解决方案
    网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术
    机器学习技术(六)——有监督学习算法之线性回归算法实操
    Java mybatis spring习题
  • 原文地址:https://blog.csdn.net/H931053/article/details/133996297