Python Pandas DataFrame 读取 CSV 文件 read_csv 参数详解
一、read_csv 基本参数。二、通用解析参数。三、读取网络数据
·
一、read_csv 基本参数。
二、通用解析参数。
三、读取网络数据
一、read_csv 基本参数。
path
文件路径。sep 或者 delimiter
分隔符号。默认逗号(,) 可以是回车(\r) 换行(\n) tab(\t)。同时分隔符还支持正则表达式,其中 \s 表示空白字符,包括但不限于空格、回车(\r)、换行(\n)、tab或者叫水平制表符(\t)等。+ 是重复修饰符,表示它前面与它紧邻的表达式格式相匹配的字符串至少出现一个,上不封顶。因此用 \s+ 来匹配至少有一个空白字符存在的分隔符。header
表头,默认是0(第一行),如果没有应为 None。index_col
指定索引,不指定时使用从0开始的自然索引。names
用来指定列的名称 。
a. csv文件有表头且是第一行,那么header和names都无需指定;
b. csv文件有表头,但是表头不是第一行,这个时候需要指定header;
c. csv文件没表头,通过names手动生成表头;
d. csv文件有表头,但是不想用,这时需要指定names和header。usecols
指定只读取哪几列。用序号或者列名,eg: usecols=[0,1,2,3] 或者 usecols=[‘东四’, ‘天坛’, ‘官园’]。skiprows
文跳过的行数 。
a. kiprows = 8 跳过前8行;
b. skiprows = [2,4] 跳过第 2 4 行;
c. skiprows=[0], header=None 跳过列名;
d. skiprows=lambda x: x % 2 !=0 跳过奇数行。nrows
指定需要读取的行数。。
import pandas as pd
path = 'C:\\Users\\Administrator\\libin_work\\beijing.csv'
df = pd.read_csv(path)
# sep 为正则
df = pd.read_csv(path, sep=r'\s+')
# delim_whitespace,默认为 False,设置为 True 时,表示分割符为空白字符,可以是空格、"\t"等等。等效于设置sep ='\s+'。
# 如果此选项设置为True,则不应该为delimiter参数传递任何内容。
df = pd.read_csv(path, delim_whitespace=True)
# names用来指定列的名称,它是一个类似列表的序列,与数据一一对应。
# 如果文件不包含列名,那么应该设置header=None,列名列表中不允许有重复值。
df = pd.read_csv(path, sep=',', names=range(38))
# index_col用来指定索引列,可以是行索引的列编号或者列名,
# 如果给一个列表,则有多个行索引。Pandas不会自动将第一列作为索引,不指定时会自动使用以0开始的自然索引。
df = pd.read_csv(path, index_col='hour')
df = pd.read_csv(path, index_col=['date', 'hour', 'type'])
# 除了传入具体的数值,来表明要过滤掉哪些行,还可以传入一个函数,隔行跳过。
df = pd.read_csv(path, skiprows=lambda x: x % 2 != 0)
# skip_blank_lines指定是否跳过空行,如果为True,则跳过空行,否则数据记为NaN。
df = pd.read_csv(path, delim_whitespace=True, skip_blank_lines=False)
df = pd.read_csv(
path, # 这里是 path=path 的简写
sep = ',',
header = None,
usecols = [0,1,2,3,9,10],
skiprows = 3,
nrows = 100
)
二、通用解析参数。
prefix
表头前缀,表头前缀。eg: prefix=‘region_’。converters'
通过字典的形式传入,字典的建是列名或者列的序号,字典的值是处理函数。na_values
空值替换,根据给出的数值设置为缺测值。eg: na_values=20200101 相当于将所有的 20200101 这个值设置为 NaN。parse_dates
时间解析,将string转换为时间对象。
import pandas as pd
# 使用converters参数对列的数据进行转换,参数中指定列名与针对此列的处理函数,最终以字典的形式传入,
# 字典的键可以是列名或者列的序号。
# 将 date 列数数据 进行格式转换
df = pd.read_csv(
'C:\\Users\\Administrator\\libin_work\\beijing.csv',
converters={'date': lambda x: pd.to_datetime(x)}
)
# 如果没有对date列做时间转换,原来的列就只是整数,而现在是datetime64的类型。
#datetime64类型支持我们做更多的时间上的操作, eg: 通过dt属性我们可以获取数组中具体的年月日。
df['date'].dt.year, df['date'].dt.month, df['date'].dt.day
df = pd.read_csv(
'C:\\Users\\Administrator\\libin_work\\beijing.csv',
sep = ',',
parse_dates={'time': ['date', 'hour']},
# 使用 parse_dates 的时候需要用 converters 将所有的 hour 转换成2位数(1变成01)
converters={'hour': lambda x: x.zfill(2)}
)
三、读取网络数据。
import pandas as pd
pd.read_csv('https://vincentarelbundock.github.io/Rdatasets/csv/AER/ChinaIncome.csv')
更多推荐
已为社区贡献5条内容
所有评论(0)