pandas.read_csv可以读取CSV(逗号分割)文件、文本类型的文件text、log类型到DataFrame
一、pandas.read_csv常用参数整理
也支持文件的部分导入和选择迭代,更多帮助参见:
http://pandas.pydata.org/pandas-docs/stable/io.html
-
filepath_or_buffer
:可以是URL,可用URL类型包括:
http, ftp, s3和文件
。对于多文件正在准备中本地文件读取。
实例1:实现图片中文件的读取,注意图片中的所有输入基于英文输入下得到,返回DataFrame文件
In [1]: import pandas as pd
#读取out.log文件,其他的参数默认
In [2]: out = pd.read_csv('out.log')
In [3]: out
Out[3]:
book kook
0 joke2 dddd
1 fang3 NaN
2 test1 NaN
3 test2 NaN
4 test3 NaN
5 1997/10/2 NaN
实例2:读取股票数据csv文件,返回DataFrame文件
In [4]: stock = pd.read_csv(
In [5]: stock
Out[5]:
date code closing high low opening pre_closing zde \
0 2017/1/20
1 2017/1/19
2 2017/1/18
3 2017/1/17
4 2017/1/16
5 2017/1/13
6 2017/1/12
-
sep
:
如果不指定参数,则会尝试使用逗号分隔。
分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。并且忽略数据中的逗号。正则表达式例子:’\r\t’。
In [6]: a = pd.read_csv('out.log',sep = '\s')
C:/Anaconda3/Scripts/ipython-script.py:1: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
if __name__ == '__main__':
#设定空值作为分隔符,','不会分割每一行的数据
In [7]: a
Out[7]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
#空值的设定两种方式:' ' or '\s'
In [9]: a = pd.read_csv('out.log',sep = ' ')
In [10]: a
Out[10]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
-
delimiter
:
定界符,备选分隔符
(
如果指定该参数,则sep参数失效
)
In [13]: a = pd.read_csv('out.log',sep = ', ',delimiter='o')
#此时sep = ','设定失效
In [14]: a
Out[14]:
b Unnamed: 1 k,k Unnamed: 3 k
0 j ke2,dddd NaN NaN NaN
1 fang3 NaN NaN NaN NaN
2 test1 NaN NaN NaN NaN
3 test2 NaN NaN NaN NaN
4 test3 NaN NaN NaN NaN
5 1997/10/2 NaN NaN NaN NaN
-
delim_whitespace
:
指定空格(例如’ ‘或者’ ‘)是否作为分隔符使用,等效于设定sep=’\s+’。如果这个参数设定为True那么delimiter 参数失效。
In [20]: a = pd.read_csv('out.log',delim_whitespace = True)
In [21]: a
Out[21]:
book,kook
0 joke2,dddd
1 fang3
2 test1
3 test2
4 test3
5 1997/10/2
-
header
:
指定行数用来作为列名,数据开始行数
。
如果文件中没有列名,则默认为0【第一行数据】,否则设置为None
。如果明确设定 header = 0 就会替换掉原来存在列名。header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉。
注意:如果skip_blank_lines=True 那么header参数忽略注释行和空行,所以header=0表示第一行数据而不是文件的第一行。
In [22]: a = pd.read_csv('out.log',delim_whitespace = True,header = None)
In [23]: a
Out[23]:
0 book,kook
1 joke2,dddd
2 fang3
3 test1
4 test2
5 test3
6 1997/10/2
-
names
:
用于结果的列名列表,如果数据文件中没有列标题行,就需要执行 header=None。names属性在header之前运行
默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。
In [32]: a = pd.read_csv('out.log',names='ko')
In [33]: a
Out[33]:
k o
0 book kook
1 joke2 dddd
2 fang3 NaN
3 test1 NaN
4 test2 NaN
5 test3 NaN
6 1997/10/2 NaN
-
index_col
:用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。
In [45]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=0)
In [46]: a
Out[46]:
book kook
joke2 dddd
fang3 NaN
test1 NaN
test2 NaN
test3 NaN
1997/10/2 NaN
In [47]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1)
In [48]: a
Out[48]:
kook book
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
-
usecols
:返回一个数据子集,该列表中的值必须可以对应到文件中的位置(数字可以对应到指定的列)或者是字符传为文件中的列名。例如:usecols有效参数可能是 [0,1,2]或者是 [‘foo’, ‘bar’, ‘baz’]。使用这个参数可以加快加载速度并降低内存消耗。
-
prefix
:
在没有列标题时,也就是header设定为None,给列添加前缀。例如:添加prefix= ‘X’ 使得列名称成为 X0, X1, …
In [38]: a = pd.read_csv('out.log',header=None,prefix='XX')
In [39]: a
Out[39]:
XX0 XX1
0 book kook
1 joke2 dddd
2 fang3 NaN
3 test1 NaN
4 test2 NaN
5 test3 NaN
6 1997/10/2 NaN
-
dtype: 每列数据的数据类型。例如 {‘a’: np.float64, ‘b’: np.int32}
In [49]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,dtype=)
In [50]: a
Out[50]:
kook book
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
In [51]: a['XX0'].values
Out[51]: array(['book', 'joke2', 'fang3', 'test1', 'test2', 'test3', '1997/10/2'], dtype=object)
In [52]: a['XX0'].values[0]
Out[52]: 'book'
In [53]: type(a['XX0'].values[0])
Out[53]: str
-
skipinitialspace
:忽略分隔符后的空白(默认为False,即不忽略).
-
skiprows
:需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。
In [54]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1)
In [55]: a
Out[55]:
dddd joke2
NaN fang3
NaN test1
NaN test2
NaN test3
NaN 1997/10/2
-
nrows
:需要读取的行数(从文件头开始算起)。
In [56]: a = pd.read_csv('out.log',header=None,prefix='XX',index_col=1,skiprows= 1,nrows=4)
In [57]: a
Out[57]:
dddd joke2
NaN fang3
NaN test1
NaN test2
-
na_values
:一组用于替换NA/NaN的值。如果传参,需要制定特定列的空值。默认为‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘nan’`.
-
keep_default_na
:如果指定na_values参数,并且keep_default_na=False,那么默认的NaN将被覆盖,否则添加
-
na_filter
:
是否检查丢失值(空字符串或者是空值)
。对于大文件来说数据集中没有空值,设定na_filter=False可以提升读取速度。
-
skip_blank_lines
:如果为True,则跳过空行;否则记为NaN。
pandas.read_csv可以读取CSV(逗号分割)文件、文本类型的文件text、log类型到DataFrame一、pandas.read_csv常用参数整理也支持文件的部分导入和选择迭代,更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html参数:filepath_or_buffer :可以是URL,可用URL类
pd
.
read
_
csv
()方法中header
参数
,默认为0,标签为0(即第1行)的行为表头。若设置为-1,则无表头。示例如下:
(1)不设置header
参数
(默认)时:
df1 =
pd
.
read
_
csv
('target.
csv
',encoding='utf-8')
(2)header=1时:
import
pandas
as
pd
df2 =
pd
.
read
_
csv
('target.
csv
',encoding='utf-8',header=1)
(3)header=-1时(可用于
读取
无表头
CSV
文件
):
df3 =
pd
.
read
_
csv
('target.
本系列博客为DataWhale第37期《动手学数据分析》课程学习笔记,课程以Kaggle上经典的泰坦尼克数据比赛为主线,从最基础的数据导入开始做数据分析实战。
比赛具体内容及数据获取链接如下:
Titanic - Machine Learning from Disaster | Kagglehttps://www.kaggle.com/competitions/titanic
一、数据载入
导入numpy和
pandas
import numpy as np
import
pandas
as
pd
用
pandas
处理.
csv
文件
时,有时我们希望保存的.
csv
文件
没有表头,于是我去看了DataFrame.to_
csv
的document。
发现只需要再添加header=None这个
参数
就行了(默认是True),
下面贴上document:
DataFrame.to_
csv
(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, quo
file = open('./abc.
csv
')
csv
.
read
er(file, delimiter=',', quotechar='')
说明:delimiter是
分隔符
,quotechar是引用符,当一段话中出现
分隔符
的时候,用引用符将这句话括起来,就能排除歧义。
以上这篇对
python
csv
模块配置
分隔符
和引用符详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:
Python
程序中用
csv
模块来
操作
csv
文件
的基本使用教程
Python
CSV
模块使用
实例
Pytho
import
pandas
as
pd
pd
.
read
_
csv
(filename)
该读
文件
方式,默认是以逗号“,”作为分割符,若是以其它
分隔符
,比如制表符“/t”,则需要显示的指定
分隔符
。如下
pd
_
read
_
csv
(filename,'/t')
但如果遇见某个字段包含了”/t”的字符,比如网址“www.xxx.xx/t…”,则也会把字段中的“/t”理解为
分隔符
。
但是如果在调用函数时,指定
参数
名,则不存在该问题。
即如下调用方式
read
_
csv
(filename,sep='/t')
以上这篇
pandas
读取
csv
文件
,
分隔符
参数
se
2016-03-22 00:06:24.4463094 中文测试字符
2016-03-22 00:06:32.4565680 需要编辑encoding
2016-03-22 00:06:32.6835965 abc
2016-03-22 00:06:32.8041945 egb
2.
pandas
读取
数据
import
pandas
as
pd
data =
pd
.
read
_table('Z:/test.txt',header=None,encoding='gb2312',delim_whitespace=
data =
pd
.
read
_
csv
('20180201.txt',sep = '|',dtype = 'str')
以上代码意思是:
1,
读取
本工作路径下的20180201.txt
文件
2,使用’|’分割不同的列
3,所有列数据类型为字符串’str’
以上这篇
python
读取
竖线
分隔符
的
文本
方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:
python
处理两种
分隔符
的数据集方法
python
针对不定
分隔符
切割提取字符串的方法
python
如何拆分含有多种
分隔符
的字符串对pyth
使用
pandas
做数据处理的第一步就是
读取
数据,数据源可以来自于各种地方,
csv
文件
便是其中之一。而
读取
csv
文件
,
pandas
也提供了非常强力的支持,
参数
有四五十个。这些
参数
中,有的很容易被忽略,但是在实际工作中却用处很大。比如:
文件
读取
时设置某些列为时间类型
导入
文件
, 含有重复列
过滤某些列
每次迭代指定的行数
pandas
在
读取
csv
文件
是通过
read
_
csv
这个函数
读取
的,下面就来看看这个函数都支持哪些不同的
参数
,看看它们都生得一副什么模样,是三头六臂,还是烈焰红唇。
pd
.
read
_
csv
()是
pandas
库
中的一个函数,用于
读取
CSV
文件
并将其转换为DataFrame对象。它有以下
参数
:
1. filepath_or_buffer:
CSV
文件
的路径或URL,也可以是一个打开的
文件
对象。
2. sep:
CSV
文件
中的
分隔符
,默认为逗号。
3. delimiter:同sep,指定
分隔符
。
4. header:指定哪一行作为列名,默认为,即第一行。
5. names:指定列名,如果header=None,则必须指定。
6. index_col:指定哪一列作为行索引。
7. usecols:指定
读取
哪些列。
8. dtype:指定每一列的数据类型。
9. skiprows:跳过指定的行数。
10. nrows:
读取
的行数。
11. skip_blank_lines:是否跳过空行,默认为True。
12. na_values:将指定的值视为缺失值。
13. comment:指定注释字符,遇到注释行将被忽略。
14. encoding:指定
文件
编码。
15. squeeze:如果数据只有一列,则返回Series对象而不是DataFrame对象。
16. thousands:千分位
分隔符
。
17. decimal:小数点
分隔符
。
18. parse_dates:将指定的列解析为日期类型。
19. infer_datetime_format:是否自动推断日期格式。
20. keep_date_col:是否保留日期列。
21. dayfirst:是否将日期中的日放在前面。
22. date_parser:指定日期解析函数。
23. memory_map:是否使用内存映射
文件
读取
数据。
24. error_bad_lines:是否跳过
读取
错误的行。
25. warn_bad_lines:是否警告
读取
错误的行。
26. low_memory:是否分块
读取
数据以节省内存。
27. chunksize:指定每次
读取
的行数。
BigBird2020:
【python】pandas库Series类型与基本操作详解
星爵starlord:
【python】详解类class的访问控制:单下划线_与双下划线__(四)
【python】详解pandas.DataFrame.plot( ) 中参数secondary_y实现双坐标轴使用
Rhett1124:
【Python】详解pandas的isin索引和~反向索引
qq_47996023: