使用熊猫在 python 中读取 Excel 文件

我试图这样读取一个 Excel 文件:

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

它会抛出一个错误,说明需要两个参数,我不知道第二个参数是什么,也不知道我在这里要做什么,就是把一个 Excel 文件转换成一个 DataFrame,我这样做对吗?或者有没有其他方法可以用熊猫来实现呢?

424525 次浏览

关闭: 首先调用 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)

查阅文件详情 Http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.read_excel.html

未来警告: 对于较新的熊猫版本,不推荐使用 sheetname关键字,而应使用 sheet_name

我想这应该能满足你的需要:

import pandas as pd


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

您只需要将文件的路径提供给 pd.read_excel

import pandas as pd


file_path = "./my_excel.xlsx"
data_frame = pd.read_excel(file_path)

检查 文件以探索在加载 excel 时忽略行的 skiprows等参数

import pandas as pd


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


print (data)

下面是一个更新后的方法,其语法在 python 代码中更常见。它还可以防止您多次打开同一个文件。

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

Https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html

加载一个 Excel 文件,但不显式地命名一个工作表,而是给出工作表顺序的编号(通常只是简单地加载第一个工作表) ,如下所示:

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

由于 .sheet_names返回一个工作表名称列表,所以只需调用 list 元素就可以轻松加载一个或多个工作表。

这些对我都有用

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

# 加载熊猫图书馆

进口大熊猫

# set path where the file is

Path = “ ./myfile.xlsx”

# 将文件加载到 dataframe df

Df = pd.read _ excel (path)

# 检查前五行

Df.head (5)