使用 pandas 在 python 中读取 Excel 文件
- 2025-01-22 08:45:00
- admin 原创
- 143
问题描述:
我正在尝试通过以下方式读取 Excel 文件:
newFile = pd.ExcelFile(PATHFileName.xlsx)
ParsedData = pd.io.parsers.ExcelFile.parse(newFile)
这会引发一个错误,提示需要两个参数,但我不知道第二个参数是什么,而且我在这里试图实现的是将 Excel 文件转换为 DataFrame,我这样做对吗? 或者有没有其他方法可以使用 Pandas 来做到这一点?
解决方案 1:
关闭:首先调用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 \n0 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)
解决方案 2:
这是一个非常简单且容易的方法。
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)
查看文档的完整详细信息。
FutureWarning:该sheetname
关键字在较新的 Pandas 版本中已被弃用,请改用sheet_name
。
解决方案 3:
我想我应该在这里补充一点,如果您想访问行或列来循环遍历它们,您可以这样做:
import pandas as pd
# open the file
xlsx = pd.ExcelFile("PATHFileName.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 个行。
解决方案 4:
我认为这应该可以满足你的需要:
import pandas as pd
# Read the excel sheet to pandas dataframe
df = pd.read_excel("PATHFileName.xlsx", sheet_name=0) #corrected argument name
解决方案 5:
这是更新的方法,其语法在 Python 代码中更常见。它还可以防止您多次打开同一个文件。
import pandas as pd
sheet1, sheet2 = None, None
with pd.ExcelFile("PATHFileName.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
解决方案 6:
你只需要将文件路径输入到pd.read_excel
import pandas as pd
file_path = "./my_excel.xlsx"
data_frame = pd.read_excel(file_path)
查看文档以探索skiprows
加载 Excel 时忽略行等参数
解决方案 7:
import pandas as pd
data = pd.read_excel (r'**YourPath**.xlsx')
print (data)
解决方案 8:
加载 Excel 文件时不明确命名工作表,而是提供工作表顺序号(通常只需加载第一个工作表),如下所示:
import pandas as pd
myexcel = pd.ExcelFile("C:/filename.xlsx")
myexcel = myexcel.parse(myexcel.sheet_names[0])
由于.sheet_names
返回工作表名称列表,因此只需调用列表元素即可轻松加载一个或多个工作表。
解决方案 9:
这些都对我有用
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')
解决方案 10:
加载pandas库
将 pandas 导入为 pd
设置文件所在路径
路径 = “./myfile.xlsx”
将文件加载到数据框 df 中
df = pd.read_excel(路径)
检查前5行
df.head(5)
扫码咨询,免费领取项目管理大礼包!