AI大模型探索之路-实战篇10:数据预处理的艺术:构建Agent智能数据分析平台的基础

系列篇章💥

AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研
AI大模型探索之路-实战篇5:探索Open Interpreter开放代码解释器调研
AI大模型探索之路-实战篇6:掌握Function Calling的详细流程
AI大模型探索之路-实战篇7:Function Calling技术实战自动生成函数
AI大模型探索之路-实战篇8:多轮对话与Function Calling技术应用
AI大模型探索之路-实战篇9:探究Agent智能数据分析平台的架构与功能


目录

  • 系列篇章💥
  • 前言
  • 一、安装MySQL数据库
  • 二、数据集获取
  • 三、数据处理
    • 1、拆分数据集
    • 2、噪声数据填充
  • 四、生成文件
  • 五、业务数据入库
    • 1、建表
    • 2、加载业务数据
  • 结语


前言

在当今数据驱动的商业环境中,一个高效且智能的数据分析平台对于企业的成功至关重要。本系列文章已经介绍了Agent智能数据分析平台的基础架构和核心功能,本文将深入探讨平台的数据预处理步骤,这一步骤是实现高质量数据分析的关键。我们将重点讨论如何获取、处理并存储数据,以提升分析的效率和准确性。

一、安装MySQL数据库

步骤1:安装MySQL数据库

sudo apt-get update
sudo apt-get install mysql-server
sudo service mysql start

步骤2:创建数据库用户

CREATE USER 'iquery_agent'@'localhost' IDENTIFIED BY 'iquery_agent';

步骤3:给数据库用户赋权限

GRANT ALL PRIVILEGES ON *.* TO 'iquery_agent'@'localhost';
FLUSH PRIVILEGES;

二、数据集获取

在构建智能数据分析平台的过程中,获取并预处理高质量的数据集是确保后续分析有效性的关键步骤。为此,我们从Kaggle上选取了IBM提供的一个涉及客户流失率和服务信息的公开数据集,这份数据集不仅规模庞大,而且包含了丰富的客户行为数据和服务使用情况。
地址:https://www.kaggle.com/datasets/blastchar/telco-customer-churn
在这里插入图片描述

三、数据处理

1、拆分数据集

数据处理阶段是构建智能数据分析平台中至关重要的一环,它直接影响到最终分析结果的准确性和可靠性。在这一阶段,我们主要关注两个核心操作:拆分数据集和噪声数据填充。
1)查看数据集信息

import pandas as pd 
#加载数据集
dataset = pd.read_csv('源数据/WA_Fn-UseC_-Telco-Customer-Churn.csv')
pd.set_option('max_colwidth',200)
#查看前5条数据
dataset.head(5)

输出:
在这里插入图片描述

2)查看数据集字段信息

dataset.info()

输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7043 entries, 0 to 7042
Data columns (total 21 columns):#   Column            Non-Null Count  Dtype  
---  ------            --------------  -----  0   customerID        7043 non-null   object 1   gender            7043 non-null   object 2   SeniorCitizen     7043 non-null   int64  3   Partner           7043 non-null   object 4   Dependents        7043 non-null   object 5   tenure            7043 non-null   int64  6   PhoneService      7043 non-null   object 7   MultipleLines     7043 non-null   object 8   InternetService   7043 non-null   object 9   OnlineSecurity    7043 non-null   object 10  OnlineBackup      7043 non-null   object 11  DeviceProtection  7043 non-null   object 12  TechSupport       7043 non-null   object 13  StreamingTV       7043 non-null   object 14  StreamingMovies   7043 non-null   object 15  Contract          7043 non-null   object 16  PaperlessBilling  7043 non-null   object 17  PaymentMethod     7043 non-null   object 18  MonthlyCharges    7043 non-null   float6419  TotalCharges      7043 non-null   object 20  Churn             7043 non-null   object 
dtypes: float64(1), int64(2), object(18)
memory usage: 1.1+ MB

3)数据集拆分
将数据集拆分为训练集数据和测试集数据,以备后面做数据分析有用

## 分离训练集数据和测试集数据,以备后面做数据分析有用
from sklearn.model_selection import train_test_splittrain_data, test_data = train_test_split(dataset, test_size=0.20, random_state=42)train_data = train_data.reset_index(drop=True)
test_data = test_data.reset_index(drop=True)

4)查看训练数据集

train_data.head()

输出:
在这里插入图片描述

5)查看测试数据集

test_data.head()

在这里插入图片描述

6)训练数据提取拆分

# 1. User Demographics(用户特征)
user_demographics_train = train_data[['customerID', 'gender', 'SeniorCitizen', 'Partner', 'Dependents']]# 2. User Services(用户服务)
user_services_train = train_data[['customerID', 'PhoneService', 'MultipleLines', 'InternetService','OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport','StreamingTV', 'StreamingMovies']]# 3. User Payments(用户支付记录)
user_payments_train = train_data[['customerID', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'MonthlyCharges', 'TotalCharges']]# 4. User Churn(用户流失)
user_churn_train = train_data[['customerID', 'Churn']]

7)测试数据集提前拆分

# 1. User Demographics
user_demographics_test = test_data[['customerID', 'gender', 'SeniorCitizen', 'Partner', 'Dependents']]# 2. User Services
user_services_test = test_data[['customerID', 'PhoneService', 'MultipleLines', 'InternetService','OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport','StreamingTV', 'StreamingMovies']]# 3. User Payments
user_payments_test = test_data[['customerID', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'MonthlyCharges', 'TotalCharges']]# 4. User Churn
user_churn_test = test_data[['customerID', 'Churn']]

8)数据检查

user_demographics_train.head()

在这里插入图片描述

2、噪声数据填充

在现实中,获取的数据往往包含一定程度的噪声,这些噪声可能由于数据采集、记录过程中的错误或遗漏造成。为了确保分析结果的准确性,我们需要对这些噪声数据进行处理。处理的方式可以多样,包括但不限于填充缺失值、平滑异常值或者基于算法预测合理的数据点。在这一环节中,我们模拟了一些噪声数据的生成,并展示了如何通过技术手段处理这些数据,从而提升数据的整体质量。
处理步骤如下:

  1. 在 user_demographics 表中随机删除一些行,总共删除5%条数据;
  2. 在 user_services 表中添加一些不在其他表中的客户ID,总共添加100个新用户ID;
  3. 在 user_payments 表中随机添加一些缺失值,总共删除100个值;
  4. 为 user_churn 表添加一些新的客户ID,总共添加50个新用户,其中25个记录为流失用户,25个记录为未流失用户。
import numpy as np# Random seed for reproducibility
np.random.seed(42)# 1. Remove some rows from user_demographics
drop_indices = np.random.choice(user_demographics_train.index, size=int(0.05 * len(user_demographics_train)), replace=False)
user_demographics_train = user_demographics_train.drop(drop_indices)# 2. Add some new customer IDs to user_services
new_ids = ["NEW" + str(i) for i in range(100)]
new_data_train = pd.DataFrame({'customerID': new_ids})
user_services_train = pd.concat([user_services_train, new_data_train], ignore_index=True)# 3. Add missing values to user_payments
for _ in range(100):row_idx = np.random.randint(user_payments_train.shape[0])col_idx = np.random.randint(1, user_payments_train.shape[1])  # skipping customerID columnuser_payments_train.iat[row_idx, col_idx] = np.nan# 4. Add new customer IDs to user_churn
new_ids_churn_train = ["NEWCHURN" + str(i) for i in range(50)]
new_data_churn_train = pd.DataFrame({'customerID': new_ids_churn_train, 'Churn': ['Yes'] * 25 + ['No'] * 25})
user_churn_train = pd.concat([user_churn_train, new_data_churn_train], ignore_index=True)

数据查看

user_demographics_train

在这里插入图片描述
获取DataFrame的维度信息,返回一个元组,第一个元素表示行数,第二个元素表示列数

user_demographics_train.shape, user_services_train.shape, user_payments_train.shape, user_churn_train.shape

在这里插入图片描述

四、生成文件

经过预处理的数据需要被有效地存储和管理。为了实现这一点,我们使用Python来编写脚本,自动化地将清洗后的数据保存到CSV文件中。

import os
# 创建目标文件夹,如果它还不存在
if not os.path.exists('业务数据'):os.makedirs('业务数据')# 保存 DataFrame 为 CSV 文件
user_demographics_train.to_csv('业务数据/user_demographics_train.csv', index=False)
user_services_train.to_csv('业务数据/user_services_train.csv', index=False)
user_payments_train.to_csv('业务数据/user_payments_train.csv', index=False)
user_churn_train.to_csv('业务数据/user_churn_train.csv', index=False)user_demographics_test.to_csv('业务数据/user_demographics_test.csv', index=False)
user_services_test.to_csv('业务数据/user_services_test.csv', index=False)
user_payments_test.to_csv('业务数据/user_payments_test.csv', index=False)
user_churn_test.to_csv('业务数据/user_churn_test.csv', index=False)

五、业务数据入库

1、建表

create database iquery;
CREATE TABLE user_demographics (customerID VARCHAR(255) PRIMARY KEY,gender VARCHAR(255),SeniorCitizen INT,Partner VARCHAR(255),Dependents VARCHAR(255)   
);CREATE TABLE user_demographics_new (customerID VARCHAR(255) PRIMARY KEY,gender VARCHAR(255),SeniorCitizen INT,Partner VARCHAR(255),Dependents VARCHAR(255)   
);CREATE TABLE user_services (customerID VARCHAR(255) PRIMARY KEY,PhoneService VARCHAR(255),MultipleLines VARCHAR(255),InternetService VARCHAR(255),OnlineSecurity VARCHAR(255),OnlineBackup VARCHAR(255),DeviceProtection VARCHAR(255),TechSupport VARCHAR(255),StreamingTV VARCHAR(255),StreamingMovies VARCHAR(255) 
);CREATE TABLE user_services_new (customerID VARCHAR(255) PRIMARY KEY,PhoneService VARCHAR(255),MultipleLines VARCHAR(255),InternetService VARCHAR(255),OnlineSecurity VARCHAR(255),OnlineBackup VARCHAR(255),DeviceProtection VARCHAR(255),TechSupport VARCHAR(255),StreamingTV VARCHAR(255),StreamingMovies VARCHAR(255) 
);CREATE TABLE user_payments (customerID VARCHAR(255) PRIMARY KEY,Contract VARCHAR(255),PaperlessBilling VARCHAR(255),PaymentMethod VARCHAR(255),MonthlyCharges FLOAT,TotalCharges VARCHAR(255)
);CREATE TABLE user_payments_new (customerID VARCHAR(255) PRIMARY KEY,Contract VARCHAR(255),PaperlessBilling VARCHAR(255),PaymentMethod VARCHAR(255),MonthlyCharges FLOAT,TotalCharges VARCHAR(255)
);CREATE TABLE user_churn (customerID VARCHAR(255) PRIMARY KEY,Churn VARCHAR(255)
);CREATE TABLE user_churn_new (customerID VARCHAR(255) PRIMARY KEY,Churn VARCHAR(255)
);

2、加载业务数据

接下来,将这些CSV文件导入到之前建立的MySQL数据库表中。这一步骤是通过加载数据操作来实现的,确保了数据按照预期的结构被准确地存储和索引,便于后续的查询和分析。

## 往数据库里导入数据LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_demographics_train.csv'
INTO TABLE user_demographics
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_services_train.csv'
INTO TABLE user_services
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_payments_train.csv'
INTO TABLE user_payments
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_churn_train.csv'
INTO TABLE user_churn 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;## 添加测试表的数据
LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_demographics_test.csv'
INTO TABLE user_demographics_new
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_services_test.csv'
INTO TABLE user_services_new
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_payments_test.csv'
INTO TABLE user_payments_new
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;LOAD DATA LOCAL INFILE '/root/autodl-tmp/iquery项目/data/业务数据/user_churn_test.csv'
INTO TABLE user_churn_new
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

结语

通过本文的介绍和指导,我们已经能够构建出一个具备完整数据处理流程的Agent智能数据分析平台。从数据的预处理到存储管理,每一步都旨在提升数据的质量及分析的准确性。随着技术的不断进步,这个平台将在未来发挥更大的作用,帮助企业在数据波涛中稳扬帆行,捕捉每一个商机。我们期待与读者共同见证这个平台在未来数据分析和决策支持领域中的成长与突破。

在这里插入图片描述

🎯🔖更多专栏系列文章:AIGC-AI大模型探索之路

如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!

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

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

相关文章

redis常用数据结构及命令

Redis数据结构简介 Redis可以存储键与5种不同数据结构类型之间的映射&#xff0c;这五种数据结构分别为String(字符串)、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、和Zset&#xff08;有序集合&#xff09;。 …

电流继电器DL-13 柜内安装带板前接线附件 JOSEF约瑟

DL-10系列电流继电器板前接线为电磁式瞬动过电流继电器&#xff0c;它广泛用于电力系统二次回路继电保护装置线路中&#xff0c;作为过电流启动元件。 系列型号 DL-11电流继电器; DL-12电流继电器; DL-13电流继电器&#xff1b; 一、应用范围 DL-13/2电流继电器 板前接线为…

怎么藏族翻译中文在线翻译?更好地了解藏族文化

怎么藏族翻译中文在线翻译&#xff1f;着全球化的发展&#xff0c;语言交流的重要性日益凸显。藏族&#xff0c;作为中国的一个古老而神秘的民族&#xff0c;其语言对于很多人来说充满了神秘感。然而&#xff0c;在今天的数字化时代&#xff0c;我们有了更多的工具来打破语言壁…

mp4文件损坏怎么修复?三种修复办法分享!

对于我们平时使用到的MP4视频文件&#xff0c;有时候在播放时会遇到文件损坏&#xff0c;无法正常打开&#xff0c;针对这个问题&#xff0c;如何修复损坏的MP4视频文件&#xff1f; 首先&#xff0c;我们需要了解MP4文件损坏的可能原因。常见的原因包括&#xff1a;逻辑损坏、…

sprongboot+vue 游泳馆管理系统

游泳馆管理系统 spring bootvue 主要有游泳课程预约、网上购票、教练预约、游泳器材管理、会员管理等功能&#xff1b; 1、管理员 登录、修改密码 购票管理&#xff1a;查看订单、删除订单、修改订单 教练管理&#xff1a;教练信息查询、修改 课程信息&#xff1a;增删改查课程…

地图下钻,双击返回上一级

介绍&#xff1a; 看了好多地图下钻的案例&#xff0c;要么json文件不全胡&#xff0c;要么返回功能不全胡&#xff0c;有的返回是直接写死&#xff0c;返回到首页&#xff0c;我这个小案例是使用地理小工具的数据&#xff0c;本案例可以逐步一级一级的返回&#xff0c;地图的其…

【旧文更新】【优秀课设】基于FPGA的Verilog HDL自动售货机

【旧文更新】基于FPGA的Verilog HDL自动售货机 文章目录 关于旧文新发FPGACortex-M架构SysTick系统定时器阻塞和非阻塞延时 附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函…

Three.js 中的场景与相机基础

Three.js 中的场景与相机基础 一、场景&#xff08;Scene&#xff09; 在 Three.js 中&#xff0c;场景是所有 3D 对象存在和交互的容器。艾斯视觉作为行业ui设计与前端开发服务商很高兴能在这里与你共同探讨&#xff1a;它就像是一个虚拟的 3D 空间&#xff0c;我们可以在其中…

端午节趣味互动小游戏的作用是什么

端午节吃粽子&#xff0c;多数行业商家都可借势进行品牌营销&#xff0c;而一场营销效果的优劣&#xff0c;除了好方案外&#xff0c;还需要好的工具/渠道及运营等&#xff0c;围绕粽子元素的互动小游戏是营销互动的主要形式之一。 运用【雨科】平台拥有多款端午节粽子主题互动…

leetcode 1270 向公司CEO汇报工作的所有人(postgresql)

需求 员工表&#xff1a;Employees ---------------------- | Column Name | Type | ---------------------- | employee_id | int | | employee_name | varchar | | manager_id | int | ---------------------- employee_id 是这个表的主键。 这个表中每一行中&#xff0c;e…

用于脑肿瘤分割的跨模态深度特征学习| 文献速递-深度学习肿瘤自动分割

Title 题目 Cross-modality deep feature learning for brain tumor segmentation 用于脑肿瘤分割的跨模态深度特征学习 01 文献速递介绍 作为最致命的流行病&#xff0c;脑肿瘤的研究越来越受到关注。本文研究了一种基于深度学习的自动分割胶质瘤的方法&#xff0c;称为脑…

raid 磁盘阵列

raid 磁盘阵列&#xff1a; **条带化存储&#xff1a;**数据分散在多个物理磁盘上的存储方式。利用多个磁盘并行读取和写入。 条带化的存储性能和读写性能是最好的。 磁盘的组成方式不同&#xff0c;也就是不同的raid级别&#xff1a; **raid 0&#xff08;条带化存储&#x…

高级软件工程师带你解决MySQL死锁问题Deadlock found when trying to get lock实战案例全网唯一

高级软件工程师带你解决MySQL死锁问题Deadlock found when trying to get lock实战 前言 笔者我实际工作中&#xff0c;经常遇到mysql数据库死锁问题&#xff01;CSDN上面也有很多大神刨析解决方法&#xff01; 我在实际工作中的MySQL数据库架构很复杂&#xff0c;又涉及到主…

MT3045 松鼠接松果

思路&#xff1a; 求x的一个区间&#xff0c;使区间中的松果的最大y坐标和最小y坐标的差至少为D。若有多个区间&#xff0c;则取最小的那个。 即使用单调队列不断维护最大值和最小值。 首先L固定不动&#xff0c;R不断右移&#xff1a; 即若函数f(R)max[L,R]-min[L,R] >…

自建视频托管平台:MediaCMS

目录 1 MediaCMS简介1.1 介绍1.2 特性1.3 应用场景 2 安装配置2.1 安装1、安装2、汉化 2.2 一些常见配置 3 简单使用3.1 上传3.2 下载3.3 添加标题或者字幕3.4 通过Tag/Category实现视频/文件分类添加 Tag给任一资源分类 1 MediaCMS简介 1.1 介绍 MediaCMS是一个现代的&#…

Spring +SpringMVC+Mybatis项目详细构造

一&#xff0c;文档详解 1&#xff0c;web.xml配置 配置spring监听器&#xff1a; 指定spring配置文件的位置和名称&#xff0c;扫描会先扫描此文件&#xff0c;此文件中的扫描文档作为父类扫描&#xff0c;父类扫描不可访问子类扫描&#xff0c;子类扫描可访问父类扫描 &l…

LeetCode --- 399周赛

题目列表 3162. 优质数对的总数 I 3163. 压缩字符串 III 3164. 优质数对的总数 II 3165. 不包含相邻元素的子序列的最大和 一、优质数对的总数I 这里由于数据范围比较小&#xff0c;我们可以直接暴力枚举&#xff0c;代码如下 class Solution { public:int numberOfPairs…

5292A 物联网信号分析仪

5292A 物联网信号分析仪 —— 10MHz&#xff5e;6GHz —— 简述 5292A物联网信号分析仪是一款通用的矢量信号分析仪&#xff0c;频率范围覆盖 10MHz&#xff5e;6GHz&#xff0c;具有良好的频率、功率测量精度和稳定度&#xff1b;支持模拟与数字调制信号、全制式的通信标准…

【错误记录】HarmonyOS 运行报错 ( Failure[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL] )

文章目录 一、报错信息二、问题分析二、解决方案 一、报错信息 在 DevEco Studio 中 , 运行程序 , 编译时正常编译 , 但是在真机运行时 , 报如下错误 , 核心报错信息是 " Failure[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL] " ; 完整报错信息 : 05/29 10:58:55…

【机器学习300问】104、残差网络是怎么起作用的?

残差网络&#xff08;Residual Network&#xff0c;简称ResNet&#xff09;诞生是为了解决深度神经网络的训练困难性问题。深度神经网络在图像分类等任务上取得了重大突破&#xff0c;但随着网络层数的增加&#xff0c;训练变得更加困难。 一、神经网络深度过深会出现…