zoukankan      html  css  js  c++  java
  • CSV 文件的存取

    CSV 文件介绍

      CSV(Comma-Separated Values),中文通常叫做逗号分割值。CSV文件由任意数目的记录(行)组成,每条记录由一些字段(列)组成,字段之间通常以逗号分割,当然也可以用制表符等其他字符分割,所以CSV又被称为字符分割值。

    CSV 文件存储

      to_csv(self, path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.')

      参数
         ----------
      path_or_buf:str或文件句柄,默认为None。文件路径或对象,如果提供“None”,则返回结果为一个字符串。如果传递了一个文件对象,则应该打开`newline =''`,禁用通用换行符。  

    import pandas as pd
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65, 70, 64, 67],
        '身高': [178, 177, 180, 175]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 进行一些操作
    df['身高'] = df['身高']+1
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv')       # 相对地址
    df.to_csv('E:/data.csv')    # 绝对地址格式1
    df.to_csv(r'E:\data.csv')   # 绝对地址格式2
    df.to_csv('E:\\data.csv')   # 绝对地址格式3
    Code

      sep:str,默认为','。长度为1的字符串,输出文件的字段分隔符。设置为'\t',记事本打开更加清晰。 

    df.to_csv('data.csv', sep='\t')    
    Code

      na_rep:str,默认为''。缺少数据表示。当字典中数据为None时,可通过设置该参数显示为任意字符串。

    import pandas as pd
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65, None, 64, 67],
        '身高': [178, 177, 180, None]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 进行一些操作
    df['身高'] = df['身高']+1
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', na_rep='null')
    Code

      float_format:str,默认为None。浮点数的格式字符串,四舍五入。

    import pandas as pd
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65.238, 70.6, 64, 67.333],
        '身高': [178, 177.89, 180, 175.0]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', float_format='%.2f')
    Code

      columns:sequence,可选。要写的列。

    import pandas as pd
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65.238, 70.6, 64, 67.333],
        '身高': [178, 177.89, 180, 175.0]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', columns=['代号', '身高'])
    Code

      header:bool或str列表,默认为True。写出列名。如果给出了一个字符串列表,那就是假定是列名的别名。如果设置为False,则在追加的时候不在写入列名称。

    import pandas as pd
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65.238, 70.6, 64, 67.333],
        '身高': [178, 177.89, 180, 175.0]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', header=['a', 'b', 'c'])     # 更改列名
    df.to_csv('data.csv', sep='\t', header=False)     # 在追加的时候不写入列名称
    Code

      index:bool,默认为True。写行名(索引)。如果设置为None或False,则在写入的时候不添加索引。

    df.to_csv('data.csv', sep='\t', index=False)   
    Code

      index_label:str或sequence,或False,默认为None。 

    df.to_csv('data.csv', sep='\t', index_label='索引')
    Code

      mode:str,默认为'w'。在追加时可设置为'a'。

    df.to_csv('data.csv', sep='\t', index=False, header=False, mode='a')
    Code

      encoding:str,可选。表示要在输出文件中使用的编码的字符串,默认为Python 2上的“ascii”和Python 3上的“utf-8”。当使'utf-16'编码时用Exel打开不会出现乱码问题。

    df.to_csv('data.csv', sep='\t', encoding='utf-16')
    Code

      compression:str,默认为'infer'。压缩模式具有以下可能值:{'infer', 'gzip','bz2','zip','xz',None}。如果'infer'和'path_or_buf'是路径,然后从以下检测压缩扩展名:'.gz','.bz2','.zip'或'.xz'。 (否则没有压缩)。

    df.to_csv('data.csv.gz', sep='\t', compression='gzip')
    Code

      quoting:来自csv模块的可选常量,默认为csv.QUOTE_MINIMAL。如果你设置了`float_format`,然后浮点数转换为字符串,从而转换为csv.QUOTE_NONNUMERIC,将它们视为非数字。

    import pandas as pd
    import csv
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '体重': [65.238, 70.6, 64, 67.333],
        '身高': [178, 177.89, 180, 175.0]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', float_format='%.2f', quoting=csv.QUOTE_NONNUMERIC)
    df.to_csv('data1.csv', sep='\t', quoting=csv.QUOTE_NONNUMERIC)
    Code

      quotechar:str,默认'\"'。长度为1的字符串。用于引用字段的字符。

    df.to_csv('data.csv', sep='\t', float_format='%.2f', quotechar='|')
    Code

      line_terminator:string,可选。要在输出中使用的换行符或字符序列文件。默认为`os.linesep`,这取决于操作系统。调用此方法(对于Linux,'\ n',对于Windows,'\ r \ n',即)。

    df.to_csv('data.csv', sep='\t', float_format='%.2f', line_terminator='\n')
    Code

      chunksize:int或None。一次写一行。

    df.to_csv('data.csv', sep='\t', header=False, mode='a', chunksize=1)
    Code

      date_format:str,默认为None。日期时间对象的格式字符串。

    import pandas as pd
    import datetime
    
    # 输入一些数据(字典格式)
    data = {
        '代号': ['A', 'B', 'C', 'D'],
        '时间': [datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now()],
        '身高': [178, 177.89, 180, 175.0]
    }
    # 将字典格式转化为DataFrame格式
    df = pd.DataFrame(data)
    # 打印DataFrame
    print(df)
    # 存储为CSV文件
    df.to_csv('data.csv', sep='\t', float_format='%.2f', date_format='%Y-%m-%d')
    Code

      doublequote:bool,默认为True。在字段内控制`quotechar`的引用。

    df.to_csv('data.csv', doublequote=False, escapechar='|')
    Code

      escapechar:str,默认为None。长度为1的字符串,用于转义`sep`和`quotechar`的字符。

    df.to_csv('data.csv', doublequote=False, escapechar='|')
    Code

      decimal:str,默认为'.'。 字符识别为小数点分隔符。

    df.to_csv('data.csv', sep='\t', float_format='%.2f', decimal=':')
    Code

    CSV 文件读取

      read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

      参数
         ----------
      filepath_or_buffer:str,path对象或类文件对象,任何有效的字符串路径都是可接受的。字符串可以是URL,有效URL方案包括http,ftp,s3和file。本地文件可以是:file://localhost/path/to/table.csv。

    import pandas as pd
    
    df = pd.read_csv('data.csv')
    print(df)
    Code

      sep:str,默认为','。读取时应该与写入时的seq保持一致。

    df = pd.read_csv('data.csv', sep='\t')
    Code

      delimiter:str,默认为"None",别名为sep。当delimiter参数和sep参数同时存在时,sep参数无效。

    import pandas as pd
    
    df = pd.read_csv('data.csv', delimiter='\t')
    print(df)
    df = pd.read_csv('data.csv', sep=',', delimiter='\t')
    print(df)
    Code

       header:int,int列表,默认为'infer',用作列名的行号和数据的开头。默认行为是推断列名:如果没有传递名称,行为与``header = 0``相同,列名从文件的第一行推断出来,如果显式传递列名,则行为与``header = None``相同。显式传递``header = 0``以便能够替换现有名称。标题可以是整数列表,其指定列上的多索引的行位置,例如,[0,1,3]。 将跳过未指定的干预行(例如,跳过此示例中的2)。 请注意,如果``skip_blank_lines = True``,则此参数忽略注释行和空行,因此``header = 0``表示第一行数据而不是文件的第一行。

    import pandas as pd
    
    df = pd.read_csv('data.csv', delimiter='\t')
    print(df)
    df = pd.read_csv('data.csv', delimiter='\t', header=0)
    print(df)
    df = pd.read_csv('data.csv', delimiter='\t', header=None)
    print(df)
    df = pd.read_csv('data.csv', delimiter='\t', header=[0, 3])
    print(df)
    Code

      names:array-like,可选。要使用的列名列表。 如果file不包含标题行,那么你应该显式传递``header = None``。 此列表中的重复项将导致发出“UserWarning”。

    df = pd.read_csv('data.csv', delimiter='\t', names=['索引', '代号', '体重', '身高'])
    Code

      index_col:int,sequence或bool,可选,用作行索引的列编号或者列名。如果给定一个序列则有多个行索引。如果在每行的末尾有一个带有分隔符的格式错误的文件,您可以考虑使用``index_col = False``来强制pandas不使用第一列作为索引(行名称)。

    df = pd.read_csv('data.csv', delimiter='\t', index_col=['代号', '体重'])
    Code

      usecols:list-like或callable,可选,返回列的子集。如果类似于列表,则所有元素必须是位置(即文档列中的整数索引)或对应于用户在“names”中提供或从文档标题行推断的列名的字符串。

    df = pd.read_csv('data.csv', delimiter='\t', usecols=[0, 1])
    Code

      squeeze:bool,默认为False。如果解析的数据只包含一列,则返回一个Series。

    df = pd.read_csv('data.csv', delimiter='\t', usecols=[2], squeeze=True)
    Code

      prefix:str,可选。Prefix在没有标题时添加到列号,例如 'X'代表X0,X1,......

    df = pd.read_csv('data.csv', delimiter='\t', header=None, prefix='X')
    Code

      mangle_dupe_cols:bool,默认为True。Duplicate列将指定为'X','X.1',...'X.N',而不是'X'...'X'。 如果列中存在重复的名称,则传入False将导致数据被覆盖。该参数值暂时不可以被修改。

    df = pd.read_csv('data.csv', delimiter='\t', mangle_dupe_cols=True)
    Code

      dtype:列的类型名或字典 ,可选,用来设置每列数据的数据类型。

    df = pd.read_csv('data.csv', delimiter='\t', dtype={'索引': float, '身高': float})
    Code

       engine : {'c', 'python'},可选。使用的分析引擎,C引擎速度更快,而python引擎目前功能更加完善。

    df = pd.read_csv('data.csv', delimiter='\t', engine='c')
    Code

      converter:dict,可选。Dict用于转换某些列中的值的函数,键可以是整数或列标签。

    df = pd.read_csv('data.csv', delimiter='\t', converters={'索引': float})
    Code

      true_values:list,可选。Values考虑为True。

    df = pd.read_csv('data.csv', delimiter='\t', true_values=['A'])
    Code 

      false_values:list,可选。Values考虑为False。

    df = pd.read_csv('data.csv', delimiter='\t', false_values=['B'])
    Code

      skipinitialspace:bool,默认为False。分隔符后跳过空格

    df = pd.read_csv('data.csv')
    print(df)
    df = pd.read_csv('data.csv', skipinitialspace=True)
    print(df)
    Code


        

     

     

  • 相关阅读:
    php无法保存cookies问题解决
    【PHP基础】最快速简易apache+mysql本地PHP环境搭建教程
    php数组指针探究
    php学习笔记[php中面向对象三大特性之一[继承性]的应用]
    Cpanel如何设置index”缺省首页”?.htaccess设置网站默认首页次序?
    php学习笔记[php中面向对象三大特性之一[封装性]的应用]
    php学习笔记[PHP面向对象的程序设计]
    windows下配置nginx+php环境
    PHP学习之路(三)让我们开始环境搭建(搭建LMAP基于Ubuntu11.04)
    php session_unset与session_destroy的区别
  • 原文地址:https://www.cnblogs.com/liumengsong/p/10755376.html
Copyright © 2011-2022 走看看