我在图片中有以下数据框,我想采用绘制直方图来显示任何特定年份(例如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'])
答案 0 :(得分: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()
然后我会像分配新的列名一样做同样的事情,所以我们得到一个不错的数据框(尽管仍然不是最佳的),国家名称作为索引。
df.columns = df.iloc[0]
df = df.reindex(df.index.drop('Country Name'))
现在你可以最终绘制直方图,例如: 2010年:
import matplotlib.pyplot as plt
df[2010].plot(kind='bar', figsize=[30,10])