下班晚,加班久感觉已经成为现代打工人的通病,每天将大部分时间浪费在一些机械,重复的工作上,如何提升你自己的工作效率才是关键。
今天给大家分享6个 Python 办公小技巧,让你的工作效率倍增,欢迎大家学习收藏、喜欢点赞支持。
废话不说,让我们开始学习吧。
一、解析PDF(简历内推)
**应用场景:**简历内推(解析内容:包括不限于姓名、邮箱、电话号码、学历等信息)
**输入:**要解析的文件路径
输出:需要解析的内容
环境准备:python 3.6 、mac(下文中doc转docx是mac写法,windows更简单,导入win32的包即可)
依赖包:
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
def pdf_reader(file):
fp = open(file, "rb")
# 创建一个与文档相关联的解释器
parser = PDFParser(fp)
# PDF文档对象
doc = PDFDocument(parser)
# 链接解释器和文档对象
parser.set_document(doc)
# doc.set_paeser(parser)
# 初始化文档
# doc.initialize("")
# 创建PDF资源管理器
resource = PDFResourceManager()
# 参数分析器
laparam = LAParams()
# 创建一个聚合器
device = PDFPageAggregator(resource, laparams=laparam)
# 创建PDF页面解释器
interpreter = PDFPageInterpreter(resource, device)
# 使用文档对象得到页面集合
res = ''
for page in PDFPage.create_pages(doc):
# 使用页面解释器来读取
interpreter.process_page(page)
# 使用聚合器来获取内容
layout = device.get_result()
for out in layout:
if hasattr(out, "get_text"):
res = res + '' + out.get_text()
return res
二、发送邮件
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
- host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: http://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: 发送消息
案例:
from email.mime.text import MIMEText
from email.header import Header
sender = 'from@runoob.com'
receivers = ['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')
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
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["订单明细号"]
sale["订单明细号2"][1:10]=sale["订单明细号2"][1:10]+1
result=sale.loc[sale["订单明细号"].isin(sale["订单明细号2"])==False]
4. 去除重复值
需求:去除业务员编码的重复值
sale.drop_duplicates("业务员编码",inplace=True)
5. 缺失值处理
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级): 正义巨像,披甲龙龟
安妮、卡尔玛能力矩阵:
代码示例:
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.charts import Radar
from pyecharts.charts import Radar
# //由于雷达图传入的数据得为多维数据,所以这里需要做一下处理
radar_data = [[10, 10, 10, 10, 10]]
radar_data1 = [[2, 10, 3, 6, 3]]
radar_data2 = [[1, 8, 7, 5, 8]]
# //设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同
("物理", 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")
if __name__ == '__main__':
五、解析word(docx、doc)
依赖包:
if 'docx' in file:
f = docx.Document(file)
for para in f.paragraphs:
res = res + '\n' +para.text
# 先转格式doc>docx
os.system("textutil -convert docx '%s'"%file)
word_reader(file+'x')
f = docx.Document(file+'x')
for para in f.paragraphs:
res = res + '\n' +para.text
# print(file, 'read failed')
六、计算器
math模块为浮点运算提供了对底层函数库的访问:
>>> math.cos(math.pi / 4)
学习资源推荐
除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
二、Python基础学习
1. 开发工具
2. 学习笔记
3. 学习视频
三、Python小白必备手册
四、数据分析全套资源
五、Python面试集锦
1. 面试资料
2. 简历模板
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!