打印

python数据处理之:excel数据

[复制链接]
2009|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2021-10-29 14:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
keer_zu|  楼主 | 2021-10-29 14:01 | 只看该作者
以下是一些实例:

这个方法用到了计数器原理。先打印前10行,看有没有想要的数据,如果没有再打印11-20行,这样一个区间一个区间的排查,直到确定准确的行数。

代码:
import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

count = 0
for i in range(sheet.nrows):
    if count < 10:
        row = sheet.row_values(i)
        print(i, row)
    count += 1

使用特权

评论回复
板凳
keer_zu|  楼主 | 2021-10-29 14:01 | 只看该作者
先打印排查了前10行,查看控制台输出没有找到想要的国家数据,继续调整试验:
import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

count = 0
for i in range(10, sheet.nrows):
    if count < 10:
        row = sheet.row_values(i)
        print(i, row)
    count += 1

使用特权

评论回复
地板
keer_zu|  楼主 | 2021-10-29 14:02 | 只看该作者
我们已经知道了前10行没有想要的数据,所以 range 直接改成 range(10, sheet.nrows) 从第10行开始打印,其他代码不变。再次运行程序,得到如下输出:


可以看到从第14行开始出现了国家名字,这就是我们要找的数据。

使用特权

评论回复
5
keer_zu|  楼主 | 2021-10-29 14:03 | 只看该作者
三、组装数据
找到想要的数据在第几行第几列之后,就可以按之前定义的格式写代码提取组装数据啦。

import xlrd
import pprint

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

# 定义存放数据的字典
data = {}
for i in range(14, sheet.nrows):
    row = sheet.row_values(i)
    # 取出国家名字
    country = row[1]
    # 按照给定的格式组装数据
    data[country] = {
        'child_labor': {
            'total': [row[4], row[5]],
            'male': [row[6], row[7]],
            'female': [row[8], row[9]],
        },
        'child_marriage': {
            'married_by_15': [row[10], row[11]],
            'married_by_18': [row[12], row[13]],
        }
    }
    # 最后一个国家是 Zimbabwe,判断到 Zimbabwe 之后就 break 跳出循环
    if country == 'Zimbabwe':
        break

# 打印数据
pprint.pprint(data)


打印复杂对象时使用 pprint 格式更美观。

使用特权

评论回复
6
keer_zu|  楼主 | 2021-10-29 14:03 | 只看该作者
四、总结
处理 Excel 的三个库:xlrd,xlwt,xlutils。根据需要决定用哪些库。
解析出 Excel 之后,通过两种方法确定想要数据的位置:用图形化界面打开直接观察和通过程序一步步筛选。如果不知道一个对象都有什么命令,可以打印 dir(obj) 来查看,其中 obj 是想要查看相关命令的对象。
提前想好最终想输出的格式,有格式之后组装数据会比较容易。
打印复杂对象时使用 pprint 格式更美观。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1349

主题

12426

帖子

53

粉丝