使用TensorFlow时需掌握的Pandas核心知识点

使用TensorFlow时需掌握的Pandas核心知识点

一、数据读取与写入

读取常见格式数据

方法pd.read_csv()pd.read_excel()pd.read_json()

import pandas as pd# 读取CSV文件
data = pd.read_csv("dataset.csv")# 读取Excel文件
excel_data = pd.read_excel("data.xlsx", sheet_name="Sheet1")

使用场景:加载结构化数据集(如CSV格式的房价数据、用户行为日志)。

数据保存

方法to_csv()to_excel()

# 保存处理后的数据到CSV
data.to_csv("processed_data.csv", index=False)

使用场景:存储预处理后的数据供后续训练使用。

二、数据清洗与预处理

处理缺失值

方法fillna()dropna()

# 用均值填充缺失值
data["age"].fillna(data["age"].mean(), inplace=True)# 删除包含缺失值的行
data.dropna(subset=["income"], inplace=True)

使用场景:处理传感器数据中的噪声或用户填写表单时的遗漏字段。

类型转换

方法astype()pd.to_numeric()

# 将字符串转换为浮点数
data["price"] = pd.to_numeric(data["price"], errors="coerce")# 转换为分类类型(减少内存占用)
data["category"] = data["category"].astype("category")

使用场景:统一数据类型以适配模型输入(如将文本标签转为数值)。

三、数据筛选与操作

条件筛选

方法:布尔索引、query()

# 筛选年龄大于30的记录
filtered_data = data[data["age"] > 30]# 使用query筛选多条件
filtered = data.query("age > 30 & income > 5000")

使用场景:提取特定用户群体的行为数据用于分类模型。

列操作与重命名

方法df[column]rename()

# 选择特定列
features = data[["age", "income", "education"]]# 重命名列
data.rename(columns={"old_name": "new_name"}, inplace=True)

使用场景:提取特征列(如房价预测中的面积、房龄)或统一字段命名。

四、数据合并与连接

合并数据集

方法pd.concat()pd.merge()

# 纵向合并(相同列结构)
combined = pd.concat([df1, df2], axis=0)# 横向连接(类似SQL JOIN)
merged = pd.merge(df1, df2, on="user_id", how="inner")

使用场景:整合多个来源的数据(如用户基本信息表 + 行为日志表)。

五、时间序列处理

日期解析与重采样

方法pd.to_datetime()resample()

# 将字符串转换为时间类型
data["timestamp"] = pd.to_datetime(data["timestamp"])# 按周聚合销售额
weekly_sales = data.resample("W", on="timestamp")["sales"].sum()

使用场景:分析时间序列数据(如股票价格预测、用户活跃度按天统计)。

六、分组与聚合

分组统计

方法groupby() + agg()

# 按城市分组计算平均收入和中位数
grouped = data.groupby("city")["income"].agg(["mean", "median"])# 多列聚合
result = data.groupby("department").agg({"sales": "sum", "profit": "mean"})

使用场景:生成特征统计值(如电商用户按地区的购买频次)。

七、特征工程

独热编码(One-Hot Encoding)

方法pd.get_dummies()

# 将分类变量转换为独热编码
encoded = pd.get_dummies(data["gender"], prefix="gender")

使用场景:将文本类别(如“男/女”)转换为模型可处理的数值特征。

分箱(Binning)

方法pd.cut()pd.qcut()

# 将年龄分为3个区间
data["age_bin"] = pd.cut(data["age"], bins=[0, 18, 60, 100], labels=["child", "adult", "senior"])

使用场景:将连续特征离散化(如年龄分段对购买力的影响)。

八、与TensorFlow的数据交互

转换为Tensor或Dataset

方法tf.convert_to_tensor()tf.data.Dataset.from_tensor_slices()

import tensorflow as tf# 将Pandas DataFrame转为Tensor
features_tensor = tf.convert_to_tensor(data[["age", "income"]].values, dtype=tf.float32)# 创建TensorFlow Dataset
dataset = tf.data.Dataset.from_tensor_slices((data["features"], data["label"]))

使用场景:将清洗后的数据输入神经网络进行训练。

九、性能优化

大数据分块处理

方法chunksize参数分块读取。

# 分块读取大型CSV文件
chunk_iter = pd.read_csv("large_data.csv", chunksize=10000)
for chunk in chunk_iter:process(chunk)  # 逐块处理

使用场景:处理内存不足的大型数据集(如千万级用户日志)。

十、数据探索与可视化

快速统计与绘图

方法describe()plot()

# 查看数值列统计信息
print(data.describe())# 绘制特征分布直方图
data["age"].plot(kind="hist")

使用场景:分析特征分布(如收入是否偏态)或异常值检测。

总结

掌握以上Pandas知识点后,可以高效完成以下TensorFlow任务:

  • 数据预处理:清洗、特征工程、格式转换。
  • 数据整合:合并多源数据、时间序列对齐。
  • 模型输入:将结构化数据转换为Tensor或tf.data.Dataset

示例完整流程

# 1. 读取数据
data = pd.read_csv("sales_records.csv")# 2. 处理缺失值
data["price"].fillna(data["price"].median(), inplace=True)# 3. 特征工程:独热编码
data = pd.get_dummies(data, columns=["category"])# 4. 转换为TensorFlow Dataset
dataset = tf.data.Dataset.from_tensor_slices((data[["price", "quantity", "category_A", "category_B"]].values.astype(np.float32),data["profit"].values.astype(np.float32)
))# 5. 构建并训练模型
model = tf.keras.Sequential([...])
model.compile(optimizer="adam", loss="mse")
model.fit(dataset.batch(32), epochs=10)

Pandas与TensorFlow结合使用的典型场景及实例

一、时间序列预测(医疗/金融)

场景:将Pandas处理的时间序列数据输入TensorFlow的RNN/LSTM模型进行预测。

实例

# 读取时间序列数据(如心电图记录)
df = pd.read_csv("ecg_data.csv")
df["timestamp"] = pd.to_datetime(df["timestamp"])  # 转换为时间戳# 构建滑动窗口序列
window_size = 30
sequences = [df["value"].values[i:i+window_size] for i in range(len(df)-window_size)]# 转换为TensorFlow Dataset
dataset = tf.data.Dataset.from_tensor_slices((sequences, labels)).batch(32)# 训练LSTM模型
model = tf.keras.Sequential([tf.keras.layers.LSTM(64, input_shape=(window_size, 1)),tf.keras.layers.Dense(1, activation="sigmoid")
])
model.fit(dataset, epochs=10)

二、图像分类(医学影像)

场景:用Pandas管理图像路径与标签,结合TensorFlow的ImageDataGenerator动态加载数据。

实例

# 创建图像路径与标签的DataFrame
data = pd.DataFrame({"filename": ["image1.jpg", "image2.jpg"],"label": [0, 1]
})# 生成增强后的图像流
datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
generator = datagen.flow_from_dataframe(dataframe=data,x_col="filename",y_col="label",target_size=(224, 224),batch_size=32
)# 训练ResNet模型
base_model = tf.keras.applications.ResNet50(weights="imagenet", include_top=False)
model = tf.keras.Sequential([base_model, tf.keras.layers.GlobalAveragePooling2D(), tf.keras.layers.Dense(1)])
model.compile(optimizer="adam", loss="binary_crossentropy")
model.fit(generator, epochs=10)

三、动态特征生成(推荐系统)

场景:用Pandas实时计算用户行为统计特征,输入TensorFlow模型更新推荐结果。

实例

# 实时聚合用户点击行为
user_logs = pd.read_parquet("user_behavior.parquet")
user_stats = user_logs.groupby("user_id").agg({"click_count": "sum","last_active": "max"
}).reset_index()# 合并用户画像特征
user_profile = pd.read_csv("user_profile.csv")
merged = pd.merge(user_stats, user_profile, on="user_id", how="left")# 转换为Tensor并预测
features = merged[["click_count", "age", "gender"]].values.astype(np.float32)
predictions = model.predict(features)

四、大规模数据分块处理(工业级训练)

场景:用Pandas分块读取超大型CSV文件,避免内存溢出。

实例

# 分块读取并预处理
chunk_iter = pd.read_csv("terabyte_logs.csv", chunksize=1e6)
for chunk in chunk_iter:chunk = chunk[chunk["error_code"] == 0]  # 过滤无效记录# 转换为TFRecord格式存储tf.data.Dataset.from_tensor_slices(chunk.to_dict("list")).save(f"processed/{chunk_id}.tfrecord")# 加载TFRecord数据集训练模型
dataset = tf.data.Dataset.list_files("processed/*.tfrecord").interleave(tf.data.TFRecordDataset)

五、模型结果分析与可视化

场景:用Pandas统计模型预测结果,生成混淆矩阵与分类报告。

实例

# 收集测试集预测结果
test_data = pd.read_csv("test_data.csv")
predictions = model.predict(test_data[features].values)
test_data["predicted_label"] = (predictions > 0.5).astype(int)# 计算混淆矩阵
confusion_matrix = pd.crosstab(test_data["true_label"], test_data["predicted_label"], rownames=["Actual"], colnames=["Predicted"]
)# 输出分类报告
from sklearn.metrics import classification_report
print(classification_report(test_data["true_label"], test_data["predicted_label"]))

六、特征分箱与嵌入(广告CTR预估)

场景:用Pandas对连续特征分箱后,通过TensorFlow的嵌入层处理。

实例

# 将年龄分箱为离散类别
df["age_bin"] = pd.cut(df["age"], bins=[0, 18, 35, 60], labels=["young", "adult", "senior"])# 构建分箱特征的嵌入表示
inputs = {"age_bin": tf.keras.Input(shape=(1,), dtype=tf.string),"income": tf.keras.Input(shape=(1,), dtype=tf.float32)
}
age_embedding = tf.keras.layers.Embedding(input_dim=3, output_dim=2)(inputs["age_bin"])
concatenated = tf.keras.layers.Concatenate()([age_embedding, inputs["income"]])

总结

以上场景覆盖了从数据预处理、动态特征工程到模型训练与监控的全链路,核心优势在于:

  • Pandas:灵活处理结构化数据(如时序聚合、特征分箱、多表关联)。
  • TensorFlow:高效执行数值计算(如大规模训练、嵌入学习)。
  • 两者结合可显著提升复杂业务场景(如医疗影像分析、实时推荐)的开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34708.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络(CNN)之 EfficientNet

在深度学习领域,模型的计算效率与性能之间的平衡一直是一个核心挑战。随着卷积神经网络(CNN)在图像分类、目标检测等任务中取得显著成果,模型的复杂度和计算需求也急剧增加。2019年,Google Research 提出的 EfficientN…

leetcode0031 下一个排列-medium

1 题目: 下一个排列 官方标定难度:中等 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一…

Suno的对手Luno:AI音乐开发「上传参考音频 - 方式二:通过URL的方式」 —— 「Luno Api系列|AI音乐API」第12篇

导读 今天来看下Luno Api的上传参考音频 - 方式一:通过二进制流的方式。 参考文件,主要是用于在创作的过程中,希望AI参考这个音乐的曲风和声音来进行创作, 这一节看看如何直接使用url的方式进行实现。 申请和使用 「已经有API…

【开源+代码解读】Search-R1:基于强化学习的检索增强大语言模型框架3小时即可打造个人AI-search

大语言模型(LLMs)在处理复杂推理和实时信息检索时面临两大挑战:知识局限性(无法获取最新外部知识)和检索灵活性不足(传统方法依赖固定检索流程)。现有方法如检索增强生成(RAG)和工具调用(Tool-Use)存在以下问题: RAG:单轮检索导致上下文不足,无法适应多轮交互场景…

Blender-MCP服务源码2-依赖分析

Blender-MCP服务源码2-依赖分析 有个大佬做了一个Blender-MCP源码,第一次提交代码是【2025年3月7号】今天是【2025年月15日】也就是刚过去一周的时间,所以想从0开始学习这个代码,了解一下大佬们的开发思路 1-核心知识点 from mcp.server.fas…

【孟德尔随机化】Leave-one-out analysis的异常点,判断

下面Leave-one-out analysis的结果,第一条线代表去掉rs174564的结果,一些文献把这种情况判断为异常点/离群点,我们接下来看看其他结果 散点图的结果,最旁边的就是rs174564,这个SNP的点 在看下RadialMR的结果&#xff0…

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…

kubernetes|云原生|部署单master的kubernetes 1.25.5版本集群完全记录(使用contained 运行时)

一、 部署目标: kubernetes版本1.19,1.23的前后差异还是比较巨大的,到1.25版本,为了追求高性能,自然还是需要使用containerd,本文将主要讲述在centos7虚拟机下部署kubernetes 1.25.5集群,使用…

DeepSeek+Dify本地部署私有化知识库

1.Windows安装docker Windows安装Docker-CSDN博客 2.安装olloma https://ollama.com/ 安装完成,可以在桌面右下角看到olloma图标 3.安装deepseekR1模型 ollama官网(deepseek-r1),找到deepseek模型 选择合适大小的模型&#xff…

[Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)

一、前言 关于Ubuntu更换docker镜像源,网上有很多的教程,但在实操中发现,更换的源无法生效——原因是我的docker是在系统安装时,选择附加安装的package的方式安装的。 现将处理过程记录如下。 二、获取镜像源 在网上随便找个几…

NHANES指标推荐:BRI!

文章题目:Association of body roundness index with cardiovascular disease in patients with cardiometabolic syndrome: a cross-sectional study based on NHANES 2009-2018 DOI:10.3389/fendo.2025.1524352 中文标题:心脏代谢综合征患者…

3.水中看月

前言 这篇文章讲解套接字分配IP地址和端口号。这部分内容也相对有些枯燥,但并不难,而 且是学习后续那些有趣内容必备的基础知识(计算机网络基础)。 一、分配给套接字的IP地址与端口号 IP是InternetProtocol(网络协议…

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器

Linux驱动开发-①pinctrl 和 gpio 子系统②并发和竞争③内核定时器 一,pinctrl 和 gpio 子系统1.pinctrl子系统2.GPIO子系统 二,并发和竞争1.原子操作2.自旋锁3.信号量4.互斥体 三,按键实验四,内核定时器1.关于定时器的有关概念1.…

奇安信二面

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Python库安装报错解决思路以及机器学习环境配置详细方案

文章目录 概要第三方库gdalpymoltalibmahotasgraphviznltk-datalazypredictscikit-surprisenb_extensionspyqt5-toolsspacy、en_core_web_sm 机器学习GPU-torch安装torch_geometric安装ubuntu安装显卡驱动dlib安装torch-cluster、torch-scatter、torch-sparse和torch-geometric…

Power Apps 技术分享:连接SharePoint列表数据源

前言 在使用Power Apps的时候,使用列表作为数据源是非常方便和经济的,列表创建简单,SharePoint的存储也不像Dataverse需要按照容量付费。 正文 1.我们先在SharePoint中建一个列表,添加一些测试数据,如下图:…

【Linux】learning notes(4)cat、more、less、head、tail、vi、vim

文章目录 catmore 查看整个文件less 查看整个文件head 查看部分文件tail 查看部分文件vim / vi cat cat 命令在 Linux 和 Unix 系统中非常常用,它用于连接文件并打印到标准输出设备(通常是屏幕)。虽然 cat 的基本用法很简单,但它…

C++11函数包装器

目录 std::function 注意事项 包装静态成员函数 包装非静态成员函数 std::bind 用法 应用场景 std::function function是C11引入的类,可以用任何可调用对象作为参数,构造出一个新对象。 可调用对象有函数指针,仿函数,lamb…

maven的安装配置

目录 一、官网下载压缩包 二、配置环境变量 设置 MAVEN_HOME 添加 MAVEN_HOME\bin 到 PATH 三、配置本机仓库和远程仓库 四、配置idea 一、官网下载压缩包 Download Apache Maven – Maven 如上图。选择这个压缩包 选择好文件,下载完后,配置环境变…

分布式事务

1 事务 众所周知,事务具有ACID四大特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency)&a…