0
点赞
收藏
分享

微信扫一扫

Python多条件数据筛选并批量输出


如何选取特定的数据并进行批量输出,这是个问题,比如在中国电影数据表有很多个电影制片公司,如博纳影业集团股份有限公司、华谊兄弟电影有限公司、万达影视传媒有限公司,我们需要将这几个制片公司的数据按照条件筛选出来,然后输出不同的表格数据,这里就要使用循环的命令了,下面逐步讲解在Python中如何实现。

Python多条件数据筛选并批量输出_运算符


首先生成一组数据日期,不管是单独生成一列还是做为数据日期命名都是可以的。


import datetimetoday=str(datetime.date.today())day=today.replace("-","")
print(day)


20210922


导入本节使用到的电影数据,这里将"上映时间"这个字段数据格式转换为字符类型。

    ort pandas as​​​​data=pd.read_excel(r'C:\Users\尚天强\Desktop\数据合并.xlsx',converters={"上映时间":str})​​​​data.head()​

    Python多条件数据筛选并批量输出_desktop_02

    使用运算符,添加逻辑条件,这里使用&运算符添加一个条件,筛选上映时间不是2008年且不是2009年,常用的运算符如下:

    • &  按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0;
    • |   按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1;
    • ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。

    data=data.loc[(data["上映时间"] != "2008")&(data["上映时间"] != "2009")]data=data[['电影名称', '上映时间', '发行公司', '电影导演', '电影主演', '累计票房(万)', '电影类型']]data.head()

    Python多条件数据筛选并批量输出_运算符_03

    设置一个含有公司名的列表,使用for循环遍历公司名。



    flim_company=['博纳影业集团股份有限公司', '华谊兄弟电影有限公司', '万达影视传媒有限公司']names=flim_company#筛选公司名for i inprint(names)

    Python多条件数据筛选并批量输出_运算符_04

    选取特定公司符合条件的数据。



    ​out_data=pd.DataFrame(data.loc[(data["发行公司"] == i)])​​​​out_data​

    Python多条件数据筛选并批量输出_desktop_05

    对数值操作,包含删除重复值、数值排序、删除缺失值。


    ​#删除重复值​​​​out_data=out_data.drop_duplicates(subset=["上映时间"])​​​​#数值排序​​​​out_data=out_data.sort_values(by="累计票房(万)",ascending=False)​​​​#删除缺失值​​​​out_data=out_data.dropna(axis = 0 , how = 'any',subset = ["电影名称"])​​​​out_data​

    Python多条件数据筛选并批量输出_数据_06

    导出数据。


    out_data.to_excel(r'C:\Users\尚天强\Desktop\[数据明细]'+ i + day+ ".xlsx",index=False)

    还有如果需要单独筛选部分数据,将其放在一个新的sheet表中,可以使用pd.ExcelWriter命令,该命令用于在已生成的表格中写入新的sheet表,例如这里在原始数据中剔除部分累计票房数据作为例子,筛选票房为0的数据将它写入一个命名为"票房为0"的sheet表中。



    writer=pd.ExcelWriter(r'C:\Users\尚天强\Desktop'+"\\[数据明细]"+ i + day+ ".xlsx")
    #筛选票房为0的电影数据作为sheet表票房为0data_no_price=out_data[(out_data['发行公司']==i)&(out_data['累计票房(万)'].isna())]data_no_price.to_excel(writer,sheet_name="票房为0",index=False)#保存和关闭writer.save()writer.close()
    data_no_price

    Python多条件数据筛选并批量输出_运算符_07

    最后一步是代码封装,定义一个函数,将以上代码统一进行封装,代码如下,遇到类似的案例数据即可做代码修改。


    import pandas asimportdef Out_table(data_path,save_path):#设置日期    today=str(datetime.date.today())"-","")#导入数据".xlsx",converters={"上映时间":str})#筛选日期"上映时间"] != "2008")&(data["上映时间"] != "2009")]'电影名称', '上映时间', '发行公司', '电影导演', '电影主演', '累计票房(万)', '电影类型']]#建立公司名列表'博纳影业集团股份有限公司', '华谊兄弟电影有限公司', '万达影视传媒有限公司']    names=flim_company        #筛选公司名for i in"\\[数据明细]"+ i + day+ ".xlsx")#筛选票房不为0的电影数据作为sheet表票房数据"发行公司"] == i)])"上映时间"]) #删除重复值 "累计票房(万)",ascending=False) #数值排序0 , how = 'any',subset = ["电影名称"]) #删除缺失值"票房数据",index=False) #导出数据#筛选票房为0的电影数据作为sheet表票房为0'发行公司']==i)&(out_data['累计票房(万)'].isna())]"票房为0",index=False)#保存和关闭        writer.save()        writer.close()Out_table(r'C:\Users\尚天强\Desktop\数据合并',r'C:\Users\尚天强\Desktop') 


    举报

    相关推荐

    0 条评论