简述

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

  • 名称:每辆汽车的唯一标识符。
  • 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和大数据感兴趣,关注下方公众号免费提取资料。




汽车分析,随时间变化的燃油效率相关推荐

  1. C++:应用有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用FTCS方法,正向时间差, 居中空间差(附完整源码)

    C++:应用有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用FTCS方法,正向时间差, 居中空间差 # include <cmath> ...

  2. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax-Wendroff方法作为时间导数(附完整源码)

    C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax-Wendroff方法作为时间导数 # include <cstdlib> ...

  3. C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax方法作为时间导数(附完整源码)

    C++:有限差分法求解随时间变化 平流方程 ut = - c * ux 在一个空间维度上,与 恒定速度,使用Lax方法作为时间导数 # include <cstdlib> # includ ...

  4. 时间锁,手把手教你如何用Java设置随时间变化的动态密码

    时间锁:顾名思义就是用密码随时间变化而变化. 具体实现步骤如下: 步骤一:我们需要明确我们需要一个什么样的类,我想的是需要一个数据类,如下 步骤二:其次我们需要明确这个类里面需要实现那些功能?以简单的 ...

  5. Fluent关于UDF实现速度入口随时间变化

    Fluent关于UDF实现速度入口随时间变化](这里写自定义目录标题) fluent编译过程 小编也是第一次实现UDF在fluent中实现控制速度入口条件随时间变化,主要的学习过程还是网上的一些资料, ...

  6. 上证指数 评论数据情感分析(随时间变化) 有代码数据可直接运行

    目录 情感分析结果: ​编辑 首先是获取 股票评论数据的网站: 程序:

  7. Google Earth Engine(GEE)——MODIS 影像LST地表温度随时间变化的趋势案例分析

    该实验室的目标是使用 Google Earth Engine 深入研究气候变量.在本实验结束时,您将能够探索特定感兴趣区域的温度数据的长期趋势. MODIS LST 数据集 MOD11A2 V6 产品 ...

  8. 足球大数据预测中欧亚大小球随时间变化的处理

    上期介绍了足球大数据软件开发.网站建设--数据更新速度策略_sundayhost的专栏-CSDN博客,这期接着讲足球大数据预测有关时间函数的操作处理.这也是许多用户在分析足球结果时参考很多的一条要素. ...

  9. Unity3D完成随时间变化的昼夜交替及光线变化

    Unity3D环境中的昼夜交替,并且控制好光线随着时间的变化而变化,太阳位置跟随经纬度的不同而不同. 重点: 时间范围为0~24小时: 太阳位置跟随当前经纬度: 太阳完成东升西落,世界坐标系中的x正为 ...

最新文章

  1. 什么是循环神经网络——学习笔记
  2. 【转】Java程序员常用工具类库 - 目录
  3. Android Listview 点击item变黄色
  4. “System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results fro
  5. Vivado时序报告名词解释
  6. TClientDataSet[1]: 浏览测试数据
  7. g++ linux 编译开栈_linux下使用g++编译cpp工程
  8. python编程:从入门到实践学习笔记-文件和异常
  9. [Curator] Barrier 的使用与分析
  10. new delete 来申请动态二维数组空间
  11. UTF-8转换成GBK
  12. 欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机
  13. Zotero英文翻译插件安装教程
  14. 直线一级倒立摆数学建模与控制仿真
  15. 移动硬盘只读属性不能改
  16. 电脑硬件:谈谈cpu后边数字及字母的意思
  17. android 人生日历,人生日历Android版 功能初体验
  18. 合同太厚骑缝章怎么盖_合同骑缝章应该怎么盖?.doc
  19. Tornado框架06-模板
  20. 模拟dns优选,处理dns的响应时间

热门文章

  1. 工具 mosquitto
  2. 通俗理解:概率分布函数、概率密度函数
  3. 黑鲨3/3Pro/3S解决微信指纹支付-回锁BL+刷magisk+获取root解账户锁密码锁指导教程
  4. 【疑难杂症爆破委员会】解决Surface Go等插sd卡的设备无法把程序装到sd卡里的问题
  5. 「Python条件结构」根据输入数量对应的折扣率计算应付金额
  6. 8.声卡驱动01-一些好文章
  7. 中国电信及网通IP网段
  8. error adding symbols: DSO missing from command line
  9. 网络传输大端序_大端、小端与网络字节序
  10. 大齐玩转微信公众账号系列(四):微信公众账号开发入门(原理)