pandas 读取某一单元格的值_Pandas读写文件(3)

本文介绍了Pandas如何读取和写入HTML、Excel、SQL和Pickle文件,包括使用不同的参数进行操作,如HTML的解析、Excel的工作表选择、SQL的数据库操作和Pickle的序列化与反序列化。
摘要由CSDN通过智能技术生成

Pandas读写文件

来源:https://realpython.com/pandas-read-write-files/

翻译:老齐

阅读本文需要12分钟

88fedb83c21afdb51f39786f686a6f55.png

本书计划发行时间:2020年初

第三部分

在昨天发布的第二部分中,介绍了如何处理CSV和JSON类型的文件,本部分接续介绍其他类型文件的读写方法。

HTML文件

HTML是一个纯文本文件,它使用超文本标记符,从而帮助浏览器呈现网页。HTML文件的扩展名是.html.htm。你需要安装一个类似lxmlhtml5lib 的HTML解析包,才能使用HTML文件:

$pip install lxml html5lib

你还可以使用Conda安装相同的包:

$ conda install lxml html5lib

一旦有了这些库,就可以使用.to_html()DataFrame的内容保存为HTML文件:

df = pd.DataFrame(data=data).Tdf.to_html('data.html')

这段代码生成了文件 data.html

但是,请注意,还没有获得整个网页,你刚刚以HTML格式输出了与df 对应的数据。

如果不提供可选参数buf.to_html()就不会创建文件,buf表示要写入的缓冲区。如果不使用此参数,代码将返回一个字符串,就像.to_csv().to_json()的代码所做的那样。

以下是其他的一些可选参数:

  • header 决定是否保存列名。
  • index决定是否保存索引。
  • classes指定CSS样式表。
  • render_links 指定是否将URLs转换为HTML链接。
  • table_id将CSSid分配给table
  • escape决定是否将字符<, >& 转换为HTML认可的字符串。

你可以通过设置这些参数,生成具有不同特点的文件。

可以使用 read_html()从适当的HTML文件读取数据,并返回DataFrame 对象:

>>> df = pd.read_html('data.html', index_col=0, parse_dates=['IND_DAY'])

这与读取CSV文件时的做法非常相似。还有一些参数可以帮助处理日期、缺失值、精度、编码、HTML解析等等。

Excel文件

你已经学会了如何用Pandas读写Excel文件。不过,还有几项选择值得考虑。例如,当你使用.to_excel()时,可以使用参数sheet_name指定目标工作表的名称:

>>> df = pd.DataFrame(data=data).T>>> df.to_excel('data.xlsx', sheet_name='COUNTRIES')

在这里,你将一个名为 COUNTRIES的工作表保存为文件data.xlsx,这个工作表里存储了数据。字符串'data.xlsx'是参数 excel_writer的值,excel

OpenXLSX是一个Python库,用于读写Excel文件,特别是Microsoft Office的XLSX格式。如果你想从使用OpenXLSX写入的数据中读取包含公式的结果,需要注意的是OpenXLSX本身并不直接支持Excel公式计算,它主要用于存储数据。当你在OpenXLSX中写入含有公式的单元格时,它会存储公式而不是计算结果。 当你用Pandas读取这个文件时,你可能会得到原始的公式字符串,而非计算后的数值。如果你想获取计算后的,你需要: 1. 使用`openpyxl`或`xlrd`这样的库,它们支持公式计算,可以读取到Excel文件中的计算结果。 2. 对于 `openpyxl`,首先读取Excel文件,然后对包含公式的单元格应用`eval()`函数来计算,例如: ```python import pandas as pd from openpyxl import load_workbook wb = load_workbook('your_file.xlsx') ws = wb.active data = pd.DataFrame(ws.values) # 确保列名是str,因为eval需要字符串 if data.columns.dtype == 'category': data.columns = data.columns.astype(str) for col in data.columns[data.columns.str.contains('=')]: data[col] = data[col].apply(lambda x: eval(x) if isinstance(x, str) else x) ``` 3. 如果你不想处理字符串转换,可以直接使用`pd.ExcelFile.parse`读取后再计算,但它不会自动识别公式: ```python df = pd.read_excel('your_file.xlsx', engine='openpyxl', keep_default_na=False) df.eval() # 这里可以尝试使用eval,但通常会依赖其他库如`numexpr` ``` **相关问题--:** 1. OpenXLSX如何处理公式计算? 2. 如何判断哪些列包含公式? 3. 如果文件非常大,上述方法是否可行?是否有优化建议?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值