处理Excel文件主要用三个库
xlrd:读取
xlwt:写入
xlutils:Excel高级操作工具`
import xlrd
# 打开Excel工作簿
book = xlrd.open_workbook(r'F:\pycharm\py_workspace\3 Python数据分析实例数据\data\chp4\SOWC 2014 Stat Tables_Table 9.xlsx')
Excel工作簿(book)可以有多个工作表(sheet)
获取数据要先找到指定工作表(sheet)
# # 遍历工作簿的工作表名称有哪些
# for sheet in book.sheets():
# print(sheet.name)
# '''
# 输出:
# Data Notes
# Table 9
# '''
# 通过名称找到Table 9工作表
sheet = book.sheet_by_name('Table 9')
报错
解决方法 : 名字后面加一个空格
取到每列每个单元格:
# 获得sheet的行数heet.nrows 遍历取出每行内容sheet.row_values()
for i in range(sheet.nrows):
row = sheet.row_values(i)
# 遍历每一行的每一个单元格
for cell in row:
print(cell)
分析童工和童婚数据 写成字典格式输出
完整代码如下
'''
处理Excel文件主要用三个库
xlrd:读取
xlwt:写入
xlutils:Excel高级操作工具
'''
import pprint
import xlrd
# 打开Excel工作簿
book = xlrd.open_workbook(r'F:\pycharm\py_workspace\3 Python数据分析实例数据\data\chp4\SOWC 2014 Stat Tables_Table 9.xlsx')
# # 遍历工作簿的工作表名称有哪些
# for sheet in book.sheets():
# print(sheet.name)
# '''
# Data Notes
# Table 9
# '''
# 通过名称找到Table 9工作表
sheet = book.sheet_by_name('Table 9 ')
# 目标:取得国家的数据并以字典形式输出(从第14行开始)
data = {}
# 获得sheet的行数heet.nrows 遍历取出每行内容sheet.row_values()
for i in range(14, sheet.nrows):
# 此时row是列表 包含每一行的内容的列表 可以通过索引取值
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]],
}
}
pprint.pprint(data['Afghanistan'])