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

汽车分析,随时间变化的燃油效率

简述

今天我们来分析一个汽车数据。
数据集由以下列组成:

  • 名称:每辆汽车的唯一标识符。
  • MPG:燃油效率,以英里/加仑为单位。
  • 气缸数:发动机中的气缸数。
  • 排量:发动机排量,表示其大小或容量。
  • 马力:发动机的功率输出。
  • 重量:汽车的重量。
  • 加速:提高速度的能力,以秒为单位。
  • 车型年份:汽车模型的制造年份。
  • 原产地:每辆汽车的原产地国家或地区。
    总的来看数据内容不是很多,分析起来还是很容易的。

目标

这个项目的主要目标是了解汽车的不同特性之间的关系,以及它们如何影响燃油效率(MPG -每加仑英里数)。该项目还旨在发现数据中任何有趣的趋势或模式,从而为汽车行业提供见解。

数据清理和预处理

# 导入库
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示from scipy.stats import f_onewayfrom scipy.stats import ttest_ind# 导入数据
df = pd.read_csv('D:桌面\\Automobile.csv',encoding='gbk')

在这里插入图片描述

检查所有列的数据类型

在这里插入图片描述

检查缺失值

在这里插入图片描述

箱型图

df['马力'] = df['马力'].fillna(df['马力'].mean())
# 数字列列表
num_cols = ['mpg', '气缸数', '排量', '马力', '重量', '加速', '车型年份']for col in num_cols:plt.figure(figsize=(8, 4))sns.boxplot(df[col])plt.title(f'{col}箱线图 ')plt.show()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理 ‘马力’ 中的异常值

首先,计算“马力”(horsepower)的四分位距(IQR)

Q1_hp = df['马力'].quantile(0.25)
Q3_hp = df['马力'].quantile(0.75)
IQR_hp = Q3_hp - Q1_hp

定义异常值的上限和下限。

lower_bound_hp = Q1_hp - 1.5 * IQR_hp
upper_bound_hp = Q3_hp + 1.5 * IQR_hp

将异常值限制在一定范围内。

df['马力'] = df['马力'].clip(lower=lower_bound_hp, upper=upper_bound_hp)

重复这个过程,针对“重量”

Q1_weight = df['重量'].quantile(0.25)
Q3_weight = df['重量'].quantile(0.75)
IQR_weight = Q3_weight - Q1_weightlower_bound_weight = Q1_weight - 1.5 * IQR_weight
upper_bound_weight = Q3_weight + 1.5 * IQR_weightdf['重量'] = df['重量'].clip(lower=lower_bound_weight, upper=upper_bound_weight)

特征工程

创建一个新的特征’hp_to_weight’,它是马力与重量的比率。

df['hp_to_weight'] = df['马力'] / df['重量']

检查前几行 DataFrame 以确认更改。


df.head()

在这里插入图片描述

生成数值变量的描述性统计数据。


df.describe()

在这里插入图片描述

数据可视化

生成数值变量的直方图。


num_cols = ['mpg', '气缸数', '排量', '马力', '重量', '加速', '车型年份', 'hp_to_weight']for col in num_cols:plt.figure(figsize=(8, 4))sns.histplot(df[col], kde=True)plt.title(f' {col}直方图')plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成分类变量的条形图


plt.figure(figsize=(8, 4))
sns.countplot(x='原产地', data=df)
plt.title('原产地条形图')
plt.show()

在这里插入图片描述

双变量分析

为成对的数值变量生成散点图


num_cols = ['mpg', '气缸数', '排量', '马力', '重量', '加速', '车型年份', 'hp_to_weight']sns.pairplot(df[num_cols])
plt.show()

在这里插入图片描述

数值变化的相关矩阵

#计算数值变量之间的相关系数。
corr_matrix = df[num_cols].corr()# 显示相关矩阵
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('数值变化的相关矩阵')
plt.show()

在这里插入图片描述

group1 = df[df['原产地'] == 'usa']['mpg']
group2 = df[df['原产地'] == 'europe']['mpg']
group3 = df[df['原产地'] == 'japan']['mpg']# 进行单因素方差分析。
f_stat, p_value = f_oneway(group1, group2, group3)# 输出  F-statistic 和 p-value
print(f'F-statistic: {f_stat}')
print(f'p-value: {p_value}')

在这里插入图片描述

多变量分析

生成一组变量的配对图。

subset_cols = ['mpg', '马力', '重量', '原产地']
sns.pairplot(df[subset_cols], hue='原产地')
plt.show()

在这里插入图片描述

时间分析

# 计算每个型号年份的平均每加仑英里数。
avg_mpg_by_year = df.groupby('车型年份')['mpg'].mean()# 绘制随着时间变化的平均每加仑英里数。
plt.figure(figsize=(10, 6))
sns.lineplot(data=avg_mpg_by_year)
plt.title('平均每加仑英里数按车型年份分类')
plt.xlabel('车型年份')
plt.ylabel(' MPG平均值')
plt.show()

在这里插入图片描述

假设检验

# 删除具有缺失“mpg”值的行。
df = df.dropna(subset=['mpg'])# 将数据分成两组。
group1 = df[df['车型年份'] < 75]['mpg']  # 1975年之前制造的汽车
group2 = df[df['车型年份'] >= 75]['mpg']  # 1975年之后制造的汽车# 进行双样本t检验。
from scipy.stats import ttest_ind
t_stat, p_value = ttest_ind(group1, group2)# 输出 the t-statistic the p-value
print(f't-statistic: {t_stat}')
print(f'p-value: {p_value}')

在这里插入图片描述

结论

  • 随着时间的推移,燃油效率:平均每加仑英里数(mpg)似乎随着时间的推移而增加,这表明汽车变得更加省油。这可能是由于技术的进步和汽车制造业对燃油效率的日益关注。

  • 马力和重量:马力和重量之间似乎存在正相关关系,表明较重的汽车往往拥有更强劲的发动机。然而,马力和重量似乎都与mpg负相关,这表明较重的汽车和发动机功率更大的汽车往往更省油。

  • 产地和燃油效率:我们的假设检验表明,不同产地的汽车平均每加仑汽油行驶里程有显著差异。这表明汽车的生产地区可能会对其燃油效率产生影响。

  • 新功能-马力重量比:我们创造的新功能,马力重量比,可能会为这些变量和mpg之间的关系提供不同的结果

题外话

我整理了一些资源,如果你也对Python和大数据感兴趣,关注下方公众号免费提取资料。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

汽车分析,随时间变化的燃油效率

简述 今天我们来分析一个汽车数据。 数据集由以下列组成&#xff1a; 名称&#xff1a;每辆汽车的唯一标识符。MPG&#xff1a;燃油效率&#xff0c;以英里/加仑为单位。气缸数&#xff1a;发动机中的气缸数。排量&#xff1a;发动机排量&#xff0c;表示其大小或容量。马力&…...

大数据面试题之Elasticsearch:每日三题(六)

大数据面试题之Elasticsearch:每日三题 1. 为什么要使用Elasticsearch&#xff1f;2.Elasticsearch的master选举流程&#xff1f;3.Elasticsearch集群脑裂问题&#xff1f; 1. 为什么要使用Elasticsearch&#xff1f; 系统中的数据&#xff0c;随着业务的发展&#xff0c;时间…...

【管理设计篇】聊聊分布式配置中心

为什么需要配置中心 对于一个软件系统来说&#xff0c;除了数据、代码&#xff0c;还有就是软件配置&#xff0c;比如操作系统、数据库配置、服务配置 端口 ip 、邮箱配置、中间件软件配置、启动参数配置等。如果说是一个小型项目的话&#xff0c;可以使用Spring Boot yml文件…...

远程控制平台简介

写在前面 之所以想自己动手实现一个远程控制平台,很大一部分原因是因为我那糟糕的记性,虽然经常加班到很晚,拖着疲惫的步伐回到家,才想起忘记打卡了,如果我能在家控制在办公室的手机打一下卡就好了… 有人说,市场上有TeamViewer,向日葵,AnyDesk,ToDesk,等等这些老大…...

韦东山Linux驱动入门实验班(5)LED驱动---驱动分层和分离,平台总线模型

前言 &#xff08;1&#xff09;前面已经已经详细介绍了LED驱动如何进行编写的代码。如果韦东山Linux驱动入门实验班&#xff08;4&#xff09;LED驱动已经看懂了&#xff0c;驱动入门实验班后面的那些模块实验&#xff0c;其实和单片机操作差不太多了。我就不再浪费时间进行讲…...

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境

知识点&#xff1a;简单了解K210芯片 2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。作为嘉楠科…...

C#——Thread与Task的差异比较及使用环境

C#——Thread与Task的差异比较及使用环境 前言一、差异1. 创建和管理&#xff1a;2. 异步编程&#xff1a;3. 返回值&#xff1a;4. 异常处理&#xff1a;5. 线程复用&#xff1a; 总结 前言 前面两篇文章&#xff0c;分别通过各自的实例讲了关于Task以及Thread的相关的使用特…...

刷题 31-35

三十一、 747. 至少是其他数字两倍的最大数 给你一个整数数组 nums &#xff0c;其中总是存在 唯一的 一个最大整数 。 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是&#xff0c;则返回 最大元素的下标 &#xff0c;否则返回 -1 。 示例 1&a…...

【mysql】—— 数据类型详解

序言&#xff1a; 本期我将大家认识关于 mysql 数据库中的基本数据类型的学习。通过本篇文章&#xff0c;我相信大家对mysql 数据类型的理解都会更加深刻。 目录 &#xff08;一&#xff09;数据类型分类 &#xff08;二&#xff09;数值类型 1、tinyint类型 2、bit类型 …...

kafka常用命令

查看主题 ./kafka-topics.sh --list --bootstrap-server 10.1.1.2:9092 创建主题 ./kafka-topics.sh --bootstrap-server 10.1.1.2:9092 --create --topic test_topic --partitions 1 查看消费者列表--list ./kafka-consumer-groups.sh --bootstrap-server 10.1.1.2:9092 -…...

数字图像处理(番外)图像增强

图像增强 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据&#xff0c;有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征&#xff0c;使图像与视觉响应特性相匹配。 图像对比度 图像对比度计算方式如下&#xff1a; C ∑ δ δ ( i , j …...

flutter:轮播

前言 介绍几个比较有不错的轮播库 swipe_deck 与轮播沾边&#xff0c;但是更多的是一种卡片式的交互式界面设计。它的主要概念是用户可以通过左右滑动手势浏览不同的卡片&#xff0c;每张卡片上都有不同的信息或功能。 Swipe deck通常用于展示图片、产品信息、新闻文章、社…...

高忆管理:股票投资策略是什么?有哪些?

在进行股票买卖过程中&#xff0c;出资者需求有自己的方案和出资战略&#xff0c;并且主张严格遵从出资战略买卖&#xff0c;不要跟风操作。那么股票出资战略是什么&#xff1f;有哪些&#xff1f;下面就由高忆管理为我们剖析&#xff1a; 股票出资战略简略来说便是能够协助出资…...

为公网SSH远程Ubuntu配置固定的公网TCP端口地址主图

文章目录 为公网SSH远程Ubuntu配置固定的公网TCP端口地址 为公网SSH远程Ubuntu配置固定的公网TCP端口地址 在上篇文章中&#xff0c;我们通过cpolar建立的临时TCP数据隧道&#xff0c;成功连接了位于其他局域网下的Ubuntu系统&#xff0c;实现了不同操作系统、不同网络下的系统…...

【前端知识】React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置

React 基础巩固(四十一)——手动路由跳转、参数传递及路由配置 一、实现手动跳转路由 利用 useNavigate 封装一个 withRouter&#xff08;hoc/with_router.js&#xff09; import { useNavigate } from "react-router-dom"; // 封装一个高阶组件 function withRou…...

Qt几种字符类型的相互转换

Qt几种字符类型的相互转换 将const QString转换为const char*将const char*转换为const QStringQstring转换为string把string转换为QstringQt中弹出一个窗口 将const QString转换为const char* #include <QString> #include <iostream>int main() {const QString …...

软件测试员的非技术必备技能

成为软件测试人员所需的技能 非技术技能 以下技能对于成为优秀的软件测试人员至关重要。 将您的技能组合与以下清单进行比较&#xff0c;以确定软件测试是否适合您 - 分析技能&#xff1a;优秀的软件测试人员应具备敏锐的分析能力。 分析技能将有助于将复杂的软件系统分解为…...

渗透测试:Linux提权精讲(二)之sudo方法第二期

目录 写在开头 sudo expect sudo fail2ban sudo find sudo flock sudo ftp sudo gcc sudo gdb sudo git sudo gzip/gunzip sudo iftop sudo hping3 sudo java 总结与思考 写在开头 本文在上一篇博客的基础上继续讲解渗透测试的sudo提权方法。相关内容的介绍与背…...

ansible安装lnmp(集中式)

文章目录 一、安装nginx二、安装mysql三、安装php测试&#xff1a; 一、安装nginx - name: the nginx playhosts: webserversremote_user: roottasks:- name: stop firewalld #关闭防火墙service: namefirewalld statestopped enabledno- name: selinux stopc…...

Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目

Tomcat 一、Tomcat简介二、Tomcat基本使用三、Maven创建Web项目3.1 Web项目结构3.2开发完成部署的Web项目3.3创建Maven Web项目3.3.1方式一3.3.2方式二&#xff08;个人推荐&#xff09; 总结 一、Tomcat简介 Web服务器&#xff1a; Web服务器是一个应用程序&#xff08;软件&…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标&#xff1a; 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除

目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作&#xf…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...