转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
前言
在《几行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》,数据如下: