1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 数据分析-读写数据csv xlsx文件

python 数据分析-读写数据csv xlsx文件

时间:2023-03-29 11:49:53

相关推荐

python 数据分析-读写数据csv xlsx文件

1、读写csv文件可以使用基础python实现,或者使用csv模块、pandas模块实现。

基础python读写csv文件

读写单个CSV

以下为通过基础python读取CSV文件的代码,请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。

inputFile="要读取的文件名"outputFile=“写入数据的csv文件名”with open(inputFile,"r") as fileReader:with open(outputFile,"w") as fileWriter:for row in fileReader:fileWriter.write(row)

读取多个csv文件并写入至一个csv文件

读写文件的代码与读写单个csv文件大致相同,但需要利用glob模块以及os模块获取需要读取的文件名。代码如下:

import osimport globinputPath="读取csv文件的路径"outputFile="写入数据的csv文件名"firstFile=Truefor file in glob.glob(os.path.join(inputPath,"*.csv")):with open(file,'r') as fileReader:with open(outputFile,"a") as fileWriter:if firstFile:for row in fileReader:fileWriter.write(row)firstFile=FalsefileWriter.write("\n")else:header=fileReader.readline()for row in fileReader:fileWriter.write(row)

通过pandas模块读写csv文件

读写单个CSV

pandas的dataframe类型有相应的方法能读取csv文件,代码如下:

import pandas as pdinputFile="要读取的文件名"outputFile=“写入数据的csv文件名”df=pd.read_csv(inputFile)df.to_csv(outputFile)

请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。

读取多个csv文件并写入至一个csv文件

import osimport globimport pandas as pdinputPath="读取csv文件的路径"outputFile="写入数据的csv文件名"dataFrameList=[]for file in glob.glob(os.path.join(inputPath,"*.csv")): df=pd.read_csv(file)dataFrameList.append(df)allDataFrame=pd.concat(dataFrameList,axis=0,ignore_index=True)allDataFrame.to_csv(outputFile)

通过csv模块读写csv文件

读写单个CSV文件

代码如下:

import csvinputFile="要读取的文件名"outputFile=“写入数据的csv文件名”with open(inputFile,"r",newline='') as fileReader:with open(outputFile,"w",newline='') as fileWriter:csvReader=csv.reader(fileReader,delimiter=',')csvWriter=csv.writer(fileWriter,delimiter=',')for row in csvReader:print(row)csvWriter.writerow(row)

读取多个csv文件并写入至一个csv文件

思路与上述用基础python读取多个csv文件大体相同,代码如下:

import csvimport globimport osinputPath=r"读取csv文件的路径"outputFile=r"输出文件的路径"firstFile=Truefor file in glob.glob(os.path.join(inputFile,"*.csv")):with open(file,"r") as fileReader:with open(outputFile,"a") as fileWriter:csvReader=csv.reader(fileReader)csvWriter=csv.writer(fileWriter)if firstFile:for row in csvReader:csvWriter(row)firstFile=Falseelse:header=next(csvReader,None)for row in csvReader:csvWriter(row)

2.使用xlrd和xlwt这两个模块来读取单个excel文件,

思路和读取csv文件大致相同,分别设置输入和输出的excel文件对象,然后遍历输入对象的工作表的内容并输出至输出对象的特定工作表。

代码如下:

"""基础python获取exel数据"""import xlrdimport xlwtinputExcel="输入的excel文件"outputExcel="输出的excel文件"outputWorkbook=xlwt.Workbook()outputWorksheet=outputWorkbook.add_sheet("test")with xlrd.open_workbook(inputExcel) as inputWorkbook:inputWorksheet=inputWorkbook.sheet_by_name("january_")for row in range(inputWorksheet.nrows):for col in range(inputWorksheet.ncols):outputWorksheet.write(row,col,inputWorksheet.cell_value(row,col))outputWorkbook.save(outputExcel)

经测试后,发现输出的excek文件无法打开。

3、通过xlrd和xlwt模块将读取的多个excel文件中多个工作表输出至多个excel文件中。

通过xlrd和xlwt读多个excel文件并写入一个新excel文件

获取文件名可通过glob以及os模块进行,获取一个excel文件中的多个工作表则通过xlrd.open_workbook()函数所打开的excel文件对象的sheets()进行读取,以下实例为读取多个excel文件当中的多个工作表,并将每个excel文件的全部内容输出至一个excel文件的不同工作表中,代码如下:

import pandas as pdimport globimport osimport xlrdimport xlwtinputPath=r"读取excel文件的路径"outputExcel=r"输出的excel文件的具体路径"outputWorkbook=xlwt.Workbook()#将读入数据写入变量中for inputWorkbook in glob.glob(os.path.join(inputPath,"*.xlsx")):with xlrd.open_workbook(inputWorkbook) as workbook:workbookName=os.path.basename(inputWorkbook)firstSheetFlag=1 setRow=0for sheet in workbook.sheets():#为输出工作表添加表头if firstSheetFlag:outputWorksheet=outputWorkbook.add_sheet(workbookName)for cInd in range(sheet.ncols):outputWorksheet.write(0,cInd,sheet.cell_value(0,cInd))firstSheetFlag=0for rInd in range(1,sheet.nrows):for cInd in range(sheet.ncols):outputWorksheet.write(rInd+setRow,cInd,sheet.cell_value(rInd,cInd))setRow=setRow+sheet.nrows-1outputWorkbook.save(outputExcel)

请注意,上述代码并未有对excel中的日期数据的格式进行处理,故输出至excel的日期字段的数据与实际看到的日期格式不同。

4、利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表。

大致原理如下:

glob.glob()以及os.path.join()函数负责获取输入要读取的excel文件的具体路径。

pandas的read_excel函数负责读取函数,通过当中的sheet_name参数控制读取excel工作表。当读取一个工作表时,返回一个DataFrame;若读取多个或全部excel工作表,则返回一个字典,键、值分别为工作表文件名和存放工作表数据的数据框。

pandas.DataFrame.to_csv()函数负责输出数据至excel文件。当中的excel_writer参数控制输出路径及excel文件名,sheet_name控制输出的excel工作表。请注意,若指定的excel文件不存在,则新建一个;若存在,则将数据以新工作表的形式写入已存在的excel文件当中。

接下来实例及相应的代码说明通过pandas读写exel文件。

案例:读取多个excel文件当中的所有工作表,将数据输出至一个新excel文件,当中的每个工作表为之前读取的单个excel文件的所有数据,工作表名为读取的excel文件名,不包括后缀。

代码:

"""通过pandas读写多个excel文件"""import globimport osimport pandas as pdinputPath="需要读入的excel文件路径"outputWorkbook="excel输出文件"inputWorkbook=glob.glob(os.path.join(inputPath,"*.xlsx"))writer=pd.ExcelWriter(outputWorkbook)for workbook in inputWorkbook:allData=[]combineData=pd.DataFrame#读取excel文件allSheetData=pd.read_excel(workbook,sheet_name=None)for name,data in allSheetData.items():allData.append(data)combineData=pd.concat(allData,axis=0,ignore_index=True)#输出excel文件combineData.to_excel(writer,sheet_name=os.path.basename(workbook)[:-5],index=False)writer.save()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。