python按照日期筛选excel_Python玩转Excel:实现函数自动填充、数据排序
工作中,大家经常会使用excel去处理数据以及展示,但是对于部分工作我们可以借助程序帮忙实现,达到高效解决问题的效果。
比如将接口返回的json解析并保存结果到excel中,按一定规律处理excel中的数据然后写入到新的excel文件中,汇总来自多个文件的内容到一个excel中等等。
平时在工作中遇到比较繁琐的数据需要写入到excel中,除非excel的内置公式可以处理,否则我会第一时间想到使用python处理。
在处理海(大)量数据时,用Excel处理可能不会那么方便操作,特别是列很多,一屏显示不全的话,操作起来确实不便。如果我们能够熟练掌握Python操作Excel,便可大大提高工作效率。
好用到爆的自动填充功能
下面我们模仿Excel,用Pandas实现函数自动填充功能,计算列。
读取文件,计算总价
import pandas as pd
#读取Excel文件
books = pd.read_excel("book1.xlsx",index_col="ID")
print(books)
************************
NAME1 单价 数量 总价
ID
1 Book1 10.5 10 NaN
2 Book2 11.0 10 NaN
3 Book3 11.5 10 NaN
4 Book4 12.0 10 NaN
在Excel里面,我们可以写函数,自动填充,也比较方便。
但在Python里只需要一行代码即可,虽然这看起来似乎还是没有Excel速度快,操作方便,但当数据量很大的时候,且计算比较繁琐的时候,pandas数据操作优势就凸显出来了。
1. books["总价"]=books["单价"]*books["数量"]
也可以使用下面的语句实现,显然上面方法比较简单,但下面方法很适合于从某一段开始计算。
2. for i in books.index: books["总价"].at[i]=books["单价"].at[i]*books["数量"].at[i]
运行结果:
NAME1 单价 数量 总价
ID
1 Book1 10.5 10 105.0
2 Book2 11.0 10 110.0
3 Book3 11.5 10 115.0
4 Book4 12.0 10 120.0
下面,我们给每本书涨2块钱
第一种方法:
books["单价"]= books["单价"]+2
第二种方法:使用lambda表达式
books["单价"]=books["单价"].apply(lambda x:x+2)
NAME1 单价 数量 总价
ID
1 Book1 12.5 10 105.0
2 Book2 13.0 10 110.0
3 Book3 13.5 10 115.0
4 Book4 14.0 10 120.0
只要你乐意,怎么排都行
数据排序,函数sort_values用法:
DataFrame.sort_values(by="##",axis=0,ascending=True, inplace=False, na_position="last")
参数说明:
参数 说明
by 指定列名(axis=0或"index")或索引值(axis=1或"columns")
axis 若axis=0或"index",则按照指定列中数据大小排序;若axis=1或"columns",则按照指定索引中数据大小排序,默认axis=0
ascending 是否按指定列的数组升序排列,默认为True,即升序排列
inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position {"first","last"}, 设定缺失值的显示位置
下面我们对价格降序排列
import pandas as pdproducts = pd.read_excel("book2.xlsx",index_col="ID")
products.sort_values(by="价格",inplace=True,ascending=False)
print(products)
划重点:如果需要对满足两个条件的排序,by=[list]列表即可,是不是也很简单
products.sort_values(by=["是否值得购买","价格"],inplace=True,ascending= [True,False])
运行结果:
ID 商品 价格 是否值得购买
10 product10 201 no
5 product5 65 no
7 product7 45 no
9 product9 199 yes
8 product8 156 yes
3 product3 123 yes
4 product4 111 yes
1 product1 100 yes
2 product2 88 yes
6 product6 76 yes
绘图前准备工作,数据筛选和过滤(loc函数)
apply函数是pandas里面所有函数中自由度最高的函数。
该函数如下:
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds) 该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。
这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
目标:读取学生信息表,筛选出符合年龄段(18岁到20岁)和成绩段(85分到100分)的学生。
import pandas as pd
def age18_20(age):
#18<=age<=20 Python特有写法
return 18<=age<=20
def level_s(score):
return 85<=score<=100
stu = pd.read_excel("students.xlsx",index_col="ID")
stu=stu.loc[stu["年龄"].apply(age18_20)].loc[stu["成绩"].apply(level_s)]
print(stu)
运行结果:
姓名 年龄 成绩
ID
5 李2 18 88
8 王3 19 86
大家可以优化上面代码,使用 lambda表达式,尽量不使用函数,显得代码简洁、高效和高大上。
高大上的数据可视化
import pandas as pd
import matplotlib.pyplot as plt
#读取数据
stu = pd.read_excel("students.xlsx",index_col="ID")
#排序
stu.sort_values(by="成绩",inplace=True)
#生成柱状图
stu.plot.bar(x="姓名",y="成绩",color="orange",title="学生成绩表")
#或 plt.bar(stu["姓名"],stu["成绩"],color="orange")
#紧促显示
plt.tight_layout()
#显示图片
plt.show()
在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,800+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!
https://shimo.im/docs/JWCghr8prjCVCxxK/ 《Python学习资料》
关注公众号【Python圈子】,优质文章每日送达。
python按照日期筛选excel_Python玩转Excel:实现函数自动填充、数据排序相关推荐
- C++ 接口 函数导出_Python玩转Excel:实现函数自动填充、数据排序
工作中,大家经常会使用excel去处理数据以及展示,但是对于部分工作我们可以借助程序帮忙实现,达到高效解决问题的效果. 比如将接口返回的json解析并保存结果到excel中,按一定规律处理excel中 ...
- 自动化办公之excel教程(2):各种数据的输入,自动填充数据,表格操作小技巧
一.各种类型数据的录入 1.数据输入 加粗样式选中单元格后,左上侧会出现字母和数字,如图中的C9,即可在文中输入数据. 2.货币输入 在某一单元格输入框里右键选中设置单元格格式. 3.数字输入 如果我 ...
- Excel电子表格隔行自动填充底色
Excel电子表格隔行自动填充底色 当Excel电子表格中存在大篇幅的数据时,用户查看起来非常的容易看错行.这时用户就会想,要是每隔一行表格用不同的颜色给区分出来,这样看起来就方便直观了许多.下面我们 ...
- java hutool poi 基于excel模板文件,填充数据的思路
需求 用户可下载excel模板文件,填充数据后上传,也可以下载已上传所有数据的excel,模板文件和含数据excel,都有列头及列说明:由此想到模板文件和含数据excel共用一份excel模板,下载数 ...
- Excel公式不能自动更新数据
Excel公式不能自动更新数据 问题及解决办法 原因:Excel的公式计算配置为"手动"状态 问题及解决办法 原因:Excel的公式计算配置为"手动"状态 单击 ...
- 【Excel】添加自动填充时指定的内容
[Excel]添加自动填充时指定的内容 操作: 文件 – 选项 – 高级 – 常规 – 编辑自定义列表 – 输入序列 – 添加 – 确定 – 确定 例子: 比如需要输入:周一,周二,周三,周四,周五, ...
- csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...
本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...
- pandas 取excel 中的某一列_干货Python Pandas 做数据分析之玩转 Excel 报表分析
本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...
- Python Pandas 做数据分析之玩转 Excel 报表分析
各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Excel 数据的话题.因为工作中一直在用 Pandas,所以积累了一些小技巧,在此借 GitChat 平台和大家分享一下心得 ...
最新文章
- js get请求_URL解析、HTTP请求以及浏览器和爬虫得到响应的区别
- 有一段时间没来这里了,
- C语言sendto()函数:经socket传送数据
- Java多线程系列--“JUC锁”05之 非公平锁
- 基于javaweb(springboot+mybatis)宠物医院预约管理系统设计和实现
- jmeter性能测试实例_实例教程:手把手教你Jmeter性能测试
- FPGA跨时钟域处理方法延迟法
- Java文件流字节流和字符流的区别
- CodeGear 出品 Delphi for PHP
- android去除gps漂移代码,GPS漂移过滤算法
- 机器学习复习:线性回归1
- Swift5代码添加约束
- 高级linux内核软件工程师
- 第十讲 老子智慧与人际交往的识人
- ASP + Serv-u 實現FTP的代碼
- ThinkPad P52 安装Ubuntu16双系统踩雷与建议 (图显P1000)
- 利用shift连点五次进入电脑
- Java 下载多个文件至内存并压缩文件包返回,无需保存至本地打包压缩
- python教育领域_【松勤教育】Python为何这么火,究竟有哪些优势?
- 时间的玫瑰-让自己慢下来(24)
热门文章
- war上传linux出错,tomcat部署war出错的问题
- 开源ETL利器—Kettle的实战教程
- 【渝粤教育】国家开放大学2019年春季 1110工程地质 参考试题
- ACREL-3000电能管理系统在金桥德勤电能管理系统项目中的应用
- Solving the PowerPoint Predicament: Using Digital Media for Effective Communication
- 链游玩家:链游中的同质资产是什么
- 利用Python和Power BI做Yelp大数据分析项目
- 岗位介绍-引子(能力三核模型)
- AppAnnie——AppStore统计工具
- 打开金蝶旗舰版图标提示:类型不匹配