上篇文章详细讲述了 csv文件和 Excel表格类型文件如何读取的操作,详细内容请 点击此处进行阅读。本文将聚焦文件内部数据处理这一核心视角,系统且详尽地阐述 CSV 文件与 Excel 表格的自动化操作方法。通过深入剖析数据处理的内在逻辑与关键环节,为读者呈现从基础操作到进阶应用的完整知识体系,助力高效实现文件数据的自动化管理与处理。

自动处理csv文件

方式一:通过导入csv模块

在 Python 处理 csv 文件的工具中,csv 模块是官方内置的核心库,它专为 csv 格式的文本文件设计,能够高效解决数据的读取、写入、解析与格式化等问题,无需依赖第三方库,兼容性极强。

import csv
def csv_write(input_file_path,factor=1):
	with open(input_file_path) as infile:
		content = csv.reader(infile)
		header = next(content)
		data = []
		for row in content:
			new_row = [float(value)*factor for value in row]
			data.append(new_row)
	with open(input_file_path,'w') as outfile:
		writer = csv.writer(outfile)
		writer.writerow(header)
		writer.writerows(data)
	print('Done')
input_file_path = 'your file path'
csv.write(input_file_path,factor)

这段代码定义了一个名为csv_write的函数,它的作用是读取指定 csv 文件的内容,把其中的数据部分(不包含表头)乘以给定的系数factor,然后将处理后的数据再写回到原文件中。
代码解读:
csv.writer(outfile)csv 模块提供的一个函数,用于创建一个写入器对象,专门用来将数据写入csv文件。
writer.writerow(header):将单个行(可迭代对象,如列表或元组)写入 csv文件。在这段代码中意思是写入表头。
writer.writerows(data):批量写入多行数据,参数需要是一个嵌套的可迭代对象(如列表的列表)。在这段代码的里面是指操作后的数据写入csv文件里。
next():是一个内置函数,主要用于迭代器的操作。它的核心作用是获取迭代器的下一个元素
上述代码是在原csv文件进行操作,但一般在实际运用中,很少对原始数据进行更改,一般都是输出另外一个csv文件。以下代码将对上述代码进行修正,对输入的csv文件进行操作后,输出新的csv文件进行保存。
print('Done'):提示用户 csv 文件处理完成。当函数成功执行并修改了文件内容后,会在控制台输出 Done,让用户知道操作已结束。

def csv_write(input_file_path,output_file_path,factor):
	with open(input_file_path) as infile:
		content = csv.reader(infile)
		header = next(content)
		data = []
		for row in content:
			new_row = [float(value)*factor for value in row:
			data.append(new_row)
	with open(out_file_path,'w') as outfile:
		writer = csv.writer(outfile)
		writer = csv.writerow(header)
		writer = csv.writerows(data)
	print('Done')

如果不想手动输入文件输出路径,可以编写下列代码

def process_file(input_file_path):
	directory = os.path.dirname(input_file_path)
	file_name = os.path.splitext(os.path.basename(input_file_path))[0]
	file_format = os.path.splitext(os.path.basename(input_file_path))[1]
	out_file_path = os.path.join(directory,f'{file_name}_output{file_foramt}')
	return output_file_path

上述代码可实现在原文件夹下生成输出文件。相关函数解释:
os.path.dirname():提取文件路径中的目录部分的函数。它返回文件路径中最后一个路径分隔符(如 / 或 \)之前的所有内容,即文件所在的目录路径。
os.path.splitext():分割文件路径中的文件名和扩展名的函数。它返回一个包含两个元素的元组:(文件名, 扩展名)。

方式二:导入pandas模块

pandasPython中最流行的数据处理与分析库,提供高效、灵活且易于使用的数据结构,以下将用pandas进行对csv文件的操作。

import pandas as pd
def csv_write(input_file_path,factory):
	out_file_path = process(input_file_path)
	df = pd.read_csv(input_file_path)
	df = df * factory
	df.to_csv(output_file_path,index=False)
	print('Done')

由于pd.read_csv会自动读取表头,所以不用担心系数乘以表头,如果没有表头,则要在pd.read_csv()中加入header =None。如果只处理特定列,可以将

df = df * factory

改成

df['assign_col'] = df['assign_col'] * factor

df.to_csv(output_file_path,index=False)会以output_file_path这个文件地址生成csv文件,index=False是生成文件时不将行号一起输入到文件里面,该参数默认为True。
以上是对csv文件的操作,接下来将详细的说明Excel表格数据如何进行处理。

自动处理Excel表格

方式一:导入pandas库

import pandas
def excel_write(input_file_path,factory):
   out_file_path = process_file(input_file_path)
   df = pd.read_excel(input_file_path)
   df = df * factory
   df.to_excel(out_file_path,index=False)
   print('Done')

由于pandas通常是数据分析首选,其代码简洁高效,支持批量处理和复杂分析。因此在此只介绍这一种方式,对于其他处理Excel表格的方式,将会出一篇更加详细的文章去介绍。

总结

综上所述,无论是处理CSV文件还是Excel表格,我们都可以根据实际需求选择合适的工具:内置csv模块适合对格式精细控制、依赖兼容性要求高的场景,通过手动分离表头、逐行处理数据实现精准操作;而pandas库则以简洁高效的优势,成为批量数据处理与分析的首选,尤其适合快速实现数据缩放、格式转换等需求。两种方式均遵循“不覆盖原文件、自动生成输出路径”的原则,兼顾了数据安全性与操作便捷性,为结构化数据的自动化处理提供了灵活可靠的解决方案。

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐