python数据分析基础CSV之输出行中的值属于某集合

最近几天学习了CSV文件,它和Excel非常相似。下面我就来介绍CSV文件中最重要之一的行中的值属于某集合。

1.有时候,当行中的值属于某个集合时,才需要保留这些行。例如,你可能希望在数据集中保留那些供应商名字属于集合{supplier X,Supplier Y}的行(这里的花括号表示集合,不是Python中的字典),或者希望保留所有购买日期属于集合{‘1/20/14’,‘1/30/14’}的行。在这种情况下,你可以检验行中的值是否属于某个集合,然后筛选出具有属于该集合的值的行。
2.举例
1.#!/usr/bin/env python3
2.import csv
3.import sys
4.input_file=sys.argv[1]
5.output_file=sys.argv[2]
6.important_dates=['1/20/14','1/30/14']
7.with open(input_file,"r",newline='')as csv_in_file:
8.    with open(output_file,"w",newline='')as csv_out_file:
9.         filereader=csv.reader(csv_in_file)
10.        filewriter=csv.writer(csv_out_file)
11.        header=next(filereader)
12.        filewirter.writerow(header)
13.        for row in filereader:
14.            a_date=row_list[4]
15.            if a_date in important_dates:
16.                filewriter.writerow(row_list)

接下来我会一行一行解释代码的含义
第一行:第一行为注释行,可以使脚本在不同操作系统之间具有可移植性。

第二行:导入csv文件,以便可以使用其中的函数来分析输入的文件,写入输出的文件。

第三行:向代码中导入python内置的sys模块。它是一个传递给Python脚本的命令行参数列表,也就是你运行脚本时在命令行输入的内容。(其实就是python+文件名.py+输入文件地址.csv+输出文件地址.csv)。

第四,五行:就是第二行解释内容的表达,在这里不做过多解释。

第六行:这行是创建了一个名为important_dates的列表变量,其中包含了两个特定日期(当然,几个日期的个数是不限的),这个变量就是你的集合。创建包含特定值的变量,这种编写代码的方式非常的有用。使用了这种方式,如果变量值发生了变化,你只需在一个地方修改代码(就是定义变量的地方),变化量的变化就会反映到代码中所有引用该变量的地方。

第七,八行:是一个with语句,将input_file和output_file打开为一个文件对象分别是csv_file_in和csv_file_out。“r”表示只读模式,说明打开input_file是为了读取数据,“w”表示可写模式,说明打开output_file是为了写入数据。with语句可以在语句结束时自动关闭文件对象。

第九,十行:使用csv模块中的reader函数创建了一个文件读取对象,名为filereader,可以使用这个对象来读取输入文件的行。同样,writer函数创建了一个文件写入对象,名为filewriter,可以使用这个对象将数据写入输出文件。

第十一行:使用csv模块的next函数读出输入文件的第一行,赋给名为header的列表变量。

第十二行:将标题写入输入文件。

第十三行:for循环在输入文件剩余的各行中迭代。

第十四行:取出每一行的购买日期,并将其值付给a_date。从行列表的索引值row[4]可知,购买日期在第五列。

第十五,十六行:创建一个if语句来检验a_date变量中的购日期是否属于important——dates这个集合。如果在,下一行代码就写入输出文件。

3.总结:其实在这部分的学习中特别抽象,难懂,而且包含了很多计算机的知识。像我一开始按照书上的运行时,不知道在命令行输入什么,或者将两个文件没有放在统一路径下,导致了许多问题,学习进度很慢,但真正解决了这些问题之后,发现这部分其实也并不是多么可怕,继续加油吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值