2016-11-20 60 views
1

我在圖片中有以下數據框,我想要一個繪製直方圖以顯示世界上所有國家的分佈情況給定年份(例如2010年)。如何在熊貓Python中創建直方圖使用數據框中的特定行和列

以下是我的代碼表清洗下面的代碼後,產生:

dataSheet = pd.read_excel("http://api.worldbank.org/v2/en/indicator/EN.ATM.CO2E.PC?downloadformat=excel",sheetname="Data") 
dataSheet = dataSheet.transpose() 
dataSheet = dataSheet.drop(dataSheet.columns[[0,1]], axis=1) ; 
dataSheet = dataSheet.drop(['World Development Indicators', 'Unnamed: 2','Unnamed: 3']) 

enter image description here

回答

1

爲了繪製所有國家的任何一年(如2010)的直方圖,我會做下列。

dataSheet = pd.read_excel("http://api.worldbank.org/v2/en/indicator/EN.ATM.CO2E.PC? downloadformat=excel",sheetname="Data") 
dataSheet = dataSheet.transpose() 
dataSheet = dataSheet.drop(dataSheet.columns[[0,1]], axis=1) 
dataSheet = dataSheet.drop(['World Development Indicators', 'Unnamed: 2','Unnamed: 3']) 

我會整理的列名,通過分配實際國名作爲列名:您的代碼後

dataSheet.columns = dataSheet.iloc[1] # here I'm assigning the column names 
dataSheet = dataSheet.reindex(dataSheet.index.drop('Data Source')) # here I'm re-indexing and getting rid of the duplicate row 

然後,我會再次轉置數據幀(爲了安全起見,我其分配給一個新的變量):

df = dataSheet.transpose() 

然後我會做同樣的,因爲我與賦新列名以前那樣,所以我們得到一個體面的數據幀(雖然仍然不是最優的)以國家名稱爲一世ndex。

df.columns = df.iloc[0] 
df = df.reindex(df.index.drop('Country Name')) 

Reorganised dataframe

現在你終於可以繪製了例如直方圖2010年:

import matplotlib.pyplot as plt 
df[2010].plot(kind='bar', figsize=[30,10]) 

Histogram of 2010

相關問題