python——文件处理之文件操作
本文介绍了Python自动处理CSV和Excel文件的两种方法。对于CSV文件,可通过内置csv模块实现精细控制,也可使用pandas库进行高效批量处理;Excel文件则推荐使用pandas库的read_excel和to_excel方法。两种方式都支持设置处理系数、保留表头、自动生成输出路径等功能,确保不修改原始文件。pandas因其简洁高效成为数据分析首选,而csv模块则更适合需要精细控制的场景
上篇文章详细讲述了
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模块
pandas
是 Python
中最流行的数据处理与分析库,提供高效、灵活且易于使用的数据结构,以下将用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
库则以简洁高效的优势,成为批量数据处理与分析的首选,尤其适合快速实现数据缩放、格式转换等需求。两种方式均遵循“不覆盖原文件、自动生成输出路径”的原则,兼顾了数据安全性与操作便捷性,为结构化数据的自动化处理提供了灵活可靠的解决方案。
更多推荐
所有评论(0)