Python 用Pandas读取CSV


导入包如下:

import pandas as pa

使用read_csv返回一个DataFrame(按照参数的要求会返回指定的类型)

数据内容

filepath_or_buffer为必需值.

根据python语法,第一个参数传参时可以不写参数名

# 本地绝对路径
pa.read_csv("E:/temp/data.csv")
# 本地相对路径
pa.read_csv("temp/data.csv")
# 如果文件与代码文件在同一目录下
pa.read_csv("data.csv")
# 也可以使用URL方式
pa.read_csv("https://www.abc.com/data.csv")

分隔符

sep参数为字符类型,表示每一行的数据内容,缺省时为逗号,常用的是制表符(\t)、空格等,这取决于数据的真实状况。

使用正则作为分隔符时,需要额外配置engine=python

# 数据分隔符默认是逗号,可以指定为其他符号
# read_table 默认是制表符分隔tab
pd.read_table(data) 
# 使用正则表达式
pd.read_csv(data,sep="[u4e00-u9fa5]", engine='python')
# 制表符分隔tab
pd.read_csv(data, sep='\t')
# 制表符分隔tab
pd.read_csv(data, sep='|') 

pd.read_csv还提供了delimiter,当使用此参数时,sep参数失效

delimiter效果与sep相同

表头

header参数支持整类型和包含整类型的清单,它指定了表格标题的第几行,并且默认情况下将第一行作为表格标题。

# 第一行
pd.read_csv(data, header=0)
# 没有表头
pd.read_csv(data, header=None)
# 多层索引MultiIndex
pd.read_csv(data, header=[0,1,3])

注:如果skip_blank_lines= True,那么 header参数将会忽略空白和注解,所以 header=0代表第1行的数据,而不是第1行。

列名

names用于为数据行指定名称,该列表顺序与数据一一对应。如果文件中没有列名,那么应该将标题设置为“None”,并且列名列表中不允许有重复值。

pd.read_csv(data, names=['列1', '列2']) # 指定列名列表
pd.read_csv(data, names=['列1', '列2'], header=None)

索引

index_col用来指定索引列,可以是行索引的列编号或者列名,如果给定一个序列,则有多个行索引。Pandas不会自动将第一列作为索引,不指定时会自动使用以0开始的自然索引。

# 支持int、str、int序列、str序列、False,默认为None
pd.read_csv(data, index_col=False) # 不再使用首列作为索引
pd.read_csv(data, index_col=0) # 第几列是索引
pd.read_csv(data, index_col='年份') # 指定列名
pd.read_csv(data, index_col=['a','b']) # 多个索引
pd.read_csv(data, index_col=[0, 3]) # 按列索引指定多个索引

使用部分列

如果只使用数据的部分列,可以用usecols来指定,这样可以加快加载速度并降低内存消耗。

# 支持类似列表的序列和可调用对象
# 读取部分列表
pd.read_csv(data, usecols=[0,4,3]) # 按索引只读取指定列,与顺序无关
pd.read_csv(data, usecols=['列1', '列5']) # 按列名,列名必须存在
# 指定列顺序,其实是df的筛选功能
pd.read_csv(data, usecols=['列1', '列5'])[['列5'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值