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

CSV 文件的存取的更多相关文章

  1. 用CSV文件读写数据的两种方式(转)

    导读:有时候我们需要对收集的数据做统计,并在页面提供显示以及下载.除了对传统的excel存取之外,对CSV文件的存取也很重要.本文列出了这两种操作的详细代码. 代码: <?php $file = ...

  2. matplotlib读取csv文件

    一,从本地加载csv文件 from matplotlib import pyplot as pltimport numpy as npimport csv#用来正常显示中文标签plt.rcParams ...

  3. 3.5Python数据处理篇之Numpy系列(五)---numpy文件的存取

    目录 目录: (一)以文本形式存取 1.说明: 2.语法解释: 3.实例(以.csv文件为例) 4.效果展示 (二)以任意的形式存取 1.说明: 2.语法解释: 3.实例(以.bat二进制文件为例) ...

  4. numpy中的CSV文件

    As we all know,we use numpy to do some data explore.CSV has a good point to get a lot data. so how c ...

  5. CSV文件分割与列异常处理的python脚本

    csv文件通常存在如下问题: 1. 文件过大(需要进行文件分割)2. 列异常(列不一致,如元数据列为10列,但csv文件有些行是11列,或者4列)本脚本用于解决此问题. #coding=utf-8 ' ...

  6. 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...

  7. 关于CSV文件 Excel打开乱码问题的解决方案

    近日写java程序中,将数据输出到csv文件中,发现Excel打开之后,中文均为乱码 于是寻找解决方案,发现最简单的方式还是如此了 1. 将输出的csv文件用记事本打开 2. 另存为将文件编码格式改为 ...

  8. sparkR读取csv文件

    sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This met ...

  9. Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint

    <Windows Azure Platform 系列文章目录> 请注意: - Azure不支持增加Endpoint Range - 最多可以增加Endpoint数量为150 http:// ...

随机推荐

  1. 3DSMAX安装失败怎样卸载重新安装3DSMAX,解决3DSMAX安装失败的方法总结

    技术帖:3DSMAX没有按照正确方式卸载,导致3DSMAX安装失败.楼主也查过网上关于如何解决3DSMAX安装失败的一些文章,是说删除几个3DSMAX文件和3DSMAX软件注册表就可以解决3DSMAX ...

  2. WPF Canvas实现进度条

    原文:WPF Canvas实现进度条 先看效果图: 思路: 一个Canvas做背景,一个Canvas用来显示进度,图片放在显示进度的Canvas中,靠右设置为图片本身宽度一半的距离,视觉上实现以图片中 ...

  3. java 简单实现FtpClient

    1. 引入喜闻乐见的maven地址 <dependency> <groupId>commons-net</groupId> <artifactId>co ...

  4. oracle函数 MAX([distinct|all]x)

    [功能]统计数据表选中行x列的最大值. [参数]all表示对所有的值求最大值,distinct只对不同的值求最大值,默认为all 如果有参数distinct或all,需有空格与x(列)隔开. [参数] ...

  5. 规模化落地云原生,阿里云即将重磅亮相 KubeCon China

    2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...

  6. docker oracle install

    https://hub.docker.com/r/9fevrier/oracle-11g Informations Oracle directory : /opt/oracle Data direct ...

  7. @bzoj - 4378@ [POI2015] Pustynia

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 n 的正整数序列 a,每个数都在 1 到 10^ ...

  8. js判断浏览设备是 手机端,电脑端还是平板端

    console.log(navigator.userAgent); var os = function() { var ua = navigator.userAgent, isWindowsPhone ...

  9. oracle 基础表的选择

    基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTI ...

  10. 2019-6-23-修复-dotnet-Core-缺SDK编译失败

    title author date CreateTime categories 修复 dotnet Core 缺SDK编译失败 lindexi 2019-6-23 10:55:9 +0800 2019 ...