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.pswp.cn/bicheng/16422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16422.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL數據表索引命名規范

在數據庫設計和開發過程中,索引是提高查詢性能的重要工具。合理的索引命名規范不僅能提高代碼的可讀性,還能便于維護和管理。本文將詳細介紹MySQL數據表索引的命名規范,包括不同類型索引的命名方法,并提供多個代碼示例以說明如何命…

SSH 遠程登錄系統和遠程拷貝

文章目錄 目錄 文章目錄 前言 一.SSH的基本用法 SSH基本用法: SSH無密碼登錄 二.SSH安全設置 三.SSH限制用戶 前言 很多時候服務器并沒有服務器,我們也不能每次都通過控制臺去管理服務器,這時候就需要遠程登錄,相比于Telnet&a…

京東應屆生公司內網說了一句‘什么時候被pdd收購‘,結果慘遭辭退

京東應屆生公司內網說了一句’什么時候被pdd收購’,結果慘遭公司開除 這個事最近在圈子討論比較多 前二天,有一個上海交大畢業的應屆生,在京東實習了9個月,好不容易轉正12天后,只因在內網說了一句話,就被…

upload-labs 21關解析

目錄 一、代碼審計 二、實踐 三、總結 一、代碼審計 $is_upload false; $msg null; if(!empty($_FILES[upload_file])){//檢查MIME$allow_type array(image/jpeg,image/png,image/gif);if(!in_array($_FILES[upload_file][type],$allow_type)){$msg "禁止上傳該類型…

一個程序員的牢獄生涯(38)答案

星期一 答 案 我被這個不知道什么時候無聲無息的出現在身后的人嚇出了一身的冷汗。 看到我發現了他,這個人慢慢地抬起了頭……“他X的,是小X州!” 此時的小X州臉上并沒有著急等待上廁所的表情,反而是用一種狡黠的眼神看著我。一直充滿的敵意,現在又多了一絲威脅的神情,讓…

Quartus Cyclone I II III IVE 器件型號

玩耍了一個 EP2 型號的開發板,發現 安裝的quartus13 沒有Cyclone II 型號,經過探索發現了是版本不對。 https://www.intel.com/content/www/us/en/software-kit/711920/intel-quartus-ii-subscription-edition-design-software-version-13-0sp1-for-win…

行業分析---造車新勢力之蔚來汽車

1 前言 在之前的博客中,筆者分析了蘋果《行業分析---我眼中的Apple Inc.》,蘋果已經成為世界級的公司。隨后也分析了電動汽車公司特斯拉《行業分析---馬斯克的Tesla》,特斯拉也在不斷成長。目前能分析的新能源汽車公司不多,小米汽…

Minecraft服務器如何搭建

Minecraft這是原版英文名稱,在中國大陸被譯為《我的世界》,這款游戲很火爆。臺灣的很多小伙伴也在玩,其譯名為《我的創世神》。現在這款游戲在國內已經被網易代理了。因為這款游戲開源,所以任何人都可以搭建服務器端,如…

機器人支持回調接口配置(詳細教程)

大家伙,我是雄雄,歡迎關注微信公眾號:雄雄的小課堂。 一、前言 今天,給大家介紹一下,如何在機器人中配置回調地址和接口編寫。很多時候我們可能有這樣的場景,收到消息后,想自己處理一下消息的內…

【Linux】Linux的基本指令_2

文章目錄 二、基本指令8. man9. nano 和 cat10. cp11. mv12. echo 和 > 和 >> 和 <13. more 和 less14. head 和 tail 和 | 未完待續 二、基本指令 8. man Linux的命令有很多參數&#xff0c;我們不可能全記住&#xff0c;我們可以通過查看聯機手冊獲取幫助。訪問…

基于門控的循環神經網絡:GRU

門控循環單元&#xff08;GatedRecurrentUnit&#xff0c;GRU&#xff09;網絡&#xff0c;也是一種基于門控的循環神經網絡&#xff0c;但是名氣不如LSTM大&#xff0c;GRU是對LSTM的一種改版&#xff0c;可以理解為是LSTM的簡化版。LSTM有三個門&#xff0c;輸入門&#xff0…

【C++】牛客 ——DP36 abb

?題目鏈接&#xff1a; DP36 abb ?題目描述 leafee 最近愛上了 abb 型語句&#xff0c;比如“疊詞詞”、“惡心心” leafee 拿到了一個只含有小寫字母的字符串&#xff0c;她想知道有多少個 "abb" 型的子序列&#xff1f; 定義&#xff1a; abb 型字符串滿足以下…

perl:用 Net::Server 創建簡單的流媒體服務器

這是一個使用Perl Net::Server 模塊創建的簡單流媒體服務器示例&#xff0c;它能夠播放.flv文件。 首先&#xff0c;確保安裝了Net::Server模塊&#xff0c;如果沒有安裝&#xff0c;可以使用CPAN來安裝它&#xff1a; 運行 cpan Net::Server RHANDOM/Net-Server-2.014.tar.…

力扣刷題--448. 找到所有數組中消失的數字【簡單】

題目描述 給你一個含 n 個整數的數組 nums &#xff0c;其中 nums[i] 在區間 [1, n] 內。請你找出所有在 [1, n] 范圍內但沒有出現在 nums 中的數字&#xff0c;并以數組的形式返回結果。 示例 1&#xff1a; 輸入&#xff1a;nums [4,3,2,7,8,2,3,1] 輸出&#xff1a;[5,6…

Python零基礎-中【詳細】

接上篇繼續&#xff1a; Python零基礎-上【詳細】-CSDN博客 目錄 十、函數式編程 1、匿名函數lambda表達式 &#xff08;1&#xff09;匿名函數理解 &#xff08;2&#xff09;lambda表達式的基本格式 &#xff08;3&#xff09;lambda表達式的使用場景 &#xff08;4&…

js 實現貪心算法

貪心算法是一種在每一步選擇中都采取在當前狀態下最好或最優的選擇&#xff0c;從而希望導致結果是全局最好或最優的算法策略。請注意&#xff0c;貪心算法并不總是能保證得到全局最優解&#xff0c;但在某些問題上&#xff0c;它可以提供足夠好的解決方案。下面是一個使用Java…

前端知識1-3:模塊化+瀏覽器詳解

script標簽兩個變量參數 - async & defer <script src"main.js" async></script>普通 - 解析到標簽&#xff0c;立刻pending&#xff0c;并且下載執行defer - 解析到標簽&#xff0c;開始異步下載&#xff0c;解析完成之后開始執行async - 解析到標簽…

內存函數詳解,包含部分字符串函數

目錄 一&#xff0c;memcpy內存函數的介紹 二memmove函數的介紹 三&#xff0c;memset的函數使用 四&#xff0c;memcmp的介紹 五&#xff0c;內存函數的模擬實現&#xff0c;以及一個字符串函數strstr的模擬實現 5.1memcpy函數的實現 5.2memmove的模擬實現 5.3memcmp的模擬…

Shell環境變量深入:自定義系統環境變量

Shell環境變量深入&#xff1a;自定義系統環境變量 目標 能夠自定義系統級環境變量 全局配置文件/etc/profile應用場景 當前用戶進入Shell環境初始化的時候會加載全局配置文件/etc/profile里面的環境變量, 供給所有Shell程序使用 以后只要是所有Shell程序或命令使用的變量…

H.機房【藍橋杯】/數組鏈式前向星建圖+堆優化版dijkstra

機房 數組鏈式前向星建圖堆優化版dijkstra #include<iostream> #include<queue> #include<cstring> #include<vector> using namespace std; typedef pair<int,int> pii; //無向圖開兩倍 int e[200005],ne[200005],v[200005],h[200005],du[1000…