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
CSV 文件的存取的更多相关文章
- 用CSV文件读写数据的两种方式(转)
导读:有时候我们需要对收集的数据做统计,并在页面提供显示以及下载.除了对传统的excel存取之外,对CSV文件的存取也很重要.本文列出了这两种操作的详细代码. 代码: <?php $file = ...
- matplotlib读取csv文件
一,从本地加载csv文件 from matplotlib import pyplot as pltimport numpy as npimport csv#用来正常显示中文标签plt.rcParams ...
- 3.5Python数据处理篇之Numpy系列(五)---numpy文件的存取
目录 目录: (一)以文本形式存取 1.说明: 2.语法解释: 3.实例(以.csv文件为例) 4.效果展示 (二)以任意的形式存取 1.说明: 2.语法解释: 3.实例(以.bat二进制文件为例) ...
- 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 ...
- CSV文件分割与列异常处理的python脚本
csv文件通常存在如下问题: 1. 文件过大(需要进行文件分割)2. 列异常(列不一致,如元数据列为10列,但csv文件有些行是11列,或者4列)本脚本用于解决此问题. #coding=utf-8 ' ...
- 用opencsv文件读写CSV文件
首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解 ...
- 关于CSV文件 Excel打开乱码问题的解决方案
近日写java程序中,将数据输出到csv文件中,发现Excel打开之后,中文均为乱码 于是寻找解决方案,发现最简单的方式还是如此了 1. 将输出的csv文件用记事本打开 2. 另存为将文件编码格式改为 ...
- sparkR读取csv文件
sparkR读取csv文件 The general method for creating SparkDataFrames from data sources is read.df. This met ...
- Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
<Windows Azure Platform 系列文章目录> 请注意: - Azure不支持增加Endpoint Range - 最多可以增加Endpoint数量为150 http:// ...
随机推荐
- 3DSMAX安装失败怎样卸载重新安装3DSMAX,解决3DSMAX安装失败的方法总结
技术帖:3DSMAX没有按照正确方式卸载,导致3DSMAX安装失败.楼主也查过网上关于如何解决3DSMAX安装失败的一些文章,是说删除几个3DSMAX文件和3DSMAX软件注册表就可以解决3DSMAX ...
- WPF Canvas实现进度条
原文:WPF Canvas实现进度条 先看效果图: 思路: 一个Canvas做背景,一个Canvas用来显示进度,图片放在显示进度的Canvas中,靠右设置为图片本身宽度一半的距离,视觉上实现以图片中 ...
- java 简单实现FtpClient
1. 引入喜闻乐见的maven地址 <dependency> <groupId>commons-net</groupId> <artifactId>co ...
- oracle函数 MAX([distinct|all]x)
[功能]统计数据表选中行x列的最大值. [参数]all表示对所有的值求最大值,distinct只对不同的值求最大值,默认为all 如果有参数distinct或all,需有空格与x(列)隔开. [参数] ...
- 规模化落地云原生,阿里云即将重磅亮相 KubeCon China
2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...
- docker oracle install
https://hub.docker.com/r/9fevrier/oracle-11g Informations Oracle directory : /opt/oracle Data direct ...
- @bzoj - 4378@ [POI2015] Pustynia
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 n 的正整数序列 a,每个数都在 1 到 10^ ...
- js判断浏览设备是 手机端,电脑端还是平板端
console.log(navigator.userAgent); var os = function() { var ua = navigator.userAgent, isWindowsPhone ...
- oracle 基础表的选择
基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTI ...
- 2019-6-23-修复-dotnet-Core-缺SDK编译失败
title author date CreateTime categories 修复 dotnet Core 缺SDK编译失败 lindexi 2019-6-23 10:55:9 +0800 2019 ...