2.2筛选特定的行:

  • 行中的值满足某个条件
  • 行中的值属于某个集合
  • 行中的值匹配于某个模式(即:正则表达式)

  2.2.1:行中的值满足于某个条件:

  • 基础python版:

    

 #!/usr/bin/env python3  
import csv
import sys input_file = sys.argv[1]
output_file = sys.argv[2] with open(input_file, 'r', newline = '') as csv_in_file:
with open(output_file, 'w', newline = '') as csv_out_file:
filereader = csv.reader(csv_in_file)
filewriter = csv.writer(csv_out_file)
header = next(filereader)  # 使用CSV模块的next函数读出输入文件的第一行
filewriter.writerow(header)  # 将标题写入输出文件
for row_list in filereader:
supplier = str(row_list[0]).strip()  # 取出每行数据中的供应商名字,赋值给supplier变量
cost = str(row_list[3]).strip('$').replace(',', '')  # 使用列表索引
if supplier =='Supplier Z' or float(cost) > 600.0:
filewriter.writerow(row_list)
  • pandas版:

    #!/usr/bin/env python3
    
    import pandas as pd
    import sys input_file = sys.argv[1]
    output_file = sys.argv[2] data_frame = pd.read_csv(input_file) data_frame['Cost'] = data_frame['Cost'] = data_frame['Cost'].str.strip('$').astype(float)
    data_frame_value_meets_condition = data_frame.loc[(data_frame['Supplier Name'].str.contains('Z')) | (data_frame['Cost'] > 600.0), :] data_frame_value_meets_condition.to_csv(output_file, index = False)

    2.2.2:行中的值属于某个集合:

  • 基础python:

    

 #!/usr/bin/env python3  #  需求目的:保留那些购买日属于['1/20/14','1/30/2014']
import csv
import sys input_file = sys.argv[1]
output_file = sys.argv[2] important_dates = ['1/20/2014', '1/30/2014']  #  创建了一个列表的名为important_dates的集合,important_dates是一个列表变量,它就是要属于的集合 with open(input_file, 'r', newline = ' ') as csv_in_file:
with open(output_file, 'w', newline = ' ') as csv_out_file:
filereader = csv.reader(csv_in_file)  #  使用CSV模块,的reader函数,创建一个文件读取对象,名为filereader,它可以用于读取文章中的行
filewriter = csv.writer(csv_out_file)  #  使用CSV模块的writer函数,创建了一个文件输出对象,名为filewriter,他可以用于将这个对象的数据写入输出文件
header = next(filereader)  #  使用CSV模块的next函数,读出输入文件的第一行
filewriter.writerow(header)  #  将header——标题行,写入输出文件
for row_list in filereader:  #  遍历读取的文章的每一行
a_date = row_list[4]  #  得到每一行的第5列信息,即为每一行的购买的信息,并将其赋值给变量a_date;这里使用的是索引值4
if a_date in important_dates:  #  判断变量a_date是否属于important_dates这个集合
filewriter.writerow(row_list)  #  如果是,则将该行数据写入输出文件

pandas:

  

 #!/usr/bin/env python3

 import pandas as pd
import sys input_file = sys.argv[1]
output_file = sys.argv[2] data_frame = pd.read_csv(input_file)  #  读取输入文件,将其读取成dataframe的形式
data_frame_value_in_set = data_frame.loc[data_frame['Purchase Date'].isin(important_dates), :]  #  pandas的简洁命令:isin() data_frame_value_in_set.to_csv(output_file,index = False)  #  将data_frame_value_in_set的变量值,转换成CSV的形式,写入到输出文件中

行中的值,匹配于某个正则表达式:

  • 基础python
    
1 #!/usr/bin/env python3
import csv
import re  #  导入正则表达式模块(re)
import sys
input_file = sys.argv[1]
output_file = sys.argv[2]
pattern = re.compile(r'(?P<my_pattern_group>^001-.*)', re.I)  # 使用re模块的compile函数,创建一个名为pattern的正则表达式的变量
with open(input_file, 'r', newline = ' ') as csv_in_file:
with open(output_file, 'w', newline = ' ') as csv_in_file:
filereader = csv.reader(csv_in_file)
filewriter = csv.writer(csv_out_file)
header = next(filereader)
fliewriter.writerow(header)
for row_list in filereader:
invoice_number = row_list[1] #
if pattern.search(invoice_number): # 使用re模块的search函数在invoice_number的值中寻找模式
filewriter.writerow(row_list)   # 如果模式出现在invoice_number中,就将这行内容写入输出文件中
  • pandas

    

 #!/usr/bin/env python3

 import pandas as pd
import sys input_file = sys.argv[1]
output_file = sys.argv[2] data_frame = pd.read_csv(input_file)
data_frame_value_matches_pattern = data_frame.loc[data_frame['Invoice Number'].str.startswith("001-"), :]
data_frame_value_matches_pattern.to_csv(output_file, index = False)

Python数据分析基础——读写CSV文件2的更多相关文章

  1. Python数据分析基础——读写CSV文件

    1.基础python代码: #!/usr/bin/env python3 # 可以使脚本在不同的操作系统之间具有可移植性 import sys # 导入python的内置sys模块,使得在命令行中向脚 ...

  2. python学习之读写csv文件(使用pandas)

    简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序 ...

  3. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  4. (Python基础教程之十二)Python读写CSV文件

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  5. 使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  6. python读写csv文件

    文章链接:https://www.cnblogs.com/cloud-ken/p/8432999.html Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗 ...

  7. python习题_读写csv格式的文件

    1.读写TXT文件 # *_* coding : UTF-8 *_* # 开发人员 : zfy # 开发时间 :2019/7/7 16:26 # 文件名 : lemon_10_file.PY # 开发 ...

  8. Python数据分析基础PDF

    Python数据分析基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1ImzS7Sy8TLlTshxcB8RhdA 提取码:6xeu 复制这段内容后打开百度网盘手 ...

  9. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...

随机推荐

  1. mif文件生成方法

    mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.常见生成方法: Quartus自带的mif编辑器生成 mif软件生成 高级编程语 ...

  2. linux 命令——5 rm(转)

    昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...

  3. JavaScript:理解worker事件api

    如果你不是很了解Event事件,建议先看我上一篇随文javascript:理解DOM事件.或者直接看下文worker api. hack 首先,我们需要实例一个Worker的对象,浏览器会根据新创建的 ...

  4. windows剪切板暂存

    其实最初是因为在项目中使用了html网页编辑器,通过ie的com组件和javascript通讯完成一些事情,其中有一个功能是插入表格,我们原本使用的range.pasteHTML(HTMLstr);根 ...

  5. 302和VS启动后网站拒绝访问的解决方案

    网页状态302代表的是重定向的意思,就是网页跳转的一种状态 网站拒绝访问的时候可以在输出窗口查看是否有内容输出,如果没有说明启动网站的端口可能被占用,在网站项目——属性——web——项目中把地址的端口 ...

  6. 关于profile集合

    profile集合是mongodb的慢操作日志 > db.getProfilingStatus() { , , } 可以通过getProfilingStatus来查看当前profile设置 pr ...

  7. centos 7 虚拟机启用网卡

    1.vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 2.编辑默认网卡配置文件,将ONBOOT由no改为yes,编辑完成后,按ESC回至命令模板,输入&qu ...

  8. eclipse中关闭java文件后再打开,找不到如何切换可视化编辑器

    http://www.iteye.com/problems/64806 两种方式:   第一种正如楼上的老兄说的.在该java类中,鼠标右击,移动到openWith上 找到jigloo,找不到就在ot ...

  9. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目

    背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...

  10. struts+hibernate+spring整合过程常见问题收集

    1.java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor缺少asm-3.3.jar2.java.lang.NoClassDefF ...