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

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

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

基本语法

代码示例:

import pandas as pd
data = 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         City
0 Alice 30.0 NewYork
1 Bob 25.0 LosAngeles
2 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/

    你可能感兴趣的文章
    PageHelper常见问题
    查看>>
    SpringBoot中配置为开发模式,代码修改后不用重新运行
    查看>>
    springboot中pom.xml、application.yml、application.properties
    查看>>
    PageHelper:上手教程(最详细)
    查看>>
    PageOffice如何实现从零开始动态生成图文并茂的Word文档
    查看>>
    PageRank算法
    查看>>
    Paint类(画笔)
    查看>>
    paip. 调试技术打印堆栈 uapi print stack java php python 总结.
    查看>>
    paip.android 手机输入法制造大法
    查看>>
    paip.spring3 mvc servlet的配置以及使用最佳实践
    查看>>
    Palindrome Number leetcode java
    查看>>
    Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
    查看>>
    Palo Alto Networks Expedition 远程命令执行漏洞(CVE-2024-9463)
    查看>>
    Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
    查看>>
    Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现
    查看>>
    Springboot中@SuppressWarnings注解详细解析
    查看>>
    Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现
    查看>>
    Panalog 日志审计系统 sprog_upstatus.php SQL 注入漏洞复现(XVE-2024-5232)
    查看>>
    Panalog 日志审计系统 前台RCE漏洞复现
    查看>>
    PANDA VALUE_COUNTS包含GROUP BY之前的所有值
    查看>>