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

作者: billyang916 | 来源:发表于2018-03-18 01:34 被阅读37次

    今天说一下使用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)
    

    相关文章

      网友评论

        本文标题:python 数据分析基础 day5-读写csv文件

        本文链接:https://www.haomeiwen.com/subject/guejqftx.html