python数据分析-CO2排放分析

导入所需要的package

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
import datetime
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号

数据清洗和读取数据

df = pd.read_csv("energy.csv")
df.shape
###展示数据前6行
df.head(6)# 删除特定的列   在数据中体现为 Unnamed: 0
df = df.drop(['Unnamed: 0'], axis=1)
df.head(6)

###重新命名列名称 即简化名称
 

df.rename(columns={'Energy_type' : 'e_type', 'Energy_consumption' : 'e_con', 'Energy_production' : 'e_prod', 'Energy_intensity_per_capita' : 'ei_capita', 'Energy_intensity_by_GDP' : 'ei_gdp'}, inplace=True)df['e_type'] = df['e_type'].astype('category')df['e_type'] = df['e_type'].cat.rename_categories({'all_energy_types': 'all', 'natural_gas': 'nat_gas','petroleum_n_other_liquids': 'pet/oth','renewables_n_other': 'ren/oth'})df['e_type'] = df['e_type'].astype('object')df.info()

###对所以特征进行统计性描述
 

df.describe(include='all')

##得出每一种变量的总数

for var in df:print(f'{var}: {df[var].nunique()}')

###缺失值的处理
#先查看缺失值
for var in df:print(f'{var}: {df[var].isnull().sum()}')

从上面可以看到有的特征变量有很多缺失值

 由于大多数国家不消费或生产核能,因此缺少e_con和e_prod的许多价值,因此他们将其保留为Nan。我将添加 0 来代替这些

nuclear = df[df['e_type']=='nuclear']temp_ecp = df[df['e_type']!='nuclear']# Replacing all Nan values of e_con and e_prod of e_type nuclear to 0
nuclear[['e_con', 'e_prod']] = nuclear[['e_con', 'e_prod']].replace(np.nan, 0)# Joining them back up
df = pd.concat([nuclear, temp_ecp]).sort_index()

处理完之后再看,没有缺失值了 

 现在可以开始查看数据了,可视化

 

从上图可以看出分布高度右偏。

接下来查看能源类型分布 

###画出其环形图 看其分布和占比情况
percent = temp_dist['CO2_emission']
labels= temp_dist['e_type']my_pie,_,_ = plt.pie(percent, radius = 2.2, labels=labels, autopct="%.1f%%")
plt.setp(my_pie, width=0.6, edgecolor='white') 
plt.show()

 

从上图可以看出,所有能源都分布较为均匀

计算相关系数并画出其热力图

 

不同可视化分析

with plt.rc_context(rc = {'figure.dpi': 250, 'axes.labelsize': 9,'xtick.labelsize': 10, 'ytick.labelsize': 10,'legend.title_fontsize': 7, 'axes.titlesize': 12,'axes.titlepad': 7}):# Data with only the 'World' valuescd = df[df['Country']=='World']fig, ax = plt.subplots(2, 2, figsize = (10, 7), # constrained_layout = True,gridspec_kw = {'width_ratios': [3, 3], 'height_ratios': [3, 3]})ax_flat = ax.flatten()### 1st graphsns.lineplot(ax=ax_flat[0], data=cd[cd['e_type']=='all'],x='Year', y='CO2_emission', lw=3).set_title('Global CO2 Emission Yearly (MMtonnes CO2)')### 2nd graphsns.lineplot(ax=ax_flat[1], data=cd[cd['e_type']!='all'],x='Year',y='CO2_emission',hue='e_type',lw=3,).set_title('Yearly CO2_emission for each e_type globally (MMtonnes CO2)')ax_flat[1].legend(fontsize=8, title='Energy Type', title_fontsize=9, loc='upper left', borderaxespad=0)ax_flat[1].tick_params(axis='x', rotation=35)### 3rd graphsns.lineplot(ax=ax_flat[2], data=cd,x='e_con', y='CO2_emission', lw=2).set_title('Relationship of global CO2 Emission and Energy Consumption')### 4th graphfor_dist = df[df['Country']!='World'][df['e_type']=='all']sns.distplot(for_dist['CO2_emission'], ax=ax_flat[3]).set_title('Density of CO2 Emission Globally')plt.tight_layout(pad = 1)plt.show()

 # 前 6 个国家/地区的年度二氧化碳排放量

fig, ax = plt.subplots(2, 3, figsize = (20, 10))# Top 6 Countries
countries = temp_cd['Country'].head(6)# Average CO2 Emission each year for top 6 emiters
for idx, (country, axes) in enumerate(zip(countries, ax.flatten())):cd3 = df[df['Country']==country][df['e_type']=='all']temp_data = cd3.groupby(['Year'])['CO2_emission'].sum().reset_index().sort_values(by='CO2_emission',ascending=False)plot_ = sns.barplot(ax=axes, data=temp_data, x='Year', y='CO2_emission', palette="Reds_d")# Titleaxes.set_title(country)# Reducing Density of X-ticksfor ind, label in enumerate(plot_.get_xticklabels()):if ind % 4 == 0:  # every 10th label is keptlabel.set_visible(True)else:label.set_visible(False)# Rotating X axisfor tick in axes.get_xticklabels():tick.set_rotation(45)### Removing empty figures
else:[axes.set_visible(False) for axes in ax.flatten()[idx + 1:]]plt.tight_layout(pad=0.4, w_pad=2, h_pad=2)
plt.show()

 # 在此期间,中国和印度的排放量增加了很多。
#从这一时期开始到结束,二氧化碳排放量增加/减少幅度最大的国家

# 然后绘图
# Countries with biggest increase in CO2 emission

Countries with biggest decrease in CO2 emission

结论

关于CO2排放量的结论

1.在此期间,二氧化碳排放量一直在增加。
2.煤炭和石油/其他液体一直是这一时期的主要能源。
3.二氧化碳排放量平均每年增长1.71%,整个时期整体增长68.14%。
4.截至2019年,当年平均二氧化碳排放量为10.98(百万吨二氧化碳)。
5.在整个时期,二氧化碳排放量最大的国家是中国和美国,这两个国家的二氧化碳排放量几乎是其他国家的4倍或更多。
6.在此期间,中国和印度的二氧化碳排放量增加是其他所有国家中最多的。
7.在此期间,前苏联加盟共和国的二氧化碳排放量下降幅度最大,英国和德国的排放量也略有下降。
8.一般来说,人口越多,该国排放的二氧化碳就越多。
9.GDP越大,该国二氧化碳排放量越大。
10.一个国家的能源消耗越大,二氧化碳排放量就越大。
11.按人均能源强度的GDP计算的高或低能源强度并不一定能预测大量的二氧化碳排放量,但一般来说,它越低越好(节约的能量越多意味着二氧化碳排放量越少)。

代码和数据

创作不易,希望大家多多点赞收藏和评论!

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

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

相关文章

PLC_博图系列☞R_TRIG:检测信号上升沿

PLC_博图系列☞R_TRIG:检测信号上升沿 文章目录 PLC_博图系列☞R_TRIG:检测信号上升沿背景介绍R_TRIG: 检测信号上升沿说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 R_TRIG 背景介绍 这是一篇关于PLC编程的文章&a…

云计算-关系型数据库(Relational Database)

关系数据库服务(RDS)(Relational Database Service (RDS)) Amazon RDS 可用于在云中设置和运行关系数据库。它支持多种数据库实例类型以及多个数据库引擎,如 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 数据库…

gfast:基于全新Go Frame 2.3+Vue3+Element Plus构建的全栈前后端分离管理系统

gfast:基于全新Go Frame 2.3Vue3Element Plus构建的全栈前后端分离管理系统 随着信息技术的飞速发展和数字化转型的深入,后台管理系统在企业信息化建设中扮演着越来越重要的角色。为了满足市场对于高效、灵活、安全后台管理系统的需求,gfast应…

零基础学Java第二十三天之网络编程Ⅱ

1. InetAddress类 用来表示主机的信息 练习: C:\Windows\system32\drivers\etc\ hosts 一个主机可以放多个个人网站 www.baidu.com/14.215.177.37 www.baidu.com/14.215.177.38 www.taobao.com/183.61.241.252 www.taobao.com/121.14.89.253 2. Socket 3.…

Windows11平台在VS2022上通过CMake安装C++绘图库ROOT库

Root库是一个功能强大的开源软件框架,用于数据分析、可视化和存储。它最初是为高能物理实验设计的,但现在已经广泛应用于各种科学领域和工程应用中。Root库使用C编写,提供了许多用于数据处理和分析的工具和算法。它的核心功能包括数据存储、数…

tcpdump源码分析

进入tcpdump.c(函数入口)之前,先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作,每一个参数有对应的flag, 在tcpdump 的main 里面, 会根据用户的传入的参数来…

C#基础语言

​​​​ 目录 一个c# 程序主要包括以下部分:​​​​​​​ 标识符 C# 关键字 C# 数据类型 值类型(Value types) 引用类型(Reference types) 对象(Object)类型 动态(Dynam…

总是等不是办法,向媒体投稿你得学会用新方法

初入信息宣传领域,我怀揣着对文字的热爱与传播价值的热情,肩负起了单位活动的宣传报道重任。那时的我,满脑子都是传统的投稿思维:精心撰写每一篇稿件,然后逐一搜寻各大媒体的投稿邮箱,一封封邮件满怀期待地发出,像播撒希望的种子,渴望在广袤的媒体土壤中生根发芽。然而,理想很丰…

YOLOv10尝鲜测试五分钟极简配置

最近清华大学团队又推出YOLOv10,真是好家伙了。 安装: pip install supervision githttps://github.com/THU-MIG/yolov10.git下载权重:https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt 预测: from ult…

C++笔记:三种适配器(分别修饰函数、迭代器、容器)

Algorithms看不见Containers,对其一无所知。所以,它所需要的一切信息都必须从iterators取得,而iterators(由Containers提供)必须能够回答Algorithm的所有提问,才能搭配该Algorithm的所有操作。 1. C 标准库…

国内首个智能体生态大会!2024百度万象大会定档5月30日

最近,百度悄悄「上新」了几个AI神器。 百度搜索上线「互动」功能,可以实时问答,查询信息就像聊天一样简单,还可以艾特相关智能体,更细致精确地满足个性化需求,比如去新加坡旅游,可以让新加坡旅…

智慧校园学工管理系统的部署

学工体系思政服务该怎么规划建造?思政作为高校育人的中心使命,在做到让学生健康高兴生长的一起,也应满意学生生长成才的各类需求。使用技术为学生供给优质的信息化服务,是其间的有效途径。大数据让个性化教育成为可能,…

OTA在线旅行社系统架构:连接世界的科技纽带

随着互联网的快速发展和人们对旅行需求的不断增长,OTA(Online Travel Agency)在线旅行社成为了现代旅行业中的重要一环。OTA系统架构的设计和实现将对旅行行业产生深远影响。本文将探讨OTA在线旅行社系统架构的重要性和关键组成部分&#xff…

人工智能为犯罪地下世界带来了巨大的生产力提升

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

centos7.9用docker运行一个nginx容器

首先你的linux 系统里面已经安装好了docker,docker的安装教程看这个 1,下载nginx镜像 有很多文章会把镜像下载说成是拉取镜像, 我觉得就是下载的意思啊,搞不懂为什么要说拉取? docker pull nginx 下载最新版 Nginx …

开源的在线JSON数据可视化编辑器jsoncrack本地部署与远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序,能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

【移动云】云端赋能——数字化时代游戏与工作的新境界

前言 在当今这个信息化、数字化的时代,云计算、大数据和人工智能等前沿技术已经深入到我们生活的方方面面。作为我国通信行业的领军企业,中国移动凭借其在5G技术领域的领先优势,推出了基于移动云计算技术的云业务品牌——移动云。移动云以云操…

Linux 的性能调优的思路

Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台,在这个平台下有无数的开源软件支撑,我们常见的apache、tomcat、mysql等。 开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是…

Overleaf中出现文字越界、越下届、没有正确分页、换页的原因和解决方法

在使用overleaf中,我偶尔会遇到如标题所说的情况,也如图所示: 后来发现,是因为这一页前面是一个表格,所以怀疑是表格的格式导致的。所以让chatgpt帮我更换了表格的格式,成功解决问题。 对于问题可能的成因…

<Python实际应用>用yolov9实现垃圾检测

公司一个项目需要在无人机巡检的画面中识别垃圾和汽车,正好听闻yolov9最新出炉,于是试了一下采用yolov9来搭建该项目 1.下载和部署 下载yolov9:GitHub地址:GitHub代码下载地址 配置环境可以参考之前关于yolov5的文章 Yolov5自学笔记之一-…