Python操作Excel之数据提取

最近发现excel数据量极大,并且通过简单的数据操作不能提取到我需要的数据,如果单独操作,数据量太大耗时太长。
想着通过简单的方式,并且快速提取数据,就想到了Python。
python操作Excel使用的openyxl和pandas对Excel进行操作。
代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020-02-24 下午 03:43
# @Author  : Zhanxing
# @Site    :
# @File    : 提取字段.py
# @Software: PyCharm

import openpyxl
import pandas as pd
from xlutils.copy import copy
df=pd.read_excel(‘222.xlsx‘,sheet_name=‘XXX‘)

data=(df[[‘XXX‘,‘XXX‘]])
data.to_excel("new.xlsx", index=False)

class Excel:
    def __init__(self, excel_file):
        self.excel = openpyxl.load_workbook(excel_file)
        self.sheet_name = self.excel.get_sheet_names()
        self.sheet = self.excel.get_sheet_by_name(self.sheet_name[0])

    def excel_read(self):
        """
        返回excel每一行的生成器对象
        :return:
        """
        yield from self.sheet.iter_rows(min_row=2)

def run(excel_file, new_excel):
    """
    :param excel_file: 要处理的excel的路径
    :param new_excel:  处理后要保存的文件名
    :return:
    """
    excel = Excel(excel_file)
    excel_line = [line for line in excel.excel_read()]
    for line in excel_line:
        for cell in line:
            if isinstance(cell.value, int):
                continue
            people_name = cell.value.strip(‘[]‘).split(‘,‘)
            for num in range(len(people_name)):
                if ‘XX‘ in people_name[num]:
                    excel.sheet.cell(row=cell.row, column=cell.column, value=people_name[num])
                    break
    excel.excel.save(new_excel)

if __name__ == ‘__main__‘:
    run(‘new.xlsx‘,‘11.xlsx‘)

原文地址:https://blog.51cto.com/zhanx/2475595

时间: 2024-10-10 04:06:08

Python操作Excel之数据提取的相关文章

八、python操作excel及网络编程和异常处理

一.python操作excel 1.读excel,xlrd模块用来读excel # book = xlrd.open_workbook(r'students.xlsx')#打开excel# print(book.sheet_names())#获取所有sheet的名字# sheet = book.sheet_by_index(0)#根据sheet页的位置去取sheet# sheet2 = book.sheet_by_name('Sheet2')#根据sheet页的名字获取sheet页# print

python 操作excel表格

Python 操作excel 表格 #coding=utf-8 import xlsxwriter #1.创建excel 对象 work = xlsxwriter.Workbook('hello.xlsk')#在当前目录下创建一个Excel文件 #2. 创建表格 worksheet = work.add_worksheet('int') #3.写入内容 title_index = ["A","B","C","D","

python基础(六)python操作excel

一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的.这几个模块使用pip安装即可,下面是这几个模块的使用. 二.xlrd模块,xlrd模块用来读excel,具体用法如下: import xlrd #打开excel wb=xlrd.open_workbook('abc.xlsx')#打开的这个excel必须存在,否则会报错 print(wb.shee

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

自动化办公:python操作Excel

1.安装 -- upgrade pippython -m pip install --- install pypipip install pypi 执行python setup.py install进行安装xlrd Python操作Excel,主要用到xlrd和xlwt这两个库,即xlrd是读Excel,xlwt是写Excel的库 pip install xlrdpip install xlwtpip install xlutilspip install xlsxwriter 2.操作一个简单的

使用python操作elasticsearch实现数据插入分析

前言: 例行公事,有些人可能不太了解elasticsearch,下面搜了一段,大家瞅一眼. Elasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析.它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部.除了通过HTTP直接访问Elasticsearch,还可以通过支持Java.JavaScript.Python及更多语言的客户端库来访问.它也支持集成Apache Hadoop环境.Elasticsearch在有些处理海量数据的公司中已经

python 操作 excel

python操作execel主要是读写 读 通过 http://pypi.python.org/pypi/xlrd 写 通过 http://pypi.python.org/pypi/xlwd 下载tar包,解压出来,安装即可, 如果没有权限,将xlrd/xlrd拷贝到当前目录下,也可以使用. 如下是xlrd的使用例子 1 # -*- coding: utf-8 -*- 2 import xdrlib ,sys 3 import xlrd 4 import sys 5 def open_excel

Python操作excel工具

python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式的 3.xlsxwtiter 只能写入excel操作,同时支持xls格式和xlsx的 附python操作excel的常见参考链接: https://xlsxwriter.readthedocs.io/format.html https://blog.csdn.net/qq_24495287/arti

python操作MONGODB数据库,提取部分数据再存储

目标:从一个数据库中提取几个集合中的部分数据,组合起来一共一万条.几个集合,不足一千条数据的集合就全部提取,够一千条的就用一万减去不足一千的,再除以大于一千的集合个数,得到的值即为所需提取文档的个数.从每个集合中提取的数据存放到新的对应集合中,新集合名称为原先集合加"_col". 用到相关技术点: 操作MONGODB: 先通过IP和端口号连接到MONGODB所在的机器,得到一个MONGODB客户端对象,然后认证某个数据库的账号密码连接到该数据库,得到一个该数据库的对象.一个数据库下有很