Python Excel操作人口普查

题目:

有一张电子表格的数据,来自于 2010 年美国人口普查.

提示:
   censuspopdata.xlsx 电子表格中只有一张表,名为'Population by Census Tract'。每
一行都保存了一个普查区的数据。列分别是普查区的编号(A),州的简称(B),县的名称(C),普查区的人口(D)。


目标:
   编写一个脚本,从人口普查电子表格文件中读取数据,并在几秒钟内计算出每个县的统计值。


步骤:
   从 Excel 电子表格中读取数据。
   计算每个县中普查区的数目。
   计算每个县的总人口。
   打印结果。



dict = {
    '州':{
        '县1': {'pop':9000, '人口普查区':2},
    },

}

dict[][]['pop']

"""

部分表格截图:

Python Excel操作人口普查


题目要求字典嵌套字典存储统计信息,最外层字典的键是州,州里的键是县,县里的键是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)

这样就可以通过字典快速查询各州各县人口信息了