数据分析练习——学习一般分析步骤
目录
一、准备工作
二、导入库和数据
1、导入必要的库:
2、模拟数据
三、数据分析过程
1、读取数据:
2、数据概览和描述性统计:
2.1、查看数据概览:
2.2、查看描述性统计:
3、数据清洗:
3.1、处理缺失值:
3.2、处理异常值:
3.3、处理重复数据:
4、EDA(探索性数据分析):
4.1、相关性分析:查看数值型变量之间的相关性
4.2、分类数据分析:
4.3、数据分布分析:
4.4、双变量分析:分析两个变量之间的关系。例如,使用散点图查看 units_sold 和 price_per_unit 之间的关系
4.5、时间序列分析:如果数据包含时间信息,可以分析各个变量随时间的变化趋势。在我们的示例中,首先需要将 order_date 转换为 datetime 类型
4.6、多变量分析:分析多个变量之间的关系。例如,分析不同 product_category 的 units_sold 和 price_per_unit 之间的关系
4.7、箱线图分析
5、数据建模与分析
6、数据可视化
ps:据建模与分析、数据可视化显示结果的解释
7、结果解释和报告
四、学习过程中一些问题的回答
1、通过训练模型并对测试数据进行预测,预测了什么,为什么要预测?
2、”评估这种关系的存在程度以及模型的预测能力“,如何评估以及为什么要评估?
3、为什么要找与项目需求和数据最适合的模型?
在这个实践项目中,我们将使用Python和一些常用的数据分析库(如Pandas、Matplotlib和Seaborn)进行数据分析。假设我们的目标是分析一个虚构的电商平台的销售数据,以获取关于产品销售、客户行为等方面的见解。
一、准备工作
首先,确保已经安装了Python及相关的数据分析库。在你的Python环境中安装以下库(如果尚未安装):
pip install pandas
pip install matplotlib
pip install seaborn
pip install scikit-learn
二、导入库和数据
1、导入必要的库:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
2、模拟数据
将以下CSV格式数据复制到名为"sales_data.csv"
的文件中
order_id,product_id,product_category,user_id,order_date,units_sold,price_per_unit,sales_amount
10001,2001,A,3001,2023-01-02,5,100,500
10002,2002,B,3002,2023-01-03,2,150,300
10003,2003,C,3001,2023-01-04,7,200,1400
10004,2004,D,3003,2023-01-05,4,50,200
10005,2005,A,3004,2023-01-06,3,100,300
10006,2001,A,3005,2023-01-07,6,100,600
10007,2002,B,3006,2023-01-08,3,150,450
10008,2003,C,3001,2023-01-09,8,200,1600
10009,2004,D,3007,2023-01-10,2,50,100
10010,2005,A,3008,2023-01-11,4,100,400
10011,2001,A,3009,2023-01-12,5,100,500
10012,2002,B,3010,2023-01-13,1,150,150
10013,,C,3011,2023-01-14,3,200,600
10014,2004,D,3012,2023-01-15,6,50,300
10015,2005,A,3013,2023-01-16,4,100,400
10016,2001,A,3014,2023-01-17,7,100,700
10017,2002,B,3015,2023-01-18,1,150,150
10018,2003,C,3016,2023-01-19,5,200,1000
10019,2004,D,3017,2023-01-20,3,50,150
10020,2005,A,3018,2023-01-21,6,100,600
10021,2001,A,3019,2023-01-22,4,100,400
10022,2002,B,3020,2023-01-23,3,150,450
10023,2003,C,3021,2023-01-24,2,200,400
10024,2004,D,3022,2023-01-25,6,50,300
10025,2005,A,3023,2023-01-26,4,100,400
10026,2001,A,3024,2023-01-27,5,100,500
10027,2002,B,3025,2023-01-28,3,150,450
10028,2003,C,3026,2023-01-29,15,200,3000
10029,2004,D,3027,2023-01-30,2,5000,100
三、数据分析过程
1、读取数据:
data = pd.read_csv('sales_data.csv')
2、数据概览和描述性统计:
2.1、查看数据概览:
print(data.head())
print(data.info())
2.2、查看描述性统计:
print(data.describe())
3、数据清洗:
3.1、处理缺失值:
# 查看缺失值
print(data.isnull().sum())# 用众数填充 product_category 缺失值
data['product_category'].fillna(data['product_category'].mode()[0], inplace=True)# 删除 product_id 为空的行
data.dropna(subset=['product_id'], inplace=True)
3.2、处理异常值:
# 分析 price_per_unit 异常值
sns.boxplot(x=data['price_per_unit'])
plt.show()# 用四分位法去除异常值
Q1 = data['price_per_unit'].quantile(0.25)
Q3 = data['price_per_unit'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQRdata = data[(data['price_per_unit'] > lower_bound) & (data['price_per_unit'] < upper_bound)]
3.3、处理重复数据:
# 检查重复行
print(data.duplicated().sum())# 删除重复行
data.drop_duplicates(inplace=True)
4、EDA(探索性数据分析):
4.1、相关性分析:查看数值型变量之间的相关性
corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.show()
4.2、分类数据分析:
# 分析 product_category 的销售数量
category_units_sold = data.groupby('product_category')['units_sold'].sum()
category_units_sold.plot(kind='bar')
plt.show()# 分析 product_category 的销售金额
category_sales_amount = data.groupby('product_category')['sales_amount'].sum()
category_sales_amount.plot(kind='bar')
plt.show()
4.3、数据分布分析:
# 分析 units_sold 数据分布
sns.histplot(data['units_sold'])
plt.show()# 分析 price_per_unit 数据分布
sns.histplot(data['price_per_unit'])
plt.show()# 分析 sales_amount 数据分布
sns.histplot(data['sales_amount'])
plt.show()
4.4、双变量分析:分析两个变量之间的关系。例如,使用散点图查看 units_sold 和 price_per_unit 之间的关系
sns.scatterplot(x='units_sold', y='price_per_unit', data=data)
plt.show()
4.5、时间序列分析:如果数据包含时间信息,可以分析各个变量随时间的变化趋势。在我们的示例中,首先需要将 order_date 转换为 datetime 类型
data['order_date'] = pd.to_datetime(data['order_date'])# 按日期对销售额进行分组并求和
daily_sales = data.groupby('order_date')['sales_amount'].sum()# 绘制销售额随时间变化的折线图
daily_sales.plot(kind='line')
plt.show()
4.6、多变量分析:分析多个变量之间的关系。例如,分析不同 product_category 的 units_sold 和 price_per_unit 之间的关系
sns.scatterplot(x='units_sold', y='price_per_unit', hue='product_category', data=data)
plt.show()
4.7、箱线图分析
# 分析 units_sold 箱线图
sns.boxplot(x=data['units_sold'])
plt.show()# 分析 price_per_unit 箱线图
sns.boxplot(x=data['price_per_unit'])
plt.show()# 分析 sales_amount 箱线图
sns.boxplot(x=data['sales_amount'])
plt.show()
5、数据建模与分析
还需要继续导入对应库:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
以下示例将以一个简单的线性回归模型为例,对销售数据进行分析。
首先,我们假设 units_sold
受 price_per_unit
的影响。我们将使用 scikit-learn 库中的线性回归模型进行建模。
# 建立线性回归模型
X = data[['price_per_unit']]
y = data['units_sold']# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练模型
reg = LinearRegression()
reg.fit(X_train, y_train)# 预测
y_pred = reg.predict(X_test)# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("Mean Squared Error: ", mse)
print("R2 Score: ", r2)
6、数据可视化
# 数据可视化
plt.scatter(X_test, y_test, color='blue', label='Actual')
plt.scatter(X_test, y_pred, color='red', label='Predicted')
plt.xlabel('Price Per Unit')
plt.ylabel('Units Sold')
plt.legend()
plt.show()
这个代码段包括了数据建模与分析、数据可视化的过程。我们首先使用 scikit-learn 库中的 train_test_split
函数将数据集划分为训练集和测试集。接着,我们使用 LinearRegression
类创建一个线性回归模型,使用训练集对模型进行训练。然后,我们使用训练好的模型对测试集进行预测,并计算均方误差 (MSE) 和决定系数 (R2) 来评估模型的性能。最后,我们将实际值与预测值进行可视化,以直观地观察模型的表现。
ps:据建模与分析、数据可视化显示结果的解释
在我们的示例中,我们通过线性回归模型探讨了 price_per_unit
(商品单价)与 units_sold
(销售数量)之间的关系。通过训练线性回归模型并对测试数据进行预测,我们可以评估这种关系的存在程度以及模型的预测能力。
在数据可视化部分,我们展示了一个散点图,其中蓝色点代表实际的数据点(测试集),红色点代表预测的数据点。这个图像可以帮助我们直观地了解模型的预测性能。横坐标表示商品单价,纵坐标表示销售数量。
如果红色预测点与蓝色实际点之间的距离较小,说明模型的预测性能较好,反之则表示预测性能较差。此外,我们还可以通过计算均方误差 (MSE) 和决定系数 (R2) 来量化模型的性能。
- 均方误差 (MSE):衡量预测值与实际值之间差异的平均平方和。MSE 越小,表示模型预测的误差越小,性能越好。
- 决定系数 (R2):衡量模型对数据的拟合程度。R2 的取值范围为 0 到 1,值越接近 1,表示模型拟合得越好,预测性能越好。
通过这些指标和可视化结果,您可以对线性回归模型的性能进行评估,并根据需要调整模型或尝试其他建模方法。在实际工作中,您可能需要尝试多种模型,并根据项目需求和数据特点选择最合适的模型。
7、结果解释和报告
在结果解释和报告阶段,您需要根据分析结果撰写一份报告,报告中应包括以下内容:
- 项目背景和目的:说明分析的背景、目的和应用场景。
- 数据来源和描述:简要介绍数据的来源、类型、结构和特点。
- 数据清洗和预处理:描述数据清洗和预处理过程中采取的方法和步骤,以及数据质量的改进情况。
- EDA 过程和结果:详细介绍 EDA 过程中使用的方法和技术
四、学习过程中一些问题的回答
1、通过训练模型并对测试数据进行预测,预测了什么,为什么要预测?
答:这次实例中通过训练线性回归模型并对测试数据进行预测,预测的是输出变量(也称为响应变量或因变量)的值,这些值可以是数字、类别或一些其他形式。预测的目的是根据已知的输入变量(也称为解释变量或自变量)的值来预测输出变量的值。例如,如果我们想预测房屋的销售价格,我们可以使用线性回归模型,其中输入变量可能包括房屋的大小、位置、年龄和卫生间数量等,输出变量是房屋的销售价格。这种预测有助于我们了解数据之间的关系,并提供有用的信息,例如房屋价格随着卫生间数量增加而增加等。
2、”评估这种关系的存在程度以及模型的预测能力“,如何评估以及为什么要评估?
答:要评估线性回归模型中变量之间的关系强度和预测能力,可以使用各种统计指标,例如R方值,均方误差(MSE),平均绝对误差(MAE)等。R方值衡量模型对数据的拟合程度,值介于0到1之间,越接近1表示模型拟合得越好。MSE和MAE衡量模型的预测误差,值越小表示模型预测得越准确。评估模型的目的是确定模型是否适合数据,以及它是否可以可靠地预测未来数据的值。
3、为什么要找与项目需求和数据最适合的模型?
答:选择最合适的模型是为了确保预测的准确性和可靠性。不同的模型适用于不同的数据类型和问题类型。例如,如果我们的数据包含二元分类问题(例如,区分垃圾邮件和正常邮件),则逻辑回归模型可能比线性回归模型更适合。在选择模型时,需要考虑数据的特点,例如数据的分布、是否存在非线性关系等。选择正确的模型可以帮助我们更好地理解数据,并提高预测的准确性和可靠性。
-----------------------------------------------------------------我是分割线--------------------------------------------------------------
看完了觉得不错就点个赞或者评论下吧,感谢!!!
如果本文哪里有误随时可以提出了,收到会尽快更正的
相关文章:
数据分析练习——学习一般分析步骤
目录 一、准备工作 二、导入库和数据 1、导入必要的库: 2、模拟数据 三、数据分析过程 1、读取数据: 2、数据概览和描述性统计: 2.1、查看数据概览: 2.2、查看描述性统计: 3、数据清洗: 3.1、处…...
Linux环境下挂载exfat格式U盘,以及安装exfat文件系统
目录Linux一般支持的文件系统有:1.安装exfat软件安装工具环境以及exfat件依赖的系统软件下载exfat源码包并安装2.挂载exfat格式U盘查看U盘在那个目录执行挂载命令Linux一般支持的文件系统有: 文件系统名称详情ext专门为Linux核心做的第一个文件系统&…...

网格布局grid
grid网格定义 css网格是一个用于web的二维(行和列的组合)布局,利用网格,你可以把内容按照行和列的格式进行排版,另外,可以轻松的实现复杂布局。 1.定义网格和fr单位 1.1定义网格 在父元素加上ÿ…...

《扬帆优配》环境更优!这类资金,迎利好!
近来,第一批主板注册制新股连续发动申购,网下询价中,组织出资者频繁现身打新商场,公募基金、社保基金、养老金、保险资金等中长时间资金,成为全面注册制下新股发行商场的重要参加者。 多位业内人士对此表明,…...

RK3568平台开发系列讲解(内存篇)内存管理的相关结构体
🚀返回专栏总目录 文章目录 一、硬件架构二、Linux 物理内存管理结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 📢应用程序想要使用内存,必须得先找操作系统申请,我们有必要先了解一下 Linux 内核怎么来管理内存,这样再去分析应用程序的内存管理细节的时候,…...
如何理解二叉树与递归的关系
二叉树一般都是和递归有联系的,二叉树的遍历包括了前序,后序,中序,大部分题目只要考虑清楚应该用那种遍历顺序,然后特殊情况的条件,题目就会迎刃而解。 1. 先来说说二叉树的遍历方式 其实二叉树的遍历很简…...

CSS 高级技巧
目录 1.精灵图 1.1为什么需要精灵图 1.2 精灵图(sprites)的使用 2.字体图标 2.1字体图标的产生 2.2字体图标的优点 2.3字体图标的下载 2.4字体图标的引入 2.5字体图标的追加 1.精灵图 1.1为什么需要精灵图 一个网站往往回应用很多的小背景图像作…...

ToBeWritten之MIPS汇编基础铺垫
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...
MySQL数据库对数据库表的创建和DML操作
1.创建表user,其中包含id、name、password,其中主键自增,name,唯一是可变长度,最大长度是30,密码,可变长度,最大长度为20,不为空。 以下是创建符合要求的user表的SQL语句…...

【PCB专题】PCB 阻焊层(solder mask)与助焊层(paste mask)有什么区别
一块标准的印刷电路板 (PCB) 通常需要两种不同类型的“罩层 (mask)”。其中阻焊层 (solder mask) 和助焊层 (paste mask) 都是“罩层”,但在 PCB 制造过程中,它们分别用于两个完全不同的部分,因此也存在很大的区别。 阻焊层定义 阻焊层定义了电路板外表面的保护材料涂抹范围…...

ThreeJS-纹理旋转、重复(十一)
旋转 文档:three.js docs 关键代码: //设置旋转中心,默认左下角 docColorLoader.center.set(0.5,0.5); //围绕旋转中心逆时针旋转45度 docColorLoader.rotation Math.PI/4; 完整代码: <template> <div id"three_div"></div>…...
CSDN——Markdown编辑器——官方指导
CSDN——Markdown编辑器——官方指导欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表…...

DN-DETR调试记录
博主在进行DINO实验过程中,发现在提取了3个类别的COCO数据集中,DINO-DETR对car,truck的检测性能并不理想,又通过实验自己的数据集,发现AP值相差不大且较为符合预期,因此便猜想是否是由于DINO中加入了负样本约束导致背景…...

ASP消防网上考试系统设计与实现
本文以ASP和Access数据库来开发服务器端,通过计算机网络技术实现了一个针对消防部队警官的网上考试系统。为了。提高消防部队的工作效率和信息化水平,体现消防部队信息化进程的特色,开发一个适合消防部队的计算机网上考试系统是非常必要的。鉴…...

MongoDB - 数据模型的设计模式
简介 官方文章的地址是 Building with Patterns: A Summary,其中汇总了 12 种设计模式及使用场景。 上述的图表列举了 12 种设计模式及应用场景,主要是以下这些: 近似值模式(Approximation Pattern)属性模式…...

3D格式转换工具助力Shapr3D公司产品实现了 “无障碍的用户体验”,可支持30多种格式转换!
今天主要介绍的是HOOPS Exchange——一款支持30多种CAD文件格式读取和写入的工具,为Shapr3D公司提供的重要帮助! Shapr3D是一家有着宏伟目标的公司:将CAD带入21世纪!该公司于2016年首次推出其同名应用程序,并将Shapr3D带到了macOS…...

虚拟环境-----virtualenv和pipenv的安装和应用
1.pip install virtualenv 2.pip安装虚拟环境管理包virtualenvwrapper-win 3.创建一个存放虚拟环境的目录(建议命名为.env或者.virtualenv) 4.配置环境变量(变量名:WORKON_HOME,值:上面创建的目录路径) …...
awd pwn——LIEF学习
文章目录1. 什么是LIEF2. 加载可执行文件3. 修改ELF的symbols4. ELF Hooking5. 修改got表6. 总结1. 什么是LIEF LIEF是一个能够用于对各种类型的可执行文件(包括Linux ELF文件、Windows exe文件、Android Dex文件等)进行转换、提取、修改的项目…...
亚商投资顾问 早餐FM/0330 6G发展持开放态度
01/亚商投资顾问 早间导读 1.工信部副部长:中国对6G发展持开放的态度已成立工作组推动关键技术研究 2.易纲、周小川最新发声 中国加快绿色低碳发展的决心坚定不移 3.中移动出手!450亿溢价包圆邮储银行定增股份 4.海南全面启动全岛封关运作准备 免税消…...
cookie和session的区别
文章目录cookie和session的区别1. 存储位置不同2. 生命周期不同3. 存储数据大小不同4. 数据类型不同5. 安全性不同cookie和session的区别 1. 存储位置不同 cookie:cookie数据保存在客户端。 session:session数据保存在服务器端。 2. 生命周期不同 s…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...