目录
3. python读取execl另一种方式 openpyxl
先插个小知识,read_execl()参数解析:
`pd.read_excel()` 是 Pandas 库中用于读取 Excel 文件的函数。下面是该函数的参数详细解析:
1. `io`:Excel 文件的路径、URL或类文件对象。这是唯一必需的参数。
2. `sheet_name`:要读取的工作表的名称或索引。默认值为 0,表示读取第一个工作表。可以是字符串(工作表名称)或整数(工作表索引),也可以是一个列表,表示要读取的多个工作表。
3. `header`:指定哪一行作为列名。默认值为 0,表示使用第一行作为列名。如果设置为 None,则不使用列名,列名将按照默认规则生成。
4. `index_col`:指定哪一列作为行索引。默认值为 None,表示不使用任何列作为行索引。可以是列名或列索引,也可以是一个列表,表示多级行索引。
5. `usecols`:要读取的列。可以是列名、列索引或列范围(例如"A:C")。默认值为 None,表示读取所有列。
6. `dtype`:指定每列的数据类型。可以是字典,键为列名或列索引,值为数据类型。
7. `parse_dates`:指定要解析为日期时间的列。可以是列名、列索引或列范围。默认值为 False,表示不解析日期时间。
8. `na_values`:指定要将其识别为缺失值的值。可以是单个值、列表或字典。
9. `keep_default_na`:控制是否保留默认的缺失值标识符(如NA、-1.#IND、.ind、NA、NULL等)。默认值为 True。
10. `skiprows`:跳过指定的行数。默认值为 0,表示不跳过任何行。
11. `nrows`:要读取的行数。默认值为 None,表示读取所有行。
12. `converters`:指定对特定列进行转换的函数。可以是字典,键为列名或列索引,值为转换函数。
13. `true_values` 和 `false_values`:指定要解析为布尔值的字符串。可以是单个值、列表或字典。
14. `engine`:指定要使用的解析引擎。默认值为 None,表示自动选择解析引擎。可以是"xlrd"(使用xlrd包)或"openpyxl"(使用openpyxl包)。
15. `skipfooter`:跳过文件末尾的行数。默认值为 0,表示不跳过任何行。
16. `nrows`:要读取的行数。默认值为 None,表示读取所有行。
17. `sheet_name`:指定要读取的工作表。可以是字符串(工作表名称)或整数(工作表索引)。
18. `squeeze`:如果数据解析为只包含一列的DataFrame,则返回Series。默认值为 False。
19. `thousands`:指定千位分隔符。默认值为 None,表示不使用千位分隔符。
20. `decimal`:指定小数点符号。默认值为 "."。
这些参数中的大多数都有默认值,因此在大多数情况下,只需要指定 `io` 参数即可进行基本的 Excel 文件读取操作。
1. pandas读取excel错误提示
用pandas read_excel()方法读取xls或xlsx文件时,提示:ImportError: Missing optional dependency ‘xlrd’. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
错误原因:
1、提示没有安装xlrd模块,pip方式安装pandas时不会将xlrd作为依赖自动安装,需要手动安装xlrd模块。
解决方法:
2、pip手动安装xlrd模块。
#jupyter清华源 安装
!pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple
2.python解密带密码的xlsx文件
使用pandas 的read_excel()方法读取时, 提示XLRDError: Can't find workbook in OLE2 compound document
错误, 发现是由于xlsx加密的缘故,由于所有表数据均是一个密码,因此用下面方法进行进行解密数据进行输出。
import win32com.client
import pandas as pd
def get_datafram(filename,password):
"""
参数一:文件路径
参数二:文件密码
return: 解密后输出的df
"""
xlApp = win32com.client.Dispatch("Excel.Application")
xlwb = xlApp.Workbooks.Open(filename, False, True, None, Password=password)
#获取工作表具体情况
# 获取行数
rows=xlwb.Worksheets(1).UsedRange.Rows.Count
# 获取列数
col=xlwb.Worksheets(1).UsedRange.Columns.Count
#数据遍历重新写出
df_list=[]
for i in range(rows+1):
#每一行的值加入一个list
df_row_list=[]
for j in range(col+1):
#获取每个单元格的值,execl是从1开始索引的
a=xlwb.Worksheets(1).Cells(i+1,j+1).Value
df_row_list.append(a)
df_list.append(df_row_list)
#将二维列表转换DataFrame
df=pd.DataFrame(df_list)
return df
get_datafram('文件路径','打开密码')
3. python读取execl另一种方式
在Python中读取Excel表格,最常见的库是openpyxl
(用于处理.xlsx
文件)和xlrd
(用于处理.xls
文件)。这里我将演示如何使用openpyxl
库读取.xlsx
文件。
首先,你需要安装openpyxl
库。你可以使用pip来安装它:
pip install openpyxl
安装完成后,你可以使用以下代码读取Excel文件:
import openpyxl
# 加载Excel文件
workbook = openpyxl.load_workbook('你的文件路径.xlsx')
# 选择工作表
sheet = workbook.active # 默认选中活跃的工作表
# 或者通过名字选择工作表
# sheet = workbook['工作表名称']
# 读取单元格数据
cell_value = sheet['A1'].value # 读取A1单元格的值
print(cell_value)
# 遍历单元格
for row in sheet.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
for cell in row:
print(cell)
# 关闭工作簿
workbook.close()
在这段代码中:
load_workbook('你的文件路径.xlsx')
用于加载Excel文件。workbook.active
获取当前活跃的工作表,workbook['工作表名称']
通过工作表名称获取工作表。sheet['A1'].value
获取A1单元格的值。sheet.iter_rows()
方法可以遍历工作表中的行,min_row
,max_col
,max_row
参数可以指定遍历的范围,values_only=True
参数表示只获取单元格的值,不获取单元格对象。- 最后,使用
workbook.close()
关闭工作簿是一个好习惯,尤其是在处理大型文件时,可以帮助释放资源。
注意:以上示例假设你正在处理的是.xlsx
格式的文件。如果你需要读取.xls
文件,你需要使用xlrd
库,但自从xlrd
的1.2.0版本开始,它不再支持读取.xlsx
文件,只支持.xls
。对于.xlsx
文件,你应该使用openpyxl
或者其他库如pandas
、xlrd
的分支版本xlrd3
等。