本文用的主要是pandas,绘图用的库是plotly,实现的Excel的常用功能有:
-
Python和Excel的交互
-
vlookup函数
-
数据透视表
-
绘图
以后如果发掘了更多Excel的功能,会回来继续更新和补充。开始之前,首先按照惯例加载pandas包:
import numpy as np
import pandas as pd
pd.set_option('max_columns', 10)
pd.set_option('max_rows', 20)
pd.set_option('display.float_format', lambda x: '%.2f' % x) # 禁用科学计数法
一、Python和Excel的交互
pandas里最常用的和Excel I/O有关的四个函数是read_csv/ read_excel/ to_csv/ to_excel,它们都有特定的参数设置,可以定制想要的读取和导出效果。比如说想要读取这样一张表的左上部分:
可以用pd.read_excel("test.xlsx", header=1, nrows=17, usecols=3)
,返回结果:
df
工号 姓名 性别 部门
0 A0001 张伟 男 工程
1 A0002 王秀英 女 人事
2 A0003 王芳 女 行政
3 A0004 郑勇 男 市场
4 A0005 张丽 女 研发
5 A0006 王艳 女 后勤
6 A0007 李勇 男 市场
7 A0008 李娟 女 工程
8 A0009 张静 女 人事
9 A0010 王磊 男 行政
10 A0011 李娜 女 市场
11 A0012 刘诗雯 女 研发
12 A0013 王刚 男 后勤
13 A0014 叶倩 女 后勤
14 A0015 金雯雯 女 市场
15 A0016 王超杰 男 工程
16 A0017 李军 男 人事
输出函数也同理,使用多少列,要不要index,标题怎么放,都可以控制。
二、vlookup函数
vlookup号称是Excel里的神器之一,用途很广泛,下面的例子来自豆瓣,VLOOKUP函数最常用的10种用法,你会几种?
【案例一】
问题:A3:B7单元格区域为字母等级查询表,表示60分以下为E级、60~69分为D级、70~79分为C级、80~89分为B级、90分以上为A级。D:G列为初二年级1班语文测验成绩表,如何根据语文成绩返回其字母等级?
方法:在H3:H13单元格区域中输入=VLOOKUP(G3, $A$3:$B$7, 2)
python实现:
df = pd.read_excel("test.xlsx", sheet_name=0)
def grade_to_point(x):
if x >= 90:
return 'A'
elif x >= 80:
return 'B'
elif x >= 70:
return 'C'
elif x >= 60:
return 'D'
else:
return 'E'
df['等级'] = df['语文'].apply(grade_to_point)
df
学号 姓名 性别 语文 等级
0 101 王小丽 女 69 D
1 102 王宝勤 男 85 B
2 103 杨玉萍 女 49 E
3 104 田东会 女 90 A
4 105 陈雪蛟 女 73 C
5 106 杨建丰 男 42 E
6 107 黎梅佳 女 79 C
7 108 张兴 男 91 A
8 109 马进春 女 48 E
9 110 魏改娟 女 100 A
10 111 王冰研 女 64 D
【案例二】
问题:在Sheet1里面如何查找折旧明细表中对应编号下的月折旧额?(跨表查询)
方法:在Sheet1里面的C2:C4单元格输入 =VLOOKUP(A2, 折旧明细表!A$2:$G$12, 7, 0)
python实现:使用merge将两个表按照编号连接起来就行
df1 =