python 数据分析基础 day5-读写csv文件

今天说一下使用python读写csv文件。
读写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 os
import glob
inputPath="读取csv文件的路径"
outputFile="写入数据的csv文件名"
firstFile=True
for 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=False
                fileWriter.write("\n")
            else:
                header=fileReader.readline()
                for row in fileReader:
                    fileWriter.write(row)

通过pandas模块读写csv文件

读写单个CSV

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

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

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

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

import os
import glob
import pandas as pd
i
nputPath="读取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 csv
inputFile="要读取的文件名"
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 csv
import glob
import os

inputPath=r"读取csv文件的路径"
outputFile=r"输出文件的路径"
firstFile=True
for 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=False
            else:
                header=next(csvReader,None)
                for row in csvReader:
                    csvWriter(row)

猜你喜欢

转载自blog.csdn.net/weixin_34106122/article/details/87232440