以下仅是数据科学课程作业的开始。我希望这不是微不足道的。但我迷失了,无法找到答案。 我被要求将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()没有返回任何内容。
我有两个问题:
感谢。
答案 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)