6个Python办公黑科技,助你提升工作效率

目录
  • 一、解析PDF(简历内推)
  • 二、发送邮件
  • 三、操作execl
    • 1. 关联公式:Vlookup
    • 2. 数据透视表
    • 3. 对比两列差异
    • 4. 去除重复值
    • 5. 缺失值处理
    • 6. 多条件筛选
    • 7. 模糊筛选数据
    • 8. 分类汇总
    • 9. 条件计算
    • 10. 删除数据间的空格
  • 四、画图分析
  • 五、解析word(docx、doc)
  • 六、计算器
  • 总结

一、解析PDF(简历内推)

应用场景:简历内推(解析内容:包括不限于姓名、邮箱、电话号码、学历等信息)

输入:要解析的文件路径

输出:需要解析的内容(点我主页,详见历史文章)

环境准备:python 3.6 、mac(下文中doc转docx是mac写法,windows更简单,导入win32的包即可)

依赖包:

# encoding: utf-8
import os, sys
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator

二、发送邮件

有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。

port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。

local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

案例:

#!/usr/bin/python# -*- coding: UTF-8 -*- import smtplibfrom email.mime.text import MIMETextfrom email.header import Header sender = 'from@runoob.com'# 西红柿微:ZPYDWXYreceivers = ['1221121@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')message['From'] = Header("不吃西红柿", 'utf-8')   # 发送者message['To'] =  Header("测试", 'utf-8')        # 接收者 subject = 'Python SMTP 邮件测试'message['Subject'] = Header(subject, 'utf-8')  try:    smtpObj = smtplib.SMTP('localhost')    smtpObj.sendmail(sender, receivers, message.as_string())    print "邮件发送成功"except smtplib.SMTPException:    print "Error: 无法发送邮件"

三、操作execl

1. 关联公式:Vlookup

vlookup是excel几乎最常用的公式,一般用于两个表的关联查询等。所以我先把这张表分为两个表。

#查看订单明细号是否重复,结果是没。
df1["订单明细号"].duplicated().value_counts()
df2["订单明细号"].duplicated().value_counts()

df_c=pd.merge(df1,df2,on="订单明细号",how="left")

2. 数据透视表

需求:想知道每个地区的业务员分别赚取的利润总和与利润平均数。

pd.pivot_table(sale,index="地区名称",columns="业务员名称",values="利润",aggfunc=[np.sum,np.mean])

3. 对比两列差异

需求:比较订单明细号与订单明细号2的差异并显示出来。

sale["订单明细号2"]=sale["订单明细号"]

#在订单明细号2里前10个都+1.
sale["订单明细号2"][1:10]=sale["订单明细号2"][1:10]+1

#差异输出
result=sale.loc[sale["订单明细号"].isin(sale["订单明细号2"])==False]

4. 去除重复值

需求:去除业务员编码的重复值

sale.drop_duplicates("业务员编码",inplace=True)

5. 缺失值处理

#用0填充缺失值
sale["客户名称"]=sale["客户名称"].fillna(0)
#删除有客户编码缺失值的行
sale.dropna(subset=["客户编码"])

6. 多条件筛选

需求:想知道业务员张爱,在北京区域卖的商品订单金额大于6000的信息。

sale.loc[(sale["地区名称"]=="北京")&(sale["业务员名称"]=="张爱")&(sale["订单金额"]>5000)]

7. 模糊筛选数据

需求:筛选存货名称含有"三星"或则含有"索尼"的信息。

sale.loc[sale["存货名称"].str.contains("三星|索尼")]

8. 分类汇总

需求: 北京区域各业务员的利润总额。

sale.groupby(["地区名称","业务员名称"])["利润"].sum()

9. 条件计算

需求:存货名称含“三星字眼”并且税费高于1000的订单有几个?这些订单的利润总和和平均利润是多少?(或者最小值,最大值,四分位数,标注差)

sale.loc[sale["存货名称"].str.contains("三星")&(sale["税费"]>=1000)][["订单明细号","利润"]].describe()

10. 删除数据间的空格

需求:删除存货名称两边的空格。

sale["存货名称"].map(lambda s :s.strip(""))

四、画图分析

英雄联盟防御力:

防御能力最低的英雄(1级): 暗夜猎手,魔法猫咪,万花通灵

防御能力最高的英雄(10级): 正义巨像,披甲龙龟

安妮、卡尔玛能力矩阵:

代码示例:

# encoding: utf-8
import json
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.charts import Radar

def draw_Radar():
    from pyecharts.charts import Radar
    radar = Radar()
    # //由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
    radar_data = [[10, 10, 10, 10, 10]]
    radar_data1 = [[2, 10, 3, 6, 3]]
    radar_data2 = [[1, 8, 7, 5, 8]]

    # //设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同
    schema = [
        ("物理", 100), ("魔法", 10), ("防御", 10),("难度", 10),("喜好", 10)
    ]
    # //传入坐标
    radar.add_schema(schema)
    radar.add("满分", radar_data)
    # //一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色
    radar.add("安妮", radar_data1, color="#E37911")
    radar.add("卡尔玛", radar_data2, color="#1C86EE")
    radar.render()

if __name__ == '__main__':

    draw_Radar()

五、解析word(docx、doc)

依赖包:

# encoding: utf-8
import os, sys
import docx
def word_reader(file):
    try:
        # docx 直接读
        if 'docx' in file:
            res = ''
            f = docx.Document(file)
            for para in f.paragraphs:
                res = res + '\n' +para.text
        else:
            # 先转格式doc>docx
            os.system("textutil -convert docx '%s'"%file)
            word_reader(file+'x')
            res = ''
            f = docx.Document(file+'x')
            for para in f.paragraphs:
                res = res + '\n' +para.text
        return res
    except:
        # print(file, 'read failed')
        return ''

六、计算器

math模块为浮点运算提供了对底层函数库的访问:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python实现自动化办公邮件合并功能

    经常使用word办公的小伙伴们经常会遇到邮件合并的任务,通常会将数量有限的表格中的信息通过word的邮件合并功能,自动生成word文档,操作熟练的技术员通常不到十分钟就可以合并几十份邮件.那么如果遇到成千上万份的邮件需要合并并且需要各自生成文件呢?一个excel大佬也需要很长时间吧!既然我们很难在excel上追上大佬的脚步,何不另辟蹊径,找一条更适合自己的方法呢? 我是一年多前接触到python自动化办公的,通过进一步的学习,发现平时我们的办公效率可以通过使用python的自动化办公方法从而进一

  • python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单

    首先,那肯定是用python获取学校发下来的未学习名单,但是我忘记我之前用什么来操作办公软件了(最后项目作出来的时候才想起来是pandas),我就上网搜了一下,试了很多库但是都不支持xlsx文件格式(只支持最老版本的xls),最终openpyxl成功的读取了xlsx文件,于是我就用了openpyxl库来读取文件,下面是python代码 studyedstudent = [] wb = load_workbook(xlsx_path) sheets = wb.worksheets # 获取当前所有

  • Python办公自动化之Excel(中)

    准备 首先,我们需要安装依赖包 # 安装依赖包 pip3 install openpyxl 读取数据 使用 openpyxl 中的 load_workbook(filepath) 加载本地一个 Excel 文件,返回结果是一个工作簿对象 import openpyxl # 加载本地的Excel文件 wb = openpyxl.load_workbook(file_path) 利用工作簿对象,可以获取所有的 Sheet 名称及 Sheet 列表 def get_all_sheet_names(wb

  • Python办公自动化之教你用Python批量识别发票并录入到Excel表格中

    一.场景描述 这里有以四张发票为例(辰哥网上搜的),将发票图片放到pic文件夹下. 随便打开一张发票 提取目标:金额.名称.纳税人识别号.开票人. 最后将每一张发票的这四个内容保存到excel中: 二.准备环境 需要用到的库如下: from PIL import Image as PI import pyocr import pyocr.builders from cnocr import CnOcr 安装的命令如下: pip install pyocr pip install cnocr 发票

  • Python办公自动化之教你如何用Python将任意文件转为PDF格式

    一.word转PDF 这里借助Python的docx2pdf去完成转换操作,该库的安装命令如下: pip install docx2pdf 目标:读取文件夹下的全部word文件,然后进行转换,最后保存到对应的文件夹中. 这里辰哥新建两个word文件作为演示,打开其中一个word看看 里面不仅有文字,同时包含有图片 import os from docx2pdf import convert word_path = 'word_path' word_to_pdf = 'word_to_pdf' f

  • 6个Python办公黑科技,助你提升工作效率

    目录 一.解析PDF(简历内推) 二.发送邮件 三.操作execl 1. 关联公式:Vlookup 2. 数据透视表 3. 对比两列差异 4. 去除重复值 5. 缺失值处理 6. 多条件筛选 7. 模糊筛选数据 8. 分类汇总 9. 条件计算 10. 删除数据间的空格 四.画图分析 五.解析word(docx.doc) 六.计算器 总结 一.解析PDF(简历内推) 应用场景:简历内推(解析内容:包括不限于姓名.邮箱.电话号码.学历等信息) 输入:要解析的文件路径 输出:需要解析的内容(点我主页,

  • 56个实用的JavaScript 工具函数助你提升开发效率

    目录 1. 数字操作 (1)生成指定范围随机数 2. 数组操作 (1)数组乱序 (2)数组扁平化 (3)数组中获取随机数 3. 字符串操作 (1)生成随机字符串 (2)字符串首字母大写 (3)手机号中间四位变成* (4)驼峰命名转换成短横线命名 (5)短横线命名转换成驼峰命名 (6)全角转换为半角 (7)半角转换为全角 4. 格式转化 (1)数字转化为大写金额 (2)数字转化为中文数字 5. 操作存储 (1)存储loalStorage (2)获取localStorage (3)删除localSt

  • Python如何处理大数据?3个技巧效率提升攻略(推荐)

    如果你有个5.6 G 大小的文件,想把文件内容读出来做一些处理然后存到另外的文件去,你会使用什么进行处理呢?不用在线等,给几个错误示范:有人用multiprocessing 处理,但是效率非常低.于是,有人用python处理大文件还是会存在效率上的问题.因为效率只是和预期的时间有关,不会报错,报错代表程序本身出现问题了~ 所以,为什么用python处理大文件总有效率问题? 如果工作需要,立刻处理一个大文件,你需要注意两点: 01.大型文件的读取效率 面对100w行的大型数据,经过测试各种文件读取

  • localStorage的黑科技-js和css缓存机制

    一.发现黑科技的起因 今天在微信公众号看到一篇技术博文,想用印象笔记收藏,所以发送了文章链接到pc上.然后习惯性地打开控制台,看看源码,想了解下最近微信用了什么新技术. 呵呵,以下勾起了我侦探的欲望.页面加载后的异常点就是只加载了一个js,如下图所示: 我很诧异,为什么已经开启了Disable cache,js只加载了一个,而且体积这么小.接着,我按住Ctrl+O进行资源文件查找,发现我被"忽悠"了.其实根本就不止一个js文件. 脑袋里灵光一闪,不会是用localStorage做了缓存

  • 5分钟了解MySQL5.7中union all用法的黑科技

    union all在MySQL5.6下的表现 Part1:MySQL5.6.25 [root@HE1 ~]# MySQL -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.25-log MySQL Community Server (GPL) Copyright (c) 2000,

  • Android黑科技之读取用户短信+修改系统短信数据库

    安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波"黑科技". 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证码,一些app马上就能自动获取并填上验证码,省去我们手动填写验证码.原理就是通过Android的ContentProvider组件间接访问系统的短信数据库,获取所有短信内容.下面来演示一下. 布局很简单,如下: 代码如下: public class MainActivity extends

  • c++中比较好用的“黑科技”

    一.黑科技函数(常用的我就不写了,例如sort函数) 1.next_permutation(a+1,a+1+n) a[1-n]全排列 2.reverse(a+1,a+1+n) 将a[1-n]的数翻转过来 3.*max_element(a+1,a+1+n) 找出a[1-n]数字最大值(*是因为这个函数是一个指针) 4.*min_element(a+1,a+1+n) 找出a[1-n]数字的最小值(*是因为这个函数是一个指针) 5.accumulate(a+1,a+n,0) 找出a[1-n]数字的和(

  • 详解element-ui 表单校验 Rules 配置 常用黑科技

    type 指示type要使用的验证器.可识别的类型值为: string:类型必须为string.type 默认是 string // 校验 string: [ {type: 'string', message: `请输入字符串`, trigger: 'blur'} ] <el-form-item label="测试字段" prop="string"> <el-input v-model.number="form.string"

  • python 中的9个实用技巧,助你提高开发效率

    整理字符串输入 整理用户输入的问题在编程过程中极为常见.通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作.但是如果问题很复杂,可能有更好的方法来解决: user_input = "This string has some whitespaces... " character_map = { ord( ) : , ord( ) : , ord( ) : None } user_input.translate(character_map) #

  • Java黑科技之通过Google Java Style 文件配置IDEA和Ecplise代码风格

    一.引言 每一个公司,团队的代码风格可能都不一样,只要团队内有自己统一的风格就好.接下来,介绍Google Java 代码风格,并且如何在IDEA和Ecplise两种比较流行的Java集成开发环境中配置Google Java 代码风格. 如果不看google代码风格详细介绍的,可以下拉到最后查看 IDEA 和 Ecplise 配置 Google Java Style 教程和 Google Java Style 文件下载. 二.Google Java Style 介绍 2.1 源文件基础 文件名

随机推荐