Python 之 处理 Excel 数据(3) —— 统计数据

一、Excel数据准备

创建一个文件名为“example2.xlsx”的excel文档,并造一些数据放进Sheet1中,用于测试。

 二、程序代码

1.example2.py - 统计人口数据(example2.xlsx)

# 人口统计 把相同的地区人数累加

import openpyxl, pprint

# 数据结构用字典类型存数据(AL-state州;Autauga-county县;tract-地区的和;pop-人数的和)
# 字典里面套字典,州的字典里有’AL,AK...;键值是一个county字典
# AL‘里面有county字典:’Autauga‘,Bibb,Barbour,其中键值是tract和pop

{AL: {Autauga:{tract:5,pop:1912}
        Bibb:{tract:3,pop:432}
        Barbour:{tract:2,pop:1912}
       }
 ‘AK:{
      }
}
countryData[AL][Autauga][tract]


# 打开excel,并读取数据
print(opening workbook)
wb = openpyxl.load_workbook(example2.xlsx)
sheet = wb.active

countryData = {}

# fill in countryData with each citys pop and tracts pop
for row in range(2, sheet.max_row, 1):

    # 获取每行的state county pop数据
    state = sheet[B + str(row)].value
    county = sheet[C + str(row)].value
    pop = sheet[D + str(row)].value

    # 确保state的键值存在(字典的setdefault函数-> 如果没有state这个值,就会加一个空的进去;如果已经存在,则会忽略)
    # 所以当州同样是AL时,只会执行一次(第一次);直到读取到AK’时,会再执行一次;
    countryData.setdefault(state, {})
    # 确保state里的county键值存在(与上面同理,当county同样为Autauga/Bibb时,只会执行一次)
    countryData[state].setdefault(county, {tract: 0, pop: 0})

    # 把当前州-县的 tract累加1,pop人口相加
    countryData[state][county][tract] += 1
    countryData[state][county][pop] += int(pop)

# 把统计的数据写到 text文本,(.py文件可以再重复利用)
print(Writing results...)
resultFile = open(textResult1.py, w)
resultFile.write(allData =  + pprint.pformat(countryData))  # 把字典变量转换成字符串写进文件里

2.example2-1.py - 再次利用上述的统计结果(textResult1.py)

# 引用example2.py的统计结果存放的文件;
import textResult1

print(textResult1.allData[AK][Hidd][pop])

三、结果

1.example2.py的运行结果

生成一个textResult1.py文件

2. example2-1.py的运行结果

经验分享 程序员 微信小程序 职场和发展