您的位置:首页技术文章
文章详情页

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

【字号: 日期:2022-08-06 17:10:18浏览:2作者:猪猪
目录一、解析PDF(简历内推)二、发送邮件三、操作execl1. 关联公式:Vlookup2. 数据透视表3. 对比两列差异4. 去除重复值5. 缺失值处理6. 多条件筛选7. 模糊筛选数据8. 分类汇总9. 条件计算10. 删除数据间的空格四、画图分析五、解析word(docx、doc)六、计算器总结一、解析PDF(简历内推)

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

输入:要解析的文件路径

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

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

依赖包:

# encoding: utf-8import os, sysfrom pdfminer.pdfparser import PDFParserfrom pdfminer.pdfdocument import PDFDocumentfrom pdfminer.pdfpage import PDFPagefrom pdfminer.pdfinterp import PDFResourceManagerfrom pdfminer.pdfinterp import PDFPageInterpreterfrom pdfminer.layout import LAParamsfrom pdfminer.converter import PDFPageAggregator二、发送邮件

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

import smtplibsmtpObj = 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: 无法发送邮件'三、操作execl1. 关联公式: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级): 正义巨像,披甲龙龟

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

安妮、卡尔玛能力矩阵:

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

代码示例:

# encoding: utf-8import jsonfrom pyecharts.charts import Piefrom pyecharts import options as optsfrom pyecharts.charts import Radardef 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-8import os, sysimport 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.textelse: # 先转格式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.textreturn res except:# print(file, ’read failed’)return ’’六、计算器

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

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

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

标签: Python 编程