🤵♂️ 个人主页:@艾派森的个人主页
✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
1.项目背景
2.数据集介绍
3.技术工具
4.导入数据
5.数据可视化
文末推荐
源代码
1.项目背景
随着工业化进程的加速和人口的不断增长,人类对能源的需求日益增长,其中交通运输行业作为能源消耗和二氧化碳排放的主要来源之一,其影响不容忽视。
首先,从全球气候变化的角度来看,车辆二氧化碳排放量的增加已经对地球的气候系统产生了显著影响。二氧化碳作为一种主要的温室气体,其在大气中的积累导致地球表面温度上升,进而引发了一系列环境问题,如冰川融化、海平面上升、极端天气事件频发等。这些变化不仅直接威胁到人类的生存环境和食品安全,还对整个生态系统的平衡和稳定造成了巨大冲击。
其次,从可持续发展的角度来看,减少车辆二氧化碳排放量是实现可持续发展的必然要求。可持续发展要求我们在满足当前需求的同时,不损害未来世代满足其需求的能力。而减少车辆二氧化碳排放量正是实现这一目标的重要手段之一。通过优化车辆设计、提高能源利用效率、推广清洁能源等措施,可以有效降低车辆的二氧化碳排放量,从而减轻对环境的压力,为子孙后代留下更多的生存空间。
此外,车辆二氧化碳排放量的数据可视化分析还具有重要的实践意义。随着数据科学的快速发展,数据可视化已经成为一种强大的工具,可以帮助我们更好地理解和分析复杂的数据。通过对车辆二氧化碳排放量的数据进行可视化处理,我们可以更加直观地了解不同车型、不同驾驶习惯等因素对二氧化碳排放量的影响,发现隐藏在数据背后的规律和趋势。这些信息对于制定更加科学、有效的减排措施具有重要的指导意义。
同时,车辆二氧化碳排放量的数据可视化分析还有助于提高公众的环保意识和参与度。通过将复杂的数据以直观、易懂的方式呈现给公众,可以让他们更加深入地了解车辆二氧化碳排放对环境的影响,认识到减少二氧化碳排放的重要性。这将激发公众的环保热情,推动他们积极参与到减排行动中来,共同为保护环境、实现可持续发展贡献力量。
综上所述,车辆二氧化碳排放量数据可视化分析的研究背景涵盖了全球气候变化、可持续发展以及提高公众环保意识等多个方面。通过深入研究和分析这一领域,我们可以为制定更加科学、有效的减排措施提供有力支持,为保护环境、实现可持续发展做出积极贡献。
2.数据集介绍
本实验数据集来源于Kaggle,该数据集捕获了车辆二氧化碳排放量随不同特征变化的详细信息。数据集取自加拿大政府官方开放数据网站。其中包含 7 年期间的数据。总共有 7385 行和 12 列。各列变量含义解释如下:
Make:车辆的品牌或制造商。
Model:车辆的具体车型名称。
Vehicle Class:车辆的分类,如紧凑型、SUV等。
Engine Size(L):车辆发动机的尺寸,以升为单位。
Cylinders:车辆发动机的气缸数。
Transmission:变速器的类型,如自动(as)或手动(M)。
Fuel Type:车辆使用的燃料类型,如汽油(Z)。
Fuel Consumption City (L/100 km):在该城市行驶时每百公里油耗的升数。
Fuel Consumption Hwy (L/100 km):在高速公路上行驶时每百公里油耗的升数。
Fuel Consumption Comb (L/100 km):以升/百公里为单位的综合燃油消耗率,包括城市和高速公路行驶。
Fuel Consumption Comb (mpg):以每加仑英里数为单位的等效油耗率(mpg)。
CO2 Emissions(g/km):车辆产生的二氧化碳排放量,单位为克/公里。
3.技术工具
Python版本:3.9
代码编辑器:jupyter notebook
4.导入数据
导入数据分析第三方库并加载数据集
对变量进行重命名
查看数据大小
查看数据基本信息
查看数值型变量的描述性统计
查看非数值型变量的描述性统计
统计缺失值情况
发现没有缺失值
统计重复值情况
发现有1103个重复值
删除重复值
5.数据可视化
文末推荐
《R语言统计分析与可视化从入门到精通》
内容简介
本书循序渐进、深入讲解了R语言数据统计分析与应用的核心知识,并通过具体实例的实现过程演练了知识点的用法和流程。全书共16章,分别讲解了R语言基础、R语言数据统计语法基础、数据获取和处理、绘制可视化统计图、描述性统计分析、探索性数据分析、推论统计、回归分析、方差分析、非参数统计分析、主成分分析、聚类分析、生存分析、因子分析、基于机器学习的患者再入院预测分析系统和中概科技指数统计分析与投资系统。全书简洁而不失其技术深度,内容丰富全面,历史资料翔实齐全。同时,本书易于阅读,以极简的文字介绍了复杂的案例,同时涵盖了其他同类图书中很少涉及的历史参考资料,是学习R语言数据统计分析与应用的实用教程。
源代码
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["figure.figsize"] = (15, 8)
import seaborn as sns
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
df = pd.read_csv("CO2 Emissions_Canada.csv")
df.head()
# 重命名变量
df.rename(columns ={'Make' : "make",
'Model' : "model",
'Vehicle Class' : "vehicle_class",
'Engine Size(L)': "engine_size",
'Cylinders': "cylinders",
'Transmission' : "transmission",
'Fuel Type' : "fuel_type",
'Fuel Consumption City (L/100 km)' : "fuel_cons_city",
'Fuel Consumption Hwy (L/100 km)': "fuel_cons_hwy",
'Fuel Consumption Comb (L/100 km)' :"fuel_cons_comb",
'Fuel Consumption Comb (mpg)' : "fuel_cons_comb_mpg"
, 'CO2 Emissions(g/km)' : "co2"
}, inplace = True)
df.sample(10)
df.shape
df.info()
df.describe()
df.describe(include='O')
df.isna().sum()
df.duplicated().sum()
df.drop_duplicates(inplace=True)
df.duplicated().sum()
sns.boxplot(x = df.make, y = df.co2)
plt.xticks(rotation = 90)
plt.show()
top_models = df.model.value_counts()[:20]
a = sns.countplot(x = "model", data = df, order = top_models.index)
plt.xticks(rotation = 90)
plt.title("Top 20 Model")
plt.xlabel("Model")
plt.ylabel("Count")
plt.bar_label(a.containers[0])
plt.show()
a = sns.countplot(data = df, x = "vehicle_class", order = df.vehicle_class.value_counts().index)
plt.xticks(rotation = 90)
plt.bar_label(a.containers[0])
plt.show()
sns.boxplot(x = "vehicle_class", y = "co2", data = df)
plt.xticks(rotation = 90)
plt.show()
sns.displot(data = df, x = "engine_size", kde = True, bins = 20)
sns.scatterplot(data = df, x = "co2", y = "engine_size", alpha = 0.6, color = "pink" , edgecolor = "k", s = 50)
plt.xlabel("CO2 Emissions")
plt.ylabel("Engine Size")
plt.title("CO2 Emissions vs Engine Size")
plt.grid(axis = "y", alpha = 0.5)
plt.show()
a = sns.countplot(data = df, x = df.cylinders, palette = "Blues")
plt.bar_label(a.containers[0])
plt.xlabel("Cylinders")
plt.ylabel("Count")
plt.title("Distribution of Cylinders")
plt.grid(axis = "y", linestyle = "--", alpha = 0.4)
sns.despine()
plt.show()
sns.scatterplot(data = df, x = "co2", y = "cylinders", alpha = 0.6, color = "pink" , edgecolor = "k", s = 50)
plt.xlabel("CO2 Emissions")
plt.ylabel("Cylinders")
plt.title("CO2 Emissions vs Cylinders")
plt.grid(axis = "y", alpha = 0.5, linestyle = "--")
plt.show()
import re
df["gears"] = df["transmission"].copy()
df["gears"] = df["gears"].apply(lambda x: re.findall(r'\d+', str(x))[0] if re.findall(r'\d+', str(x)) else "No Gears")
df["transmission"] = df["transmission"].apply(lambda x: re.findall("[A-Za-z]+", str(x))[0] if re.findall("[A-Za-z]+", str(x)) else None)
df = df[['make', 'model', 'vehicle_class', 'engine_size', 'cylinders',
'transmission', 'gears', 'fuel_type', 'fuel_cons_city', 'fuel_cons_hwy',
'fuel_cons_comb', 'fuel_cons_comb_mpg', 'co2']]
transmission_counts = df.transmission.value_counts()
transmission_labels = transmission_counts.index
transmission_values = transmission_counts.values
colors = ['#FF6384', '#36A2EB', '#FFCE56', '#8BC34A', '#FF9800']
plt.figure(figsize = (10, 8))
plt.pie(transmission_values, labels = transmission_labels, autopct = "%.2f%%", colors = colors, wedgeprops = {'linewidth': 2, 'edgecolor': 'white'})
centre_circle = plt.Circle((0, 0), 0.70, fc="white")
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.title("Transmission Value Counts", fontsize = 14, fontweight = 'bold')
plt.axis("equal")
plt.show()
plt.figure(figsize = (10, 8))
a = sns.countplot(data = df, x = "gears", palette = "viridis")
plt.bar_label(a.containers[0])
plt.title("Gears Value Counts", fontsize = 14)
plt.xlabel("Gears")
plt.ylabel("Count")
sns.despine()
plt.show()
plt.figure(figsize = (10, 8))
sns.boxplot(x = "gears", y = "co2", data = df, palette = 'Set3')
plt.title("CO2 Emission by Gears", fontsize = 14)
plt.xlabel("Gears")
plt.ylabel("CO2 Emission")
plt.show()
plt.figure(figsize = (10, 8))
sns.boxplot(x = "transmission", y = "co2", data = df, palette = 'husl')
plt.title("CO2 Emission by Transmission", fontsize = 14)
plt.xlabel("Transmission")
plt.ylabel("CO2 Emission")
plt.show()
plt.figure(figsize = (10, 8))
sns.boxplot(x = "fuel_type", y = "co2", data = df, palette = "muted")
plt.title("CO2 Emission by Fuel Type", fontsize = 14)
plt.xlabel("Fuel Type")
plt.ylabel("CO2 Emission")
plt.show()
sns.displot(df.co2, kde = True, color = "brown")
plt.title("CO2 Emission Distribution", fontsize = 14)
plt.xlabel("CO2 Emission")
plt.ylabel("Count")
plt.show()