将Excel导入Panda Dataframe

时间:2017-10-26 11:38:48

标签: python excel pandas dataframe import

以下仅是数据科学课程作业的开始。我希望这不是微不足道的。但我迷失了,无法找到答案。 我被要求将Excelfile导入熊猫数据框并随后对其进行操作。该文件可在此处找到:http://unstats.un.org/unsd/environment/excel_file_tables/2013/Energy%20Indicators.xls

让我感到困难的是

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

如果连续几个小时后,我会想出这个无用的行:

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

这似乎产生了一个多索引数据帧。虽然命令energy.head()没有返回任何内容。

我有两个问题:

  1. 我错了什么。到本练习,我认为我理解数据框架。但现在我完全无能为力而且迷失了: - ((
  2. 我该如何解决这个问题?我需要做些什么才能将这个Exceldata变成一个包含国家/地区的索引的数据文件?
  3. 感谢。

3 个答案:

答案 0 :(得分:2)

我认为你需要添加参数:

  • archive.php,用于将列转换为索引
  • index_col - 按位置解析列
  • 将标题位置更改为usecols
15

答案 1 :(得分:1)

我使用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')

请注意,我使用的是最新版本的pandas 0.20.3,请确保您的系统上有最新版本。

答案 2 :(得分:1)

我修改了您的代码,并能够将数据导入数据框。我使用了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)