python使用TensorFlow读取和批处理CSV文件

 更新时间:2025年03月10日 10:44:18   作者:潜意识Java  
本文旨在给大家使用 TensorFlow 库读取 CSV 文件,并将其数据以批次的形式进行处理和展示,通过该实验,我们希望掌握 TensorFlow 中 tf.data.TextLineDataset 的使用方法,以及如何解析 CSV 数据并进行批量处理,需要的朋友可以参考下

一、实验目的

本次实验旨在使用 TensorFlow 库读取 CSV 文件,并将其数据以批次的形式进行处理和展示。通过该实验,我们希望掌握 TensorFlow 中 tf.data.TextLineDataset 的使用方法,以及如何解析 CSV 数据并进行批量处理。

二、实验环境

  • 编程语言:Python
  • 主要库:TensorFlow、os
  • 操作系统:Windows
  • 实验数据:位于 C:\Users\30597\Desktop\sye\people.csv 的 CSV 文件,包含 Name、Age 和 Occupation 三列数据。

三、实验步骤

1. 导入必要的库

import tensorflow as tf
import os

导入 tensorflow 库用于数据处理,os 库用于文件路径验证。

2. 定义 CSV 读取函数

def csv_reader(file_path, batch_size=2):
    # 1. 创建Dataset并跳过表头
    dataset = tf.data.TextLineDataset(file_path).skip(1)
 
    # 2. 定义CSV解析函数
    def parse_line(line):
        record_defaults = [
            tf.constant(["Unknown"], tf.string),  # Name列
            tf.constant([0], tf.int32),  # Age列
            tf.constant(["Unknown"], tf.string)  # Occupation列
        ]
        fields = tf.io.decode_csv(line, record_defaults)
        return fields
 
    # 3. 应用解析和批处理
    dataset = dataset.map(parse_line)
    dataset = dataset.batch(batch_size, drop_remainder=False)
    return dataset
  • 创建 Dataset 并跳过表头:使用 tf.data.TextLineDataset 读取 CSV 文件的每一行,并通过 skip(1) 跳过表头。
  • 定义 CSV 解析函数:parse_line 函数使用 tf.io.decode_csv 解析每一行数据,同时指定每列的默认值。
  • 应用解析和批处理:使用 map 方法将解析函数应用到每个数据行,再使用 batch 方法将数据分成指定大小的批次。

3. 主程序逻辑

if __name__ == "__main__":
    # 指定具体文件路径
    csv_path = r"C:\Users\30597\Desktop\sye\people.csv"
 
    # 验证文件存在性
    if not os.path.exists(csv_path):
        raise FileNotFoundError(f"CSV文件未找到:{csv_path}")
 
    # 创建数据集
    dataset = csv_reader(csv_path, batch_size=2)
 
    # 迭代数据批次
    for batch_num, (names, ages, occupations) in enumerate(dataset):
        print(f"\n批次 {batch_num + 1}:")
 
        # 将字节字符串解码为普通字符串
        names_str = [name.decode('utf-8') for name in names.numpy()]
        occupations_str = [occ.decode('utf-8') for occ in occupations.numpy()]
 
        print("姓名:", names_str)
        print("年龄:", ages.numpy().tolist())
        print("职业:", occupations_str)
  • 指定文件路径并验证存在性:使用 os.path.exists 函数检查 CSV 文件是否存在,若不存在则抛出 FileNotFoundError 异常。
  • 创建数据集:调用 csv_reader 函数创建数据集。
  • 迭代数据批次:遍历数据集的每个批次,将字节字符串解码为普通字符串,并打印每个批次的姓名、年龄和职业信息。

四、实验结果

实验成功读取了指定的 CSV 文件,并将数据按批次处理和展示。每个批次包含两条记录,分别显示了姓名、年龄和职业信息。若 CSV 文件中存在缺失值,将使用默认值进行填充。

五、实验总结与反思

优点

  • 使用 TensorFlow 的 tf.data 模块:该模块提供了高效的数据处理和迭代功能,能够方便地处理大规模数据集。
  • 数据解析和批处理:通过定义解析函数和使用 map、batch 方法,实现了数据的自动解析和批量处理,提高了代码的可读性和可维护性。
  • 文件路径验证:在读取文件前进行路径验证,避免了因文件不存在而导致的运行时错误。

不足与改进方向

  • 错误处理:当前代码仅处理了文件不存在的情况,对于 CSV 文件格式错误、数据类型不匹配等异常情况未进行处理。可以添加更多的异常处理逻辑,提高代码的健壮性。
  • 代码可扩展性:代码中硬编码了 CSV 文件的列数和默认值,若 CSV 文件的结构发生变化,需要手动修改代码。可以考虑将列信息和默认值作为参数传递给 csv_reader 函数,提高代码的可扩展性。
  • 性能优化:对于大规模数据集,当前的批处理方式可能会导致内存占用过高。可以考虑使用 prefetch 方法进行数据预取,提高数据处理的性能。

总体而言,本实验通过使用 TensorFlow 成功实现了 CSV 文件的读取和批处理,为后续的数据处理和分析奠定了基础。

以上就是python使用TensorFlow读取和批处理CSV文件的详细内容,更多关于python TensorFlow读取CSV的资料请关注脚本之家其它相关文章!

相关文章

  • pymongo如何通过oplog获取数据(mongodb)

    pymongo如何通过oplog获取数据(mongodb)

    使用MongoDB的oplog(操作日志)进行数据同步是高级的用法,主要用于复制和故障恢复,这篇文章主要介绍了pymongo通过oplog获取数据(mongodb),需要的朋友可以参考下
    2023-09-09
  • 一文详解Python的pyc文件

    一文详解Python的pyc文件

    Python 程序在执行过程中,会产生一些中间文件,其中最常见的就是 pyc 文件,pyc 文件是 Python 的二进制字节码文件,本文将通过简洁的语言、实际的代码和案例,通俗易懂地解释 pyc 文件的相关知识,感兴趣的小伙伴跟着小编一起来看看吧
    2024-12-12
  • 淘宝秒杀python脚本 扫码登录版

    淘宝秒杀python脚本 扫码登录版

    这篇文章主要为大家详细介绍了淘宝秒杀python脚本,扫码登录版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Python自定义函数计算给定日期是该年第几天的方法示例

    Python自定义函数计算给定日期是该年第几天的方法示例

    这篇文章主要介绍了Python自定义函数计算给定日期是该年第几天的方法,结合具体实例形式分析了Python日期时间计算相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • pycharm不在cmd中运行却在python控制台运行问题解决

    pycharm不在cmd中运行却在python控制台运行问题解决

    这篇文章主要介绍了pycharm不在cmd中运行却在python控制台运行问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 解决Python串口接收无标识不定长数据

    解决Python串口接收无标识不定长数据

    这篇文章主要介绍了解决Python串口接收无标识不定长数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 如何利用Python解析超大的json数据(GB级别)

    如何利用Python解析超大的json数据(GB级别)

    果不想从头开始创建数据格式来存储数据,JSON是一个不错的选择,下面这篇文章主要给大家介绍了关于如何利用Python解析超大的json数据(GB级别)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python关键字及可变参数*args,**kw原理解析

    Python关键字及可变参数*args,**kw原理解析

    这篇文章主要介绍了Python关键字及可变参数*args,**kw原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • numpy矩阵数值太多不能全部显示的解决

    numpy矩阵数值太多不能全部显示的解决

    这篇文章主要介绍了numpy矩阵数值太多不能全部显示的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 基于opencv和pillow实现人脸识别系统(附demo)

    基于opencv和pillow实现人脸识别系统(附demo)

    人脸识别就是一个程序能识别给定图像或视频中的人脸,本文主要介绍了opencv和pillow实现人脸识别系统,本文不涉及分类器、训练识别器等算法原理,感兴趣的可以了解一下
    2021-11-11

最新评论