博客
关于我
pandas.read_csv()的详解-ChatGPT4o作答
阅读量:801 次
发布时间:2023-02-26

本文共 2634 字,大约阅读时间需要 8 分钟。

pandas.read_csv() 是 pandas 中最强大的函数之一,用于从 CSV 文件中读取数据并加载为 DataFrame。以下是对该函数的详细解析,包括参数、用法和常见问题。

基本语法

代码示例:

import pandas as pddata = pd.read_csv(filepath, **kwargs)

其中,filepath 是文件路径,可为本地路径或 URL。

主要参数详解

数据分隔

sep:指定分隔符,默认为逗号(,')。

代码示例:

data = pd.read_csv('data.csv', sep=',')  # 默认分隔符是逗号data = pd.read_csv('data.tsv', sep='\t')  # 使用制表符data = pd.read_csv('data.txt', sep=' ')  # 使用空格分隔

文件编码

encoding:文件编码格式,默认为 utf-8。

代码示例:

data = pd.read_csv('data.csv', encoding='utf-8')  # 默认编码data = pd.read_csv('data.csv', encoding='gbk')  # 中文文件使用 gbk 编码

处理缺失值

na_values:指定哪些值视为缺失值,默认包括 NaN、空字符串等。

代码示例:

data = pd.read_csv('data.csv', na_values=['NULL', '-1'])  # 指定多个缺失值data = pd.read_csv('data.csv', na_values=['None'], keep_default_na=False)  # 只使用指定的缺失值

指定行与列

usecols:选择读取的列,支持列名列表或索引列表。

代码示例:

data = pd.read_csv('data.csv', usecols=['col1', 'col2'])  # 读取指定列data = pd.read_csv('data.csv', usecols=[0, 1])  # 按索引读取

skiprows:跳过前几行,支持行号列表。

代码示例:

data = pd.read_csv('data.csv', skiprows=2)  # 跳过前两行data = pd.read_csv('data.csv', skiprows=[0, 2])  # 跳过特定行

索引

index_col:指定哪一列作为 DataFrame 的索引。

代码示例:

data = pd.read_csv('data.csv', index_col='id')  # 指定列作为索引data = pd.read_csv('data.csv', index_col=0)  # 第一列作为索引

数据类型

dtype:强制指定列的数据类型,默认自动推断。

代码示例:

data = pd.read_csv('data.csv', dtype={'col1': int, 'col2': float})

处理行数

nrows:读取前 n 行。

代码示例:

data = pd.read_csv('data.csv', nrows=100)  # 读取前 100 行

chunksize:按块读取大文件。

代码示例:

chunk_iter = pd.read_csv('data.csv', chunksize=1000)for chunk in chunk_iter:    print(chunk.head())

处理列名

header:指定列名行,默认为第一行。

代码示例:

data = pd.read_csv('data.csv', header=0)  # 第一行是列名data = pd.read_csv('data.csv', header=None, names=['col1', 'col2', 'col3'])  # 自定义列名

其他常用参数

delimiter:与 sep 相同,指定分隔符。

quotechar:引用字符,默认为双引号('"')。

代码示例:

data = pd.read_csv('data.csv', sep=',', quotechar='"')

error_bad_lines:处理坏行,默认已弃用,建议使用 on_bad_lines='skip'

代码示例:

data = pd.read_csv('data.csv', on_bad_lines='skip')

示例 1:读取基础 CSV 文件

代码示例:

data = pd.read_csv('data.csv', sep=',', encoding='utf-8', nrows=10)print(data.head())

示例 2:处理特殊 CSV 文件

文件内容示例:

# 注释行ID,Name,Age,City1,Alice,30,NewYork2,Bob,25,LosAngeles3,Charlie,,Chicago

代码示例:

data = pd.read_csv('data.csv', sep=',', comment='#', na_values=[''])print(data)

输出结果:

ID     Name   Age         City0    Alice  30.0      NewYork1      Bob  25.0  LosAngeles2  Charlie   NaN      Chicago

示例 3:大文件分块读取

代码示例:

chunk_iter = pd.read_csv('large_data.csv', chunksize=10000)for chunk in chunk_iter:    print(chunk.shape)

常见问题

  • UnicodeDecodeError:文件编码不匹配,尝试指定编码:
  • data = pd.read_csv('data.csv', encoding='latin1')
  • 分隔符复杂:使用正则表达式:
  • data = pd.read_csv('data.csv', sep=r'\s+')
  • 大文件内存不足:使用 chunksize 分块处理,或仅加载特定列和行。
  • 转载地址:http://ypvfk.baihongyu.com/

    你可能感兴趣的文章
    php中curl得使用
    查看>>
    PHP中curl特性
    查看>>
    PHP中date时间不对
    查看>>
    PHP中dirname(__FILE__)的意思
    查看>>
    PHP中extract()函数的妙用
    查看>>
    PHP中fileinfo的作用以及怎么开启fileinfo
    查看>>
    PHP中file_get_contents如何带上cookies
    查看>>
    PHP中header的作用
    查看>>
    PHP中implode()和explode()
    查看>>
    PHP中ob系列函数讲解(浏览器缓存技术)
    查看>>
    PHP中serialize和json序列化与反序列化的区别
    查看>>
    Redis事务处理
    查看>>
    php中传值与传引用的区别是什么
    查看>>
    php中使用ajax进行前后端json数据交互
    查看>>
    Redis事务和锁操作
    查看>>
    Redis事务中的watch机制-从实例入手学习
    查看>>
    PHP中如何得到数组的长度
    查看>>
    Redis 集群模式下一个 Master 挂掉后如何选举?
    查看>>
    php中引入文件几种方式的区别
    查看>>
    PHP中把stdClass Object转array的几个方法
    查看>>