当前位置:首页 > 公众号精选 > AI科技大本营
[导读]作者|周萝卜来源|萝卜大杂烩通常情况下,我们使用Pandas来读取Excel数据,可以很方便的把数据转化为DataFrame类型。但是现实情况往往很骨干,当我们遇到结构不是特别良好的Excel的时候,常规的Pandas读取操作就不怎么好用了,今天我们就来看两个读取非常规结构Exc...

两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!作者 | 周萝卜来源 | 萝卜大杂烩通常情况下,我们使用 Pandas 来读取 Excel 数据,可以很方便的把数据转化为 DataFrame 类型。但是现实情况往往很骨干,当我们遇到结构不是特别良好的 Excel 的时候,常规的 Pandas 读取操作就不怎么好用了,今天我们就来看两个读取非常规结构 Excel 数据的例子
两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!本文使用的测试 Excel 内容如下两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!
两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!文末可以获取到该文件

指定列读取

一般情况下,我们使用 read_excel 函数读取 Excel 数据时,都是默认从第 A 列开始读取的,但是对于某些 Excel 数据,往往不是从第 A 列就有数据的,此时我们需要参数 usecols 来进行规避处理比如上面的 Excel 数据,如果我们直接使用 read_excel(src_file) 读取,会得到如下结果两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!我们得到了很多未命名的列以及很多我们根本不需要的列数据此时我们可以通过 usecols 来指定读取哪些列数据from pathlib import Path
src_file = Path.cwd() / 'shipping_tables.xlsx'

df = pd.read_excel(src_file, header=1, usecols='B:F')

两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!可以看到生成的 DataFrame 中只包含我们需要的数据,特意排除了 notes 列和 date 字段usecols 可以接受一个 Excel 列的范围,例如 B:F 并仅读取这些列,header 参数需要一个定义标题列的整数,它的索引从0开始,所以我们传入 1,也就是 Excel 中的第 2 行我们也可以将列定义为数字列表df = pd.read_excel(src_file, header=1, usecols=[1,2,3,4,5])
也可以通过列名称来选择所需的列数据df = pd.read_excel(
src_file,
header=1,
usecols=['item_type', 'order id', 'order date', 'state', 'priority'])
这种做法在列的顺序改变但是列的名称不变的时候非常有用
最后,usecols 还可以接受一个可调用的函数def column_check(x):
if 'unnamed' in x.lower():
return False
if 'priority' in x.lower():
return False
if 'order' in x.lower():
return True
return True

df = pd.read_excel(src_file, header=1, usecols=column_check)
该函数将按名称解析每一列,并且必须为每一列返回 True 或 False当然也可以使用 lambda 表达式cols_to_use = ['item_type', 'order id', 'order date', 'state', 'priority']
df = pd.read_excel(src_file,
header=1,
usecols=lambda x: x.lower() in cols_to_use)

范围和表格

在某些情况下,Excel 中的数据可能会更加不确定,在我们的 Excel 数据中,我们有一个想要读取的名为 ship_cost 的表,这该怎么获取呢两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!在这种情况下,我们可以直接使用 openpyxl 来解析 Excel 文件并将数据转换为 pandas DataFrame以下是使用 openpyxl(安装后)读取 Excel 文件的方法:from openpyxl import load_workbook
import pandas as pd
from pathlib import Path
src_file = src_file = Path.cwd() / 'shipping_tables.xlsx'

wb = load_workbook(filename = src_file)
查看所有的 sheet 页,获取某个 sheet 页,获取 Excel 范围数据wb.sheetnames
sheet = wb['shipping_rates']
lookup_table = sheet.tables['ship_cost']
lookup_table.ref

两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!现在我们以及知道要加载的数据范围了, 接下来就是将该范围转换为 Pandas DataFrame# 获取数据范围
data = sheet[lookup_table.ref]
rows_list = []

# 循环获取数据
for row in data:
cols = []
for col in row:
cols.append(col.value)
rows_list.append(cols)


df = pd.DataFrame(data=rows_list[1:], index=None, columns=rows_list[0])

两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!这样我们就获取到了干净的表数据了好了,今天的两个小知识点就分享到这里了,我们下次再见!两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭