一、创建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)