从CSV文件中删除行

时间:2020-10-06 08:06:18

标签: python csv

我是python的新手,这是问题所在。

有一个csv文件,带有一堆属性,例如“ id”,“ SalePrice”,“ LotArea”等。索引为3的列是第一个数字属性,索引为0的列是“ id”。此外,还有1460行。

要求:如果记录的数值属性值是异常值,则将其删除。

我的方法:

第1步。找到Q1,Q2和IQR

第2步。找到异常值。

第3步。删除带有异常值的行。

    #Step 1
        index = 0
        outlier_id = []
        data = pd.read_csv('train.csv')
        Q1 = data[list(data.columns)[3]].quantile(0.25)
        Q3 = data[list(data.columns)[3]].quantile(0.75)
        IQR = Q3 - Q1
    
    #Step 2
        filter = ((data[list(data.columns)[3]] >= Q1 - 1.5 * IQR) & (data[list(data.columns)[3]] <= Q3 + 1.5 * IQR))
        while(index < 1460):
            if(filter[index] == False):
                outlier_id.append(data[list(data.columns)[0]][index])      #store id of outliers in array
    
            index = index + 1
        print(outlier_id)
    
    #Step 3
        permission = True
        csv_writer =  open('new_train.csv', 'w')

    
        for line in csv_reader:
            index = 0
            while(index < len(outlier_id)):
                if line[0] == outlier_id[index]:
                    permission = False
                index = index + 1
            if(permission == True):
                csv_writer.writerow(line)
        csv_writer.close()

我已经完成了前两个步骤。列表“ outlier_id”包含异常值的ID。我计划使用此列表完成步骤3。

问题来了:文件“ new_train.csv”中没有任何内容,我打算将其写成没有异常值的行。

由于我不熟悉csv文件操作,因此无法找到错误。非常感谢您的帮助。

0 个答案:

没有答案
相关问题