工作中,大家经常会使用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:实现函数自动填充、数据排序相关推荐

  1. C++ 接口 函数导出_Python玩转Excel:实现函数自动填充、数据排序

    工作中,大家经常会使用excel去处理数据以及展示,但是对于部分工作我们可以借助程序帮忙实现,达到高效解决问题的效果. 比如将接口返回的json解析并保存结果到excel中,按一定规律处理excel中 ...

  2. 自动化办公之excel教程(2):各种数据的输入,自动填充数据,表格操作小技巧

    一.各种类型数据的录入 1.数据输入 加粗样式选中单元格后,左上侧会出现字母和数字,如图中的C9,即可在文中输入数据. 2.货币输入 在某一单元格输入框里右键选中设置单元格格式. 3.数字输入 如果我 ...

  3. Excel电子表格隔行自动填充底色

    Excel电子表格隔行自动填充底色 当Excel电子表格中存在大篇幅的数据时,用户查看起来非常的容易看错行.这时用户就会想,要是每隔一行表格用不同的颜色给区分出来,这样看起来就方便直观了许多.下面我们 ...

  4. java hutool poi 基于excel模板文件,填充数据的思路

    需求 用户可下载excel模板文件,填充数据后上传,也可以下载已上传所有数据的excel,模板文件和含数据excel,都有列头及列说明:由此想到模板文件和含数据excel共用一份excel模板,下载数 ...

  5. Excel公式不能自动更新数据

    Excel公式不能自动更新数据 问题及解决办法 原因:Excel的公式计算配置为"手动"状态 问题及解决办法 原因:Excel的公式计算配置为"手动"状态 单击 ...

  6. 【Excel】添加自动填充时指定的内容

    [Excel]添加自动填充时指定的内容 操作: 文件 – 选项 – 高级 – 常规 – 编辑自定义列表 – 输入序列 – 添加 – 确定 – 确定 例子: 比如需要输入:周一,周二,周三,周四,周五, ...

  7. csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...

    本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...

  8. pandas 取excel 中的某一列_干货Python Pandas 做数据分析之玩转 Excel 报表分析

    本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...

  9. Python Pandas 做数据分析之玩转 Excel 报表分析

    各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Excel 数据的话题.因为工作中一直在用 Pandas,所以积累了一些小技巧,在此借 GitChat 平台和大家分享一下心得 ...

最新文章

  1. js get请求_URL解析、HTTP请求以及浏览器和爬虫得到响应的区别
  2. 有一段时间没来这里了,
  3. C语言sendto()函数:经socket传送数据
  4. Java多线程系列--“JUC锁”05之 非公平锁
  5. 基于javaweb(springboot+mybatis)宠物医院预约管理系统设计和实现
  6. jmeter性能测试实例_实例教程:手把手教你Jmeter性能测试
  7. FPGA跨时钟域处理方法延迟法
  8. Java文件流字节流和字符流的区别
  9. CodeGear 出品 Delphi for PHP
  10. android去除gps漂移代码,GPS漂移过滤算法
  11. 机器学习复习:线性回归1
  12. Swift5代码添加约束
  13. 高级linux内核软件工程师
  14. 第十讲 老子智慧与人际交往的识人
  15. ASP + Serv-u 實現FTP的代碼
  16. ThinkPad P52 安装Ubuntu16双系统踩雷与建议 (图显P1000)
  17. 利用shift连点五次进入电脑
  18. Java 下载多个文件至内存并压缩文件包返回,无需保存至本地打包压缩
  19. python教育领域_【松勤教育】Python为何这么火,究竟有哪些优势?
  20. 时间的玫瑰-让自己慢下来(24)

热门文章

  1. war上传linux出错,tomcat部署war出错的问题
  2. 开源ETL利器—Kettle的实战教程
  3. 【渝粤教育】国家开放大学2019年春季 1110工程地质 参考试题
  4. ACREL-3000电能管理系统在金桥德勤电能管理系统项目中的应用
  5. Solving the PowerPoint Predicament: Using Digital Media for Effective Communication
  6. 链游玩家:链游中的同质资产是什么
  7. 利用Python和Power BI做Yelp大数据分析项目
  8. 岗位介绍-引子(能力三核模型)
  9. AppAnnie——AppStore统计工具
  10. 打开金蝶旗舰版图标提示:类型不匹配