Python处理Excel数据筛选

发布时间:2024年01月17日

湖蓝几何球体LinkedIn Banner.png
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


前言

《几行Python代码,轻松搞定Excel表格数据去重》一文中梳理了用Python给数据去重,本文则梳理给Excel表格做数据筛选。

修改一下原数据文档《SRE成长记2023年四川特产销售额统计.xlsx》,去掉重复内容,表格数据如下:
在这里插入图片描述

实验场景

1. 筛选出指定的行数据存入新文件。

eg: 筛选出《SRE成长记2023年四川特产销售额统计.xlsx》中第2-5行特产数据,写入新文件

import pandas as pd
data0 = pd.DataFrame(pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据"))
data1 = data0.loc[2:5]  #注意行是从0开始
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本1.xlsx")
#打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本1.xlsx》,数据如下:
在这里插入图片描述

2. 筛选出指定的行数据、指定的列数据存入新文件

eg: 筛选出《SRE成长记2023年四川特产销售额统计.xlsx》中第2-5行特产数据,Q1和Q4的销售数据,写入新文件

import pandas as pd
data0 = pd.DataFrame(pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据"))
# print(data0.columns)
data1 = data0.loc[2:5,['特产\季度','Q1','Q4']]  #注意行是从0开始
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本2.xlsx")
#打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本2.xlsx》,数据如下:
在这里插入图片描述

3. 筛选出符合指定条件的行数据,存入新文件

eg:筛选出《SRE成长记2023年四川特产销售额统计.xlsx》中Q1销售额>=3000的农产品,存入新文件

import pandas as pd
# 定义一个函数
def greater_than_3000(a):
    return a >=3000
# 筛选目标数据
data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
data1 = data0.loc[data0['Q1'].apply(greater_than_3000)]
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本3.xlsx")
#打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本3.xlsx》,数据如下:
在这里插入图片描述

4. 筛选某一列中满足多个条件中至少1个条件的数据存入新文件

eg:筛选出《SRE成长记2023年四川特产销售额统计.xlsx》中Q1销售额>=3000或小于1500的农产品,存入新文件

import pandas as pd
# 定义函数
def sales_3000_1500(a):
    return a>=3000 or a<=1500

data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
data1 = data0.loc[(data0['Q1'].apply(sales_3000_1500))]
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本4.xlsx")
# 打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本4.xlsx》,数据如下:
在这里插入图片描述

5. 筛选某几列中多个条件中至少满足1个条件的数据存入新文件

eg:筛选出《SRE成长记2023年四川特产销售额统计.xlsx》中Q3-Q4至少有一个季度的销售额大于5000的农产品,存入新文件

import pandas as pd
# 定义函数
def greater_than_5000(a):
    return a >=5000

data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
data1 = data0.loc[(data0['Q3'].apply(greater_than_5000)) | (data0['Q4'].apply(greater_than_5000)) ]
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本5.xlsx")
#打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本5.xlsx》,数据如下:
在这里插入图片描述

6. 筛选某几列中多个条件中同时满足多个条件的数据存入新文件

eg:筛选出《SRE成长记2023年四川特产销售额统计.xlsx》下半年两个季度的销售额均大于1400的农产品,存入新文件

import pandas as pd
# 定义函数
def greater_than_1400(a):
    return a >=1400

data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
data1 = data0.loc[(data0['Q3'].apply(greater_than_1400)) & (data0['Q4'].apply(greater_than_1400)) ]
data1.to_excel("SRE成长记2023年四川特产销售额统计-副本6.xlsx")
#打印数据查看结果:
print(data1)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本6.xlsx》,数据如下:
在这里插入图片描述

7. 筛选Excel表格中带有某个汉字的数据存入新文件

eg: 筛选《SRE成长记2023年四川特产销售额统计.xlsx》名称中带有“蛋”字和不带“蛋”字的农产品,存入新文件的不同sheet

import pandas as pd
data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
print(data0.columns)
data1 = pd.DataFrame(data0[data0['特产\季度'].str.contains('蛋')])
data2 = pd.DataFrame(data0[~ data0['特产\季度'].str.contains('蛋')])

#将数据写入文件:
writer = pd.ExcelWriter("SRE成长记2023年四川特产销售额统计-副本7.xlsx")
data1.to_excel(writer,sheet_name="蛋类")  #或简写:data1.to_excel(writer,"蛋类")
data2.to_excel(writer,sheet_name="非蛋类")  #或简写:data1.to_excel(writer,"非蛋类")
writer.save()
#打印数据查看结果:
print(data1)
print(data2)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本7.xlsx》,数据如下:
在这里插入图片描述
在这里插入图片描述

8. 筛选不包含以xx字段开头或结尾的行数据

eg:筛选《SRE成长记2023年四川特产销售额统计.xlsx》名称中以“蜂"字开头和以“蛋”结尾的农产品,存入新文件的不同sheet

import pandas as pd

data0 = pd.read_excel("SRE成长记2023年四川特产销售额统计.xlsx","原始数据")
# print(data0.columns)
data1 = pd.DataFrame(data0[data0['特产\季度'].str.startswith('蜂')])
data2 = pd.DataFrame(data0[data0['特产\季度'].str.endswith('蛋')])

# 将数据写入文件:
writer = pd.ExcelWriter("SRE成长记2023年四川特产销售额统计-副本8.xlsx")
data1.to_excel(writer,sheet_name="蜂xx")  #或简写:data1.to_excel(writer,"蜂xx")
data2.to_excel(writer,sheet_name="xx蛋")  #或简写:data1.to_excel(writer,"xx蛋")
writer.save()

# 打印数据查看结果:
print(data1)
print(data2)

执行代码生成《SRE成长记2023年四川特产销售额统计-副本8.xlsx》,数据如下:
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/WF_crystal/article/details/135647326
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。