Python Pandas DataFrame 读取 CSV 文件 read_csv 参数详解


一、read_csv 基本参数。
二、通用解析参数。
三、读取网络数据



一、read_csv 基本参数。

在这里插入图片描述

  1. path 文件路径。
  2. sep 或者 delimiter 分隔符号。默认逗号(,) 可以是回车(\r) 换行(\n) tab(\t)。同时分隔符还支持正则表达式,其中 \s 表示空白字符,包括但不限于空格、回车(\r)、换行(\n)、tab或者叫水平制表符(\t)等。+ 是重复修饰符,表示它前面与它紧邻的表达式格式相匹配的字符串至少出现一个,上不封顶。因此用 \s+ 来匹配至少有一个空白字符存在的分隔符。
  3. header 表头,默认是0(第一行),如果没有应为 None。
  4. index_col 指定索引,不指定时使用从0开始的自然索引。
  5. names 用来指定列的名称 。
    a. csv文件有表头且是第一行,那么header和names都无需指定;
    b. csv文件有表头,但是表头不是第一行,这个时候需要指定header;
    c. csv文件没表头,通过names手动生成表头;
    d. csv文件有表头,但是不想用,这时需要指定names和header。
  6. usecols 指定只读取哪几列。用序号或者列名,eg: usecols=[0,1,2,3] 或者 usecols=[‘东四’, ‘天坛’, ‘官园’]。
  7. skiprows 文跳过的行数 。
    a. kiprows = 8 跳过前8行;
    b. skiprows = [2,4] 跳过第 2 4 行;
    c. skiprows=[0], header=None 跳过列名;
    d. skiprows=lambda x: x % 2 !=0 跳过奇数行。
  8. 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
)



二、通用解析参数。

  1. prefix 表头前缀,表头前缀。eg: prefix=‘region_’。
  2. converters' 通过字典的形式传入,字典的建是列名或者列的序号,字典的值是处理函数。
  3. na_values 空值替换,根据给出的数值设置为缺测值。eg: na_values=20200101 相当于将所有的 20200101 这个值设置为 NaN。
  4. 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')

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年3月5日
下一篇 2023年3月5日

相关推荐