当前位置: 首页 > news >正文

一周学会Pandas2 Python数据处理与分析-Pandas2读取CSV

锋哥原创的Pandas2 Python数据处理与分析 视频教程:  

2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

CSV格式文件是使用和处理最多的文件格式,Pandas2提供的read_csv()方法来读取csv文件,提供了很多强大的功能参数支持,让我们开发非常方便。

首先我们去看下read_csv()的方法的参数定义:

def read_csv(
    filepath_or_buffer: FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str],
    *,
    sep: str | None | lib.NoDefault = lib.no_default,
    delimiter: str | None | lib.NoDefault = None,
    # Column and Index Locations and Names
    header: int | Sequence[int] | None | Literal["infer"] = "infer",
    names: Sequence[Hashable] | None | lib.NoDefault = lib.no_default,
    index_col: IndexLabel | Literal[False] | None = None,
    usecols: UsecolsArgType = None,
    # General Parsing Configuration
    dtype: DtypeArg | None = None,
    engine: CSVEngine | None = None,
    converters: Mapping[Hashable, Callable] | None = None,
    true_values: list | None = None,
    false_values: list | None = None,
    skipinitialspace: bool = False,
    skiprows: list[int] | int | Callable[[Hashable], bool] | None = None,
    skipfooter: int = 0,
    nrows: int | None = None,
    # NA and Missing Data Handling
    na_values: Hashable
    | Iterable[Hashable]
    | Mapping[Hashable, Iterable[Hashable]]
    | None = None,
    keep_default_na: bool = True,
    na_filter: bool = True,
    verbose: bool | lib.NoDefault = lib.no_default,
    skip_blank_lines: bool = True,
    # Datetime Handling
    parse_dates: bool | Sequence[Hashable] | None = None,
    infer_datetime_format: bool | lib.NoDefault = lib.no_default,
    keep_date_col: bool | lib.NoDefault = lib.no_default,
    date_parser: Callable | lib.NoDefault = lib.no_default,
    date_format: str | dict[Hashable, str] | None = None,
    dayfirst: bool = False,
    cache_dates: bool = True,
    # Iteration
    iterator: bool = False,
    chunksize: int | None = None,
    # Quoting, Compression, and File Format
    compression: CompressionOptions = "infer",
    thousands: str | None = None,
    decimal: str = ".",
    lineterminator: str | None = None,
    quotechar: str = '"',
    quoting: int = csv.QUOTE_MINIMAL,
    doublequote: bool = True,
    escapechar: str | None = None,
    comment: str | None = None,
    encoding: str | None = None,
    encoding_errors: str | None = "strict",
    dialect: str | csv.Dialect | None = None,
    # Error Handling
    on_bad_lines: str = "error",
    # Internal
    delim_whitespace: bool | lib.NoDefault = lib.no_default,
    low_memory: bool = _c_parser_defaults["low_memory"],
    memory_map: bool = False,
    float_precision: Literal["high", "legacy"] | None = None,
    storage_options: StorageOptions | None = None,
    dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default,
)

pd.read_csv() 是 pandas 中最常用的数据读取方法之一,用于从 CSV 文件中读取数据并创建 DataFrame。以下是其主要参数的详细说明:

基本参数

  1. filepath_or_buffer:

    • 必需参数,可以是文件路径、URL 或任何带有 read() 方法的对象

    • 示例: 'data.csv', 'https://example.com/data.csv'

  2. sep/delimiter:

    • 字段分隔符,默认为 ','

    • 示例: '\t' 用于制表符分隔的文件

  3. header:

    • 指定作为列名的行号,默认为 0 (第一行)

    • 设置为 None 表示没有标题行

    • 示例: header=0, header=None

  4. names:

    • 用于结果的列名列表

    • 如果文件不包含标题行,则应设置 header=None

    • 示例: names=['col1', 'col2', 'col3']

数据解析参数

  1. index_col:

    • 用作行索引的列编号或列名

    • 示例: index_col=0, index_col='date'

  2. usecols:

    • 指定要读取的列,可以是列名列表或列索引列表

    • 示例: usecols=[0, 1, 2], usecols=['col1', 'col2']

  3. dtype:

    • 指定列的数据类型

    • 示例: dtype={'col1': 'float64', 'col2': 'int32'}

  4. parse_dates:

    • 尝试将指定列解析为日期

    • 示例: parse_dates=['date'], parse_dates=True (尝试解析所有日期)

  5. date_parser:

    • 用于解析日期的函数

    • 通常与 parse_dates 一起使用

  6. converters:

    • 列转换函数的字典

    • 示例: converters={'col1': lambda x: x.lower()}

缺失值处理

  1. na_values:

    • 应识别为 NA/NaN 的字符串列表

    • 示例: na_values=['NA', 'N/A', 'missing']

  2. keep_default_na:

    • 是否包含默认的 NaN 值列表,默认为 True

    • 如果为 False,则仅识别 na_values 指定的值

  3. na_filter:

    • 是否检测缺失值标记,默认为 True

    • 设置为 False 可以提高读取大文件的速度

文件处理参数

  1. nrows:

    • 从文件开头读取的行数

    • 示例: nrows=1000 (只读取前1000行)

  2. skiprows:

    • 从文件开头跳过的行数或行号列表

    • 示例: skiprows=5, skiprows=[0, 2]

  3. skipfooter:

    • 从文件末尾跳过的行数

    • 示例: skipfooter=3 (跳过最后3行)

  4. encoding:

    • 文件编码,如 'utf-8', 'gbk', 'latin1'

    • 示例: encoding='utf-8'

  5. engine:

    • 使用的解析引擎,可选 'c' (更快) 或 'python' (功能更全)

    • 示例: engine='python'

性能优化参数

  1. chunksize:

    • 返回迭代器对象,每次迭代返回指定行数

    • 用于处理大文件

    • 示例: chunksize=10000

  2. memory_map:

    • 如果为 True,则使用内存映射文件进行读取

    • 对于大文件可以提高性能

  3. low_memory:

    • 分块处理文件以减少内存使用,默认为 True

    • 设置为 False 可以提高速度但增加内存使用

其他参数

  1. thousands:

    • 千位分隔符

    • 示例: thousands=',' (将 "1,000" 解析为 1000)

  2. decimal:

    • 小数点字符,默认为 '.'

    • 示例: decimal=',' (用于欧洲格式的小数点)

  3. comment:

    • 标识注释开始的字符

    • 示例: comment='#' (跳过以 # 开头的行)

  4. verbose:

    • 是否输出解析信息,默认为 False

  5. skip_blank_lines:

    • 如果为 True,则跳过空行,默认为 True

无列名CSV文件处理header,names

对于无列名csv数据处理示例:

没有列头的csv文件处理 header设置None,names指定列名称

import pandas as pd
​
# 没有列头的csv文件处理 header设置None,names指定列名称
df = pd.read_csv('student_scores2.csv', header=None,
                 names=['姓名', '学号', '出生日期', '性别', '语文分数', '数学分数', '英语分数'])

运行输出:

行索引index_col

index_col指定行索引,用作行索引的列编号或列名。

示例:

import pandas as pd
​
df = pd.read_csv('student_scores.csv', index_col='学号')

使用部分列usecols

指定要读取的列,可以是列名列表或列索引列表。示例: usecols=[0, 1, 2], usecols=['col1', 'col2']

示例:

import pandas as pd
​
df = pd.read_csv('student_scores.csv', usecols=['学号', '语文分数'])

运行结果:

读取指定行nrows

读取前10行数据:

import pandas as pd
​
df = pd.read_csv('student_scores.csv', nrows=10)

运行输出:

空值替换na_values和keep_default_na

na_values参数的值是一组用于替换NA/NaN的值。如果传参,需要指定特定列的空值。以下值默认会被认定为空值

['-1.#IND', '1.#QNAN', '1.#IND', '-1.#QNAN', '#N/A N/A', '#N/A', 'N/A', 'n/a', 'NA', '#NA', 'NULL', 'null', 'NaN', '-NaN', 'nan', '-nan', '']

使用na_values时需要关注下面keep_default_na的配合使用和影响,keep_default_na是否包含默认的 NaN 值列表,默认为 True。

下面是一个示例:,空字符串和X作为Na值。

import pandas as pd
​
df = pd.read_csv('student_scores.csv', keep_default_na=True, na_values=['X', ' '])

相关文章:

  • 榕壹云无人共享系统:基于SpringBoot+MySQL+UniApp的物联网共享解决方案
  • 可以使用多种AI模型自动化制作web和手机应用软件的利器:bolt.diy
  • (十五)安卓开发中不同类型的view之间继承关系详解
  • 去重新闻数据中重复的正文内容(body 字段),并把唯一的新闻内容保存到一个新的 JSON 文件中
  • Ubuntu 软件卸载与清理终极指南
  • 在项目中,引入【全局异常处理器】
  • Spring IoC深度解析:掌控Bean存储艺术与分层架构的智慧​​
  • 通过代码获取接口文档工具
  • 智膳优选 | AI赋能的智慧食堂管理专家 —— 基于飞书多维表格和扣子(Coze)的智能解决方案
  • 医院PACS系统源码
  • 初级社会工作者考试精选题库
  • react+Tesseract.js实现前端拍照获取/选择文件等文字识别OCR
  • TPS入门DAY04 服务器篇
  • 文件内容课堂总结
  • 14 nginx 的 dns 缓存的流程
  • 为了避免unboundLocalError和为什么X的值一直不变呢?
  • Gartner发布软件供应链安全市场指南:软件供应链安全工具的8个强制功能、9个通用功能及全球29家供应商
  • 如何查看linux history命令文件
  • 【pm2】pm2启动无法访问接口 ,node命令启动却可以
  • 使用nhdeep档案目录打印工具生成干部人事档案目录打印文件
  • 网站怎么做能让人搜到/文章推广平台
  • 潍坊网站建设公司推荐/百度下载安装2021
  • 鹏鹞网站页面代码/seo公司 杭州
  • 自己服务器建网站/seo优化推广多少钱
  • 网站中的二级菜单怎么做23/网店推广培训
  • 深圳网站设计公司电/搜索引擎优化是指