Python Excel操作人口普查
题目:
有一张电子表格的数据,来自于 2010 年美国人口普查.
提示:
censuspopdata.xlsx 电子表格中只有一张表,名为'Population by Census Tract'。每
一行都保存了一个普查区的数据。列分别是普查区的编号(A),州的简称(B),县的名称(C),普查区的人口(D)。
目标:
编写一个脚本,从人口普查电子表格文件中读取数据,并在几秒钟内计算出每个县的统计值。
步骤:
从 Excel 电子表格中读取数据。
计算每个县中普查区的数目。
计算每个县的总人口。
打印结果。
dict = {
'州':{
'县1': {'pop':9000, '人口普查区':2},
},
}
dict[][]['pop']
"""
部分表格截图:
题目要求字典嵌套字典存储统计信息,最外层字典的键是州,州里的键是县,县里的键是pop和人口普查区数量。(每一行第一列是人口普查区区号,一个县有多个普查区;第二列是周;第三列是县;第四列是人数)
在python中操作excel需要openpyxl包
关于openpyxl:
******************基本概念**********
# 工作薄:workbook
# 工作表:sheet
# 活动表: 打开工作薄默认所在的工作表;
# 列(column): A B C D E
# 行(row): 1 2 3 4 5 6
# 单元格(cell)
*****************基本操作************
导入工作薄
wb = openpyxl.load_workbook('excelDemo/example.xlsx')
wb.active 活动表
单元格操作
sheet = wb['example'] 选定一个工作表
sheet.cell(row=3, column=2).value 此工作表3行2列的值
sheet.cell(row=3, column=2, value='www') 将3行2列的值改为www
wb.save(filename="excelDemo/example.xlsx") 保存修改
代码:
#!/usr/bin/env python # coding:utf-8 import openpyxl wb = openpyxl.load_workbook('E:\\c.xlsx') sheet = wb.active tonji = {} for rowA in range(2, sheet.max_row): zhou = sheet.cell(row=rowA, column=2).value xian = sheet.cell(row=rowA, column=3).value if zhou not in tonji.keys(): tonji[zhou] = {} if xian not in tonji[zhou].keys(): tonji[zhou][xian] = {'pop': 0, 'qushu': 0} tonji[zhou][xian]['pop'] += int(sheet.cell(row=rowA, column=4).value) tonji[zhou][xian]['qushu'] += 1 print(tonji)
为了方便我把excel名称改成c放在E盘根目录下。
思路是先建立一个tonji{} 存放统计信息,然后从第二行开始循环取出州名县名,判断州是否在字典里,没有则创建,再判断县是否在州内,没有就创建。最后用+=来累加人口(pop)和区数(qushu)
这样就可以通过字典快速查询各州各县人口信息了