惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
H
Help Net Security
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
V
V2EX
M
MIT News - Artificial intelligence
Vercel News
Vercel News
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
B
Blog RSS Feed
D
Docker
V
Visual Studio Blog
博客园 - 叶小钗
美团技术团队
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Python数据分析基础读书笔记 - 3.4 在 Excel 工作簿中读取一...
2020-03-10 · via 少数派

3.4 Excel 工作簿中读取一组工作表

借用书中的原文来讲一下这个功能的用途:

有些情况下,你只需要处理工作簿中的一组工作表.例如,你的工作簿可能包含很多工作表,但是你只需要处理其中的 20 .在这种情况下,可以使用工作簿的 sheetbyindex sheetbyname 函数来处理一组工作表.

在一组工作表中筛选特定行

此示例中,我们将从第一个和第二个工作表筛选出销售额大于 $1900.00 的那些行.

1.基础 Python

文件名称:11excel_value_meets_condition_set_of_worksheets.py

所需文件:sales_2013.xlsx

输出文件:11output.xls

import sys

from datetime import date 

from xlrd import open_workbook,xldate_as_tuple

from xlwt import Workbook

input_file = sys.argv[1]

output_file = sys.argv[2]

output_workbook = Workbook()

output_worksheet = output_workbook.add_sheet('set_of_worksheets')

my_sheets = [0,1] # 表示要处理的工作表的索引值

threshold = 1900.0

sales_column_index = 3

first_worksheet = True

with open_workbook(input_file) as workbook:

data = []

for sheet_index in range(workbook.nsheets):

if sheet_index in my_sheets:

worksheet = workbook.sheet_by_index(sheet_index)

if first_worksheet:

header_row = worksheet.row_values(0)

data.append(header_row)

first_worksheet = False

for row_index in range(1,worksheet.nrows):

row_list = []

sales_amount = worksheet.cell_value(row_index, sales_column_index)

if sales_amount > threshold:

for column_index in range(worksheet.ncols):

cell_value = worksheet.cell_value(row_index, column_index)

cell_type = worksheet.cell_type(row_index, column_index)

if cell_type == 3:

date_cell = xldate_as_tuple(cell_value, workbook.datemode)

date_cell = date(*date_cell[0:3]).strftime('%m/%d/%Y')

row_list.append(date_cell)

else:

row_list.append(cell_value)

if row_list:

data.append(row_list)

for list_index,output_list in enumerate(data):

for element_index,element in enumerate(output_list):

output_worksheet.write(list_index,element_index,element)

output_workbook.save(output_file)


如果您一直从第 2 章看到现在,应该可以发现规律了,又是打开表格,按行列进行读取,满足要求的取出,不满足要求的就进入到下一行列查找,这样的思路贯穿了这本书.接下来看看用 Pandas 怎么处理.

2.Pandas

文件名称:pandas_value_meets_condition_set_of_worksheets.py

所需文件:sales_2013.xlsx

输出文件:11pandas_output.xls

import pandas as pd

import sys

input_file = sys.argv[1]

output_file = sys.argv[2]

my_sheets = [0,1]

threhold = 1900.0

data_frame = pd.read_excel(input_file,sheet_name=my_sheets,index_col=None)

row_list = []

for worksheet_name,data in data_frame.items():

row_list.append(data[data['Sale Amount'].astype(float) > threhold])

filtered_rows = pd.concat(row_list,axis=0,ignore_index=True)

writer = pd.ExcelWriter(output_file)

filtered_rows.to_excel(writer,sheet_name='set_of_worksheets',index=False)

writer.save()


怎么样,是不是依然比用基础 Python 简单得多.