Python之Excel表格数据处理
2021/10/23 22:12:54
本文主要是介绍Python之Excel表格数据处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正式开讲之前,我们需要先了解几个基本的知识点: 1、Python字典(Dictionary) 的setdefault()方法 描述:如果键不存在于字典中,将会添加键并将值设为默认值。 语法:dict.setdefault(key, default=None) 参数: key -- 查找的键值。 default -- 键不存在时,设置的默认键值。 返回值:如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。 实例:
picnicItems = {'cup': 10, 'apple': 5} picnicItems.setdefault('cup', 3) print(picnicItems) picnicItems.setdefault('sausage', 3) print(picnicItems) 执行结果: {'cup': 10, 'apple': 5} {'cup': 10, 'apple': 5, 'sausage': 3} 2、Python用pprint.pformat()函数保存变量 作用:pprint.pformat()函数将列表或字典中的内容转换为文本字符串后返回。这个字符串易于阅读,且符合Python代码语法。假如你有一个字典,保存在一个变量中,你希望保存这个变量和它的内容,以便将来使用。pprint.pformat()函数将提供一个字符串,你可以将它写入.py文件。该文件将成为你自己的模块,如果你需要使用存储在.py文件的变量,就可以先导入它。 示例:详见下方内容。
准备工作
本文主要讲述Python读取Excel表格后的数据处理方法。那么我们需要一个示例的Excel文件,下载地址和提取码如下: 下载链接:https://pan.baidu.com/s/1Qcj3CzSB2i6hcQkdRAVhww 提取码:74gr 说明:请自行下载后,将文件放在Python脚本文件的同级目录下(主要是为了方便操作,避免不必要的错误)
Python读取Excel数据之后的数据处理
完成任务:统计美国每个郡县下面有多少个区和人口,并将统计结果写入一个文件中。 存储数据结构:{'AL': {'Autauga':{'tract': '01001020100', 'pop': 1912}}, 'AL': {'Autauga':{'tract': '01001020200', 'pop': 2736}},...}
示例源码:
# 1.打开工作簿 wb = openpyxl.load_workbook(r"D:\zxt\censuspopdata.xlsx") # 2.从表单中读取数据 ws = wb.active # 定义一个空字典,用于存储数据 countyData = {} # 按行读取数据 for row in range(2, ws.max_row+1): # 读取每行州、郡县、人口的值 state = ws['B' + str(row)].value county = ws['C' + str(row)].value pop = ws['D' + str(row)].value # 判断countyData中是否存在state和county, 如果不存在给一个默认值 countyData.setdefault(state, {}) countyData[state].setdefault(county, {'tract': 0, 'pop': 0}) # 对不同郡县内的区和人口的数量进行累加 countyData[state][county]['tract'] += 1 countyData[state][county]['pop'] += int(pop) # Excel中读取出来的数字是str类型,需要转换下 # 新建一个文件 print("Write results...") resultFile = open('census2010.py', 'w') # 以写的形式打开一个文件 # 将字典countyData转换成字符串,存储在变量allData中,写入resultFile文件 resultFile.write('allData =' + pprint.pformat(countyData)) # 关闭文件 resultFile.close()
经过处理后生成的文件,数据格式如下:
allData ={'AK': {'Aleutians East': {'pop': 3141, 'tract': 1}, 'Aleutians West': {'pop': 5561, 'tract': 2}, 'Anchorage': {'pop': 291826, 'tract': 55}, 'Bethel': {'pop': 17013, 'tract': 3}, 'Bristol Bay': {'pop': 997, 'tract': 1}, 'Denali': {'pop': 1826, 'tract': 1}, 'Dillingham': {'pop': 4847, 'tract': 2}, 'Fairbanks North Star': {'pop': 97581, 'tract': 19}, 'Haines': {'pop': 2508, 'tract': 1}, 'Hoonah-Angoon': {'pop': 2150, 'tract': 2}, 'Juneau': {'pop': 31275, 'tract': 6}, 'Kenai Peninsula': {'pop': 55400, 'tract': 13}, 'Ketchikan Gateway': {'pop': 13477, 'tract': 4}, 'Kodiak Island': {'pop': 13592, 'tract': 5}, 'Lake and Peninsula': {'pop': 1631, 'tract': 1}, 'Matanuska-Susitna': {'pop': 88995, 'tract': 24}, 'Nome': {'pop': 9492, 'tract': 2}, 'North Slope': {'pop': 9430, 'tract': 3}, 'Northwest Arctic': {'pop': 7523, 'tract': 2}, 'Petersburg': {'pop': 3815, 'tract': 1}, 'Prince of Wales-Hyder': {'pop': 5559, 'tract': 4}, 'Sitka': {'pop': 8881, 'tract': 2}, 'Skagway': {'pop': 968, 'tract': 1}, 'Southeast Fairbanks': {'pop': 7029, 'tract': 2}, 'Valdez-Cordova': {'pop': 9636, 'tract': 3}, 'Wade Hampton': {'pop': 7459, 'tract': 1}, 'Wrangell': {'pop': 2369, 'tract': 1}, 'Yakutat': {'pop': 662, 'tract': 1}, 'Yukon-Koyukuk': {'pop': 5588, 'tract': 4}}, 'AL': {'Autauga': {'pop': 54571, 'tract': 12}, 'Baldwin': {'pop': 182265, 'tract': 31}, 'Barbour': {'pop': 27457, 'tract': 9}, 'Bibb': {'pop': 22915, 'tract': 4}, 'Blount': {'pop': 57322, 'tract': 9}, 'Bullock': {'pop': 10914, 'tract': 3}, 'Butler': {'pop': 20947, 'tract': 9}, 'Calhoun': {'pop': 118572, 'tract': 31}, 'Chambers': {'pop': 34215, 'tract': 9}, 'Cherokee': {'pop': 25989, 'tract': 6}, 'Chilton': {'pop': 43643, 'tract': 9}, 'Choctaw': {'pop': 13859, 'tract': 4}, 'Clarke': {'pop': 25833, 'tract': 9}, 'Clay': {'pop': 13932, 'tract': 4}, 'Cleburne': {'pop': 14972, 'tract': 4}, 'Coffee': {'pop': 49948, 'tract': 14}, 'Colbert': {'pop': 54428, 'tract': 14}, 'Conecuh': {'pop': 13228, 'tract': 5}, 'Coosa': {'pop': 11539, 'tract': 3}, 'Covington': {'pop': 37765, 'tract': 14}, 'Crenshaw': {'pop': 13906, 'tract': 6}, 'Cullman': {'pop': 80406, 'tract': 18}, 'Dale': {'pop': 50251, 'tract': 14}, 'Dallas': {'pop': 43820, 'tract': 15}, 'DeKalb': {'pop': 71109, 'tract': 14}, 'Elmore': {'pop': 79303, 'tract': 15}, 'Escambia': {'pop': 38319, 'tract': 9}, 'Etowah': {'pop': 104430, 'tract': 30}, 'Fayette': {'pop': 17241, 'tract': 5}, 'Franklin': {'pop': 31704, 'tract': 9}, 'Geneva': {'pop': 26790, 'tract': 6}, 'Greene': {'pop': 9045, 'tract': 3}, 'Hale': {'pop': 15760, 'tract': 6}, 'Henry': {'pop': 17302, 'tract': 6}, 'Houston': {'pop': 101547, 'tract': 22}, 'Jackson': {'pop': 53227, 'tract': 11}, 'Jefferson': {'pop': 658466, 'tract': 163}, 'Lamar': {'pop': 14564, 'tract': 3}, 'Lauderdale': {'pop': 92709, 'tract': 22}, 'Lawrence': {'pop': 34339, 'tract': 9}, 'Lee': {'pop': 140247, 'tract': 27}, 'Limestone': {'pop': 82782, 'tract': 16}, 'Lowndes': {'pop': 11299, 'tract': 4}, 'Macon': {'pop': 21452, 'tract': 12}, 'Madison': {'pop': 334811, 'tract': 73}, 'Marengo': {'pop': 21027, 'tract': 6}, 'Marion': {'pop': 30776, 'tract': 8}, 'Marshall': {'pop': 93019, 'tract': 18}, 'Mobile': {'pop': 412992, 'tract': 114}, 'Monroe': {'pop': 23068, 'tract': 7}, 'Montgomery': {'pop': 229363, 'tract': 65}, 'Morgan': {'pop': 119490, 'tract': 27}, 'Perry': {'pop': 10591, 'tract': 3}, 'Pickens': {'pop': 19746, 'tract': 5}, 'Pike': {'pop': 32899, 'tract': 8}, 'Randolph': {'pop': 22913, 'tract': 6}, 'Russell': {'pop': 52947, 'tract': 13}, 'Shelby': {'pop': 195085, 'tract': 48}, 'St. Clair': {'pop': 83593, 'tract': 13}, 'Sumter': {'pop': 13763, 'tract': 4}, 'Talladega': {'pop': 82291, 'tract': 22}, 'Tallapoosa': {'pop': 41616, 'tract': 10}, 'Tuscaloosa': {'pop': 194656, 'tract': 47}, 'Walker': {'pop': 67023, 'tract': 18}, 'Washington': {'pop': 17581, 'tract': 5}, 'Wilcox': {'pop': 11670, 'tract': 4}, 'Winston': {'pop': 24484, 'tract': 7}}, ... }
使用处理后的数据
创建一个use_census2010.py文件,写入如下代码,打印其中一个区的人口数量:
import census2010 pop = census2010.allData['AK']['Aleutians East']['pop'] print(pop) 执行结果:3141
最后,觉得对你有用的朋友麻烦点赞、推荐,顶一下,后续精彩内容持续更新中!
这篇关于Python之Excel表格数据处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程