基础python和pandas
1 读写CSV文件
一般的python方法
import sys
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file,'r',newline='') as filereader:
with open (output_file,'w',newline='') as filewriter:
header = filereader.readline()
#获取列标题
header = header.strip()
header_list=header.split(',')
print(header_list)
#将列标题打印在屏幕上
filewriter.write(','.join(map(str,header_list))+'\n')
# map 函数将 str 函数应用于 header_list 中的每个元素,确保每个元素都是字符串
# join 函数在 header_list 中的每个值之间插入一个逗号,将这个列表转换为一个字符串
#在这个字符串最后添加一个换行符,最后写入文件中
for row in filereader:
row=row.strip()
row_list=row.split(',')
print(row_list)
filewriter.write(','.join(map(str,row_list))+'\n')
#将每一行数据都写入输出文件
pandas的dataframe方法
import pandas as pd
input_file = sys.argv[1]
output_file = sys.argv[2]
data_frame=pd.read_csv(input_file)
#pandas生成了一个数据框,类似于矩阵
print(data_frame)
data_frame.to_csv(output_file,index=False)
csv方法
import csv
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=',')
#使用csv模块中的reader函数创建了一个文件读取对象filereader
# 后面的delimiter=','为分隔符,默认分隔符为','就不需要输入这个参数
filewriter = csv.writer(csv_out_file, delimiter=',')
# 使用csv模块中的writer函数创建了一个文件写入对象filewriter
for row_list in filereader:
print(row_list)
filewriter.writerow(row_list)
#使用filewriter对象的writerow函数来讲每行中的列表值写入输出文件
2 筛选特定的行
- 行中的值满足某个条件
- 行中的值属于某个集合
- 行中的值匹配于某个模式(正则表达式)
2.1 行中的值满足某个条件
csv方法
import sys
import csv
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函数输入文件的第一行,赋给名为header的变量
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方法
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'