介绍

现在交给你一份2010年美国各州县人口普查表:censuspopdata.xlsx。共72864条记录。

每一行代表一个县某统计区的人口数。

需要你统计出:各县统计区数量和人口数。

表格内容长这样:

Python之读取Excel-LMLPHP

 

通过本练习你讲学习到:

  1. python如何读取excel内容
  2. 使用字典存储excel统计内容
  3. 利用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 长这样:

Python之读取Excel-LMLPHP

 

读取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

 

 

08-26 22:03