将Excel导入pandas数据框

以下仅是Coursera关于数据科学作业的开始。 我希望这不是微不足道的。 但是我迷失在此,无法find答案。 我被要求将一个Excelfile导入到一个pandas数据框中并在之后进行操作。 该文件可以在这里find: http : //unstats.un.org/unsd/environment/excel_file_tables/2013/Energy%20Indicators.xls

是什么让我很难

a)有17行和页脚的“开销”b)前两列是空的c)索引列没有标题名称

几个小时,如果seraching和阅读我想出了这个无用的线:

energy=pd.read_excel('Energy Indicators.xls', sheetname='Energy', header=16, skiprows=[17], skipfooter=38, skipcolumns=2 ) 

这似乎产生了一个多索引数据框。 尽pipe命令energy.head()不返回任何内容。

我有两个问题:

  1. 我错了什么 直到这个练习,我想我理解数据框。 但现在我完全无能为力,迷失了: – ((
  2. 我该如何解决这个问题? 我需要做些什么才能把这个Exceldata变成一个由国家指数组成的数据组?

谢谢。

我想你需要添加参数:

  • index_col将列转换为索引
  • usecols – 按位置分析列
  • 将标题位置更改为15

 energy=pd.read_excel('Energy Indicators.xls', sheetname='Energy', skiprows=[17], skipfooter=38, header=15, index_col=[0], usecols=[2,3,4,5] ) print (energy.head()) Energy Supply Energy Supply per capita \ Afghanistan 321 10 Albania 102 35 Algeria 1959 51 American Samoa ... ... Andorra 9 121 Renewable Electricity Production Afghanistan 78.669280 Albania 100.000000 Algeria 0.551010 American Samoa 0.641026 Andorra 88.695650 

我安装了xlrd软件包,用pip install xlrd ,然后成功载入文件如下:

 In [17]: df = pd.read_excel(r"http://unstats.un.org/unsd/environment/excel_file_tables/2013/Energy%20Indicators.xls", ...: sheetname='Energy', ...: header=16, ...: skiprows=[17], ...: skipfooter=38, ...: skipcolumns=2) In [18]: df.shape Out[18]: (227, 3) In [19]: df.head() Out[19]: Energy Supply Energy Supply per capita \ NaN Afghanistan Afghanistan 321 10 Albania Albania 102 35 Algeria Algeria 1959 51 American Samoa American Samoa ... ... Andorra Andorra 9 121 Renewable Electricity Production NaN Afghanistan Afghanistan 78.669280 Albania Albania 100.000000 Algeria Algeria 0.551010 American Samoa American Samoa 0.641026 Andorra Andorra 88.695650 In [20]: pd.__version__ Out[20]: u'0.20.3' In [21]: df.columns Out[21]: Index([u'Energy Supply', u'Energy Supply per capita', u'Renewable Electricity Production'], dtype='object') 

请注意,我正在使用最新版本的pandas0.20.3确保您的系统上有最新版本。

我修改了你的代码,并能够获取数据到数据框中。 而不是skipcolumns (这不工作),我用下面的参数usecols

 energy=pd.read_excel('Energy_Indicators.xls', sheetname='Energy', header=16, skiprows=[16], skipfooter=38, usecols=[2,3,4,5] ) Unnamed: 2 Petajoules Gigajoules % 0 Afghanistan 321 10 78.669280 1 Albania 102 35 100.000000 2 Algeria 1959 51 0.551010 3 American Samoa ... ... 0.641026 4 Andorra 9 121 88.695650 

为了使这些国家成为指标,你可以做到以下几点

 # Rename the column Unnamed: 2 to Country energy = energy.rename(columns={'Unnamed: 2':'Country'}) # Change the index to country column energy.index = energy['Country'] # Drop the extra country column energy = energy.drop('Country', axis=1)