xlsx表格怎么自动排序123(Python玩转Excel:实现函数自动填充、数据排序)

wufei123 发布于 2023-10-18 阅读(806)

工作中,大家经常会使用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 单价 数量 总价

ID1 Book1 10.510NaN2 Book2 11.010NaN3 Book3 11.510NaN4 Book4 12.010NaN在Excel里面,我们可以写函数,自动填充,也比较方便但在Python里只需要一行代码即可,虽然这看起来似乎还是没有Excel速度快,操作方便,但当数据量很大的时候,且计算比较繁琐的时候,pandas数据操作优势就凸显出来了。

1. books[总价]=books[单价]*books[数量]也可以使用下面的语句实现,显然上面方法比较简单,但下面方法很适合于从某一段开始计算2.for i in books.index: books[。

总价].at[i]=books[单价].at[i]*books[数量].at[i]运行结果:NAME1 单价 数量 总价ID1 Book1 10.5 10 105.02 Book2 11.0 10 110

.03 Book3 11.5 10 115.04 Book4 12.0 10 120.0下面,我们给每本书涨2块钱第一种方法:books[单价]= books[单价]+2第二种方法:使用lambda表达式

books[单价]=books[单价].apply(lambda x:x+2)NAME1 单价 数量 总价ID1 Book1 12.5 10 105.02 Book2 13

.0 10 110.03 Book3 13.5 10 115.04 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=

0ascending 是否按指定列的数组升序排列,默认为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

201no5 product5 65no7 product7 45no9 product9 199yes8 product8 156yes3 product3 123yes4 product4 111yes

1 product1 100yes2 product2 88yes6 product6 76yes绘图前准备工作,数据筛选和过滤(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 pddefage18_20(age):#18<=age<=20 Python特有写法。

return18<=age<=20deflevel_s(score):return85<=score<=100stu = pd.read_excel(students.xlsx,index_col=ID

)stu=stu.loc[stu[年龄].apply(age18_20)].loc[stu[成绩].apply(level_s)]print(stu)运行结果:姓名年龄 成绩ID5李2 18 88

8王3 19 86大家可以优化上面代码,使用 lambda表达式,尽量不使用函数,显得代码简洁、高效和高大上。高大上的数据可视化

import pandas as pdimport 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()- END -文源网络,仅供学习之用。如有侵权,联系删除。往期精彩

◆  50款开源工具你都用过吗?◆  python+C、C++混合编程的应用◆  python网络爬虫的基本原理详解◆  Python自动操控excel,一小时解决你一天的工作◆  如何用Python增强Excel,减少处理复杂数据的痛苦?

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

欧意 新闻90159