使用pandas读取python中的Excel文件

使用pandas读取python中的Excel文件,python,python-2.7,pandas,Python,Python 2.7,Pandas,我正试图通过以下方式读取excel文件: newFile = pd.ExcelFile(PATH\FileName.xlsx) ParsedData = pd.io.parsers.ExcelFile.parse(newFile) 它抛出了一个错误,表示需要两个参数,我不知道第二个参数是什么,我在这里试图实现的是将Excel文件转换为数据帧,我这样做对吗?或者使用pandas还有其他方法吗?关闭:首先调用ExcelFile,然后调用.parse方法并将工作表名称传递给它 >>>

我正试图通过以下方式读取excel文件:

newFile = pd.ExcelFile(PATH\FileName.xlsx)
ParsedData = pd.io.parsers.ExcelFile.parse(newFile)

它抛出了一个错误,表示需要两个参数,我不知道第二个参数是什么,我在这里试图实现的是将Excel文件转换为数据帧,我这样做对吗?或者使用pandas还有其他方法吗?

关闭:首先调用
ExcelFile
,然后调用
.parse
方法并将工作表名称传递给它

>>> xl = pd.ExcelFile("dummydata.xlsx")
>>> xl.sheet_names
[u'Sheet1', u'Sheet2', u'Sheet3']
>>> df = xl.parse("Sheet1")
>>> df.head()
                  Tid  dummy1    dummy2    dummy3    dummy4    dummy5  \
0 2006-09-01 00:00:00       0  5.894611  0.605211  3.842871  8.265307   
1 2006-09-01 01:00:00       0  5.712107  0.605211  3.416617  8.301360   
2 2006-09-01 02:00:00       0  5.105300  0.605211  3.090865  8.335395   
3 2006-09-01 03:00:00       0  4.098209  0.605211  3.198452  8.170187   
4 2006-09-01 04:00:00       0  3.338196  0.605211  2.970015  7.765058   

     dummy6  dummy7    dummy8    dummy9  
0  0.623354       0  2.579108  2.681728  
1  0.554211       0  7.210000  3.028614  
2  0.567841       0  6.940000  3.644147  
3  0.581470       0  6.630000  4.016155  
4  0.595100       0  6.350000  3.974442  
您所做的是调用存在于类本身上的方法,而不是实例,这是可以的(虽然不是非常惯用),但是如果您这样做,您还需要传递工作表名称:

>>> parsed = pd.io.parsers.ExcelFile.parse(xl, "Sheet1")
>>> parsed.columns
Index([u'Tid', u'dummy1', u'dummy2', u'dummy3', u'dummy4', u'dummy5', u'dummy6', u'dummy7', u'dummy8', u'dummy9'], dtype=object)

我想我应该在这里补充一点,如果您想访问行或列来循环它们,您可以这样做:

import pandas as pd

# open the file
xlsx = pd.ExcelFile("PATH\FileName.xlsx")

# get the first sheet as an object
sheet1 = xlsx.parse(0)
    
# get the first column as a list you can loop through
# where the is 0 in the code below change to the row or column number you want    
column = sheet1.icol(0).real

# get the first row as a list you can loop through
row = sheet1.irow(0).real

编辑:


icol(i)和irow(i)方法现在已被弃用。您可以使用
sheet1.iloc[:,i]
获取第i列,使用
sheet1.iloc[i,:]
获取第i行。

这是一种非常简单的方法

import pandas
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname='Sheet 1')
# or using sheet index starting 0
df = pandas.read_excel(open('your_xls_xlsx_filename','rb'), sheetname=2)
查看文档完整详细信息


未来警告:较新版本不推荐使用
sheet name
关键字,请改用
sheet\u name

我认为这应该满足您的需要:

import pandas as pd

# Read the excel sheet to pandas dataframe
df = pd.read_excel("PATH\FileName.xlsx", sheetname=0)

您只需将文件路径输入到
pd.read\u excel

将熊猫作为pd导入
file_path=“/my_excel.xlsx”
数据帧=pd.read\u excel(文件路径)

签出以探索参数,如
skiprows
在加载excel时忽略行这里是一个更新的方法,其语法在python代码中更常见。它还防止您多次打开同一文件

import pandas as pd

data = pd.read_excel (r'**YourPath**.xlsx')

print (data)
import pandas as pd

sheet1, sheet2 = None, None
with pd.ExcelFile("PATH\FileName.xlsx") as reader:
    sheet1 = pd.read_excel(reader, sheet_name='Sheet1')
    sheet2 = pd.read_excel(reader, sheet_name='Sheet2')

加载excel文件时不显式命名工作表,而是给出工作表顺序的编号(通常只加载第一张工作表),如下所示:

import pandas as pd
myexcel = pd.ExcelFile("C:/filename.xlsx")
myexcel = myexcel.parse(myexcel.sheet_names[0])

由于
.sheet\u names
返回一个工作表名称列表,因此只需调用列表元素即可轻松加载一个或多个工作表。

所有这些都适用于我

In [1]: import pandas as pd

In [2]: df = pd.read_excel('FileName.xlsx') # If there is only one sheet in the excel file

In [3]: df = pd.read_excel('FileName.xlsx', sheet_name=0)

In [4]: In [20]: df = pd.read_excel('FileName.xlsx', sheet_name='Sheet 1')

当我使用“df=xl.parse(“Sheet1”)”时,它会自动将每列的第一个单元格值作为数据框的列名,我如何指定自己的列名?在pandas 15.0.2中,
parsed=pd.io.parsers.ExcelFile.parse(xl,“Sheet1”)
不起作用并抛出错误
模块对象没有属性ExcelFile
parsed=pd.io.excel.ExcelFile.parse(xl,“Sheet1”)
适用于meNice。这几乎与使用
openpyxl
实现对选项卡的相同访问一样简洁。熊猫在引擎盖下调用openpyxl吗?如何防止它将第一行变成标题?我尝试过使用参数
headers=None
,但虽然它没有破坏代码,但也不起作用。我发现需要pip install xlrd才能起作用。xlrd软件包不附带pandas,因此如果您没有出于其他目的安装它,您将获得“ImportError:没有名为xlrd的模块”异常。无论如何,从Mac上的pandas 0.19.0开始为True。仅供参考,正确的参数名称是
sheet\u name
而不是
sheetname