如何使用数据框中的特定行和列在Panda Python中创建直方图

时间:2016-11-20 23:38:34

标签: python pandas histogram data-science

我在图片中有以下数据框,我想采用绘制直方图来显示任何特定年份(例如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'])

enter image description here

1 个答案:

答案 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'))

Reorganised dataframe

现在你可以最终绘制直方图,例如: 2010年:

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

Histogram of 2010