介绍
现在交给你一份2010年美国各州县人口普查表:censuspopdata.xlsx。共72864条记录。
每一行代表一个县某统计区的人口数。
需要你统计出:各县统计区数量和人口数。
表格内容长这样:
通过本练习你讲学习到:
- python如何读取excel内容
- 使用字典存储excel统计内容
- 利用pprint格式化字典结构
代码
新建:readCensusExcel.py
#! python3
# readCensusExcel.py - Tabulates population and number of census tracts for
# each county.
import pprint, openpyxl
print('打开工作簿...')
wb = openpyxl.load_workbook('resource/censuspopdata.xlsx')
sheet = wb['Population by Census Tract']
countyData = {}
# 填充
for row in range(2, sheet.max_row+1):
state = sheet['B' + str(row)].value
county = sheet['C' + str(row)].value
pop = sheet['D' + str(row)].value
# 确保州存在
countyData.setdefault(state, {})
# 确保县在州中存在
countyData[state].setdefault(county, {'tracts': 0, 'pop': 0})
# 每一行代表一个县某统计区的人口数
countyData[state][county]['tracts'] += 1
# 追加县的人口数
countyData[state][county]['pop'] += int(pop)
# 将结果写入文件
print('写入结果...')
resultFile = open('census2010.py', 'w')
resultFile.write('allData = ' + pprint.pformat(countyData))
resultFile.close()
print('完成.')
生成的census2010.py 长这样:
读取census2010.py获取指定县的统计区数量和人口数:
新建:read-census2010.py
#! python3
# 读取人口普查统计表
import os
import census2010
census2010.allData['AK']['Anchorage']
anchoragePop = census2010.allData['AK']['Anchorage']['pop']
anchorageTracts = census2010.allData['AK']['Anchorage']['tracts']
print('2010年Anchorage的人口数:' + str(anchoragePop)+',统计区数:'+ str(anchorageTracts))
输出:
2010年Anchorage的人口数:291826,统计区数:55
项目代码和资源地址
https://gitee.com/indexman/python-core