一、创建CSV文件
1)打开记事本
2)写入词组,词组间用逗号分隔
例如:
name,age,grade,class
张三,20,100,2
3)将文件另存为,01.csv
4)创建完成
二、读写CSV文件
1.在NotePad++中写入以下代码:(只使用python语言,不使用csv模块)
import sys #引入sys模块
input_file=sys.argv[1]#传入csv文件的路径和文件名
output_file=sys.argv[2]#输出csv文件的路径和文件名
with open(input_file.'r',newline='')as filereader:#用with语句将input_file打开为filereader,r表示只读
with open(output_file,'w',newline='')as filewriter:#用with语句将output_file打开为filewriter,w表示可写
header=filereader.readline()#使用readline方法读取输入文件中的第一行数据
header=header.strip()#使用string模块中strip函数去掉header中字符串两端的空格
header_list=header.split(',')#使用string模块中split函数将字符串用逗号差分成列表
print(header_list)#输出header_list
filewriter.write(','.join(map(str,header_list))+'\n)#使用filewriter对象的write方法将head_list中的每个值写入文本文件,map函数将str函数应用于header_list中的每个元素,确保每个元素都是字符串,join函数在header_list中的每个值之间插入一个逗号,将这个列表转换为一个字符串并在最后添加一个换行符 ,最后,filewriter对象将这个字符串写入输出文件,做为输出文件的第一行
for row in filereader:#用for循环迭代文件的余下内容
row =row.strip()#使用strip函数除去每行字符串两端的空格、制表符、换行符
row_list=row.split(',')#使用split函数用逗号将字符串拆分成为列表
print(row_list)#打印出文件内容
filewriter.write(','.join(map(str,row_list))+'\n')#将文件内容写入输出文件
2)将文件保存为:02.py
3)打开命令行,将盘符切换到桌面
4)在命令行中输入:python 02.py 01.csv output_files 1output.csv
2.用pandas处理CSV文件
在NotePad++中写入以下代码:
import sys
import pandas as pd
input_file=sys.argv[1]
output_file=sys.argv[2]
data_frame=pd.read_csv(input_file)
print(data_frame)
data_frame.to_csv(output_file,index=False)
2)将文件保存为:03.py
3)打开命令行,将盘符切换到桌面
4)在命令行中输入:python 03.py 01.csv output_files pandas_output.csv
注:若无法在命令行中无法显示结果,可以在pycharm中直接运行程序,
需要将代码改为:
input_file='01.csv'
output_file='01.csv'
2.读写csv文件(使用csv模块)
在Notepad++中写入以下代码:
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,delimiter=',')
filewriter=csv.writer(csv_out_file,delimiter=',')
for row_list in filereader:
print(row_list)
filewriter.writerow(row_list)
将代码保存为:04.py
3)打开命令行,将盘符切换到桌面
4)在命令行中输入:python 04.py 01.csv output_files 2output.csv
三、筛选特定的行
1.行中的值满足某个条件
1)基础python版
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)#使用next函数读取输入文件的第一行
filewriter.writerow(header)#将标题行写入输出文件
for row_list in filereader:
supplier=str(row_list[0]).strip()#读取每第一行的每个元素
cost=str(row_list[3]).strip('$').replace(',','')#读取第四行的元素
if supplier == 'Supplier Z' or float(cost)>600.0:#挑选符合条件的元素
filewriter.writerow(row_list)
2)pandas版
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'].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.行中的值属于某个集合
新建csv文件:
例如:
姓名,工号,部门代号,工资,发薪日
邱田忠,01,001,10000.00,2019/1/29
邱田玲,02,002,10000.00,2019/1/29
邱田鹏,03,003,12000.00,2019/1/30
邱怡宁,04,004,12000.00,2019/1/30
邱田佳,05,005,14000.00,2019/1/30
邱娅楠,06,006,14000.00,2019/1/30
邱漫妮,07,007,16000.00,2019/1/30
赵泽晨,08,001,16000.00,2019/1/30
赵子桐,09,002,18000.00,2019/1/30
赵建川,10,003,18000.00,2019/1/30
赵琦锐,11,004,20000.00,2019/1/31
赵家妍,12,005,40000.00,2019/1/31
赵宇琪,13,006,60000.00,2019/1/31
赵佳鑫,14,007,100000.00,2019/1/31
1.基础python版
import csv
import sys
input_file=sys.argv[1]
output_file=sys.argv[2]
important_dates=['2019/1/31']#指定筛选的条件
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)
filewwriter=csv.writer(csv_out_file)
header=next(filereader)
filewriter.writerow(header)
for row_list in filereader:
a_date=row_list[4]#取出每一行的发薪日
if a_date in important_dates:#检验a_date变量中的发薪日是否属于important_dates这个集合
filewriter.writerow(row_list)
pandas版
import pandas
import sys
input_file=sys.argv[1]
output_file=sys.argv[2]
data_frame=pd.read_csv(input_file)
important_datas=['2019/1/31']
data_frame_value_in_set=data_frame.loc[data_frame['发薪日'].isin(important_dates),:]
data_frame_value_in_set.to_csv(output_file,index=False)