python学习笔记06:元组、字典类型实战之利用openpyxl库处理Excel数据

目录

1 准备工作

1.1 基础知识

1.2 软件准备

2 Excel数据信息获取常用函数函数

2.1 打开excel表格

2.2 获取excel各工作表的名称

2.3 获取某个工作表

2.4 得到某个单元格及其值

2.5 输出某一单元格的列和行索引

2.6 根据索引获取值

2.7 获取整行(列)的数据

2.8 获取指定区间的数据

2.9 打印表格的全部内容

2.10 获取表格行数和列数

2.11 列标字符串到数字的相互转化

3 Excel中写入数据函数及代码

3.1 新建文件并修改表单名称

3.2 不同形式数据写入

4 案例研究

4.1 美国各省各州人口统计的例子

4.2 批量更新表格中的数据


1 准备工作

1.1 基础知识

首先简述Excel中的三个基本概念:

  • workbook工作簿,即你打开的Excel文件
  • worksheet工作表,即sheet1,sheet2,...
  • 行,通常使用1,2,3,...
  • 列,使用A,B,C...

1.2 软件准备

2 Excel数据信息获取常用函数函数

试验数据:

2.1 打开excel表格

wb = openpyxl.load_workbook('example.xlsx')
#参数字符串为excel文件路径

2.2 获取excel各工作表的名称

#一次性获取所有的工作表名称
print(ws.sheetnames)
#遍历工作簿中的sheet,调用title属性获取工作表的名称
for sheet in wb:
    print(sheet.title)

2.3 获取某个工作表

#方式一:使用get_sheet_by_name函数获取
sheet1 = wb.get_sheet_by_name('Sheet1')
#方式二:使用索引访问
sheet2 = wb['Sheet1']
#方式三:获取当前激活的工作表
sheetActive = wb.active

print(sheet2)    #<Worksheet "Sheet1">

2.4 得到某个单元格及其值

print(ws['A1'])    #<Cell 'Sheet1'.A1>
print(ws['A1'].value) #夏季水果

2.5 输出某一单元格的列和行索引

cell = ws['B1']
#方式一:使用行列属性
print('Row {}, columun {} is {}'.format(cell.row, cell.col, cell.value))    #Row 1, Column 2 is 葡萄
#方式二:使用坐标
print('cell {} is {}'.format(cell.coordinate, cell.value))    #cell B1 is 葡萄

2.6 根据索引获取值

#注意row=1之间不能出现空格
print(ws.cell(row=1, column=2).value)

#打印前两行的第二列数据
for i in range(1,2,1):
    print(ws.cell(row=i, column=2).value)

2.7 获取整行(列)的数据

colC = ws['C']    #得到表格的第C列
print(col[1].value)

row2 = ws[6]    #得到表格第6行
print(row2[1].value)

col_range = ws['B:C']    #获取多列数据
row_range = ws[2:6]    #获取多行数据

#按照B1C1, B2C2, B3C3,...的顺序依次输出数据
for col in col_range:
    for cell in col:
        print(cell.value)

2.8 获取指定区间的数据

#获取前两行前两列的数据
for row in ws.iter_rows(min_col=1, max_row=2, max_col=2):
    for cell in row:
         print(cell.value)
#获取2到4列前两行的数据
for col in ws.iter_cols(min_col=2, max_col=4, max_row=2):
    for cell in col:
        print(cell.value, end='\t')
    print(end='\n')


cell_range = ws['A1:C2']
for rowOfCellObjects in cell_range:
    for cellObj in rowOfCellObjects:
        print(cellObj.coordinate, cellObj.value, end='\t')
    print('---------next row----------------')

2.9 打印表格的全部内容

for row in tuple(ws.rows):
    for cell in row:
        print(cell.value, end='\t')
    print('\n')
#tuple(ws.rows)为嵌套元组,元组的每一个元素为代表一行数据的子元组

2.10 获取表格行数和列数

print('{} * {}'.format(ws.max_row, ws.max_column))

2.11 列标字符串到数字的相互转化

from openpyxl.utils import get_column_letter, column_index_from_string
print(get_column_letter(2), get_column_letter(47), get_column_letter(900))    #B AU AHP
print(column_index_from_string('AAH'))    #710

3 Excel中写入数据函数及代码

3.1 新建文件并修改表单名称

import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
print(sheet.title)
sheet.title = 'Happy2019'
print(wb.sheetnames)

wb.create_sheet(index=0, title='First Sheet')
wb.create_sheet(index=1, title='Middle Sheet')
print(wb.sheetnames)

wb.remove_sheet(wb.get_sheet_by_name('Middle Sheet'))
#warning: Call to deprecated function remove_sheet

print(wb.sheetnames)
wb.save('output.xlsx')
wb.close()

3.2 不同形式数据写入

wb = openpyxl.Workbook()
sheet = wb.active
sheet['A1'] = 'hello world'
print(sheet['A1'].value)

#写入序列
ws1 = wb.create_sheet('range name')
for row in range(1, 40):
    ws1.append(range(17))

#写入列表
ws2 = wb.create_sheet('List')
rows = [
    ['Number', 'Batch 1', 'Batch 2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 45, 27],
    [5, 89, 29]
]
for row in rows:
    ws2.append(row)

#写入列号
ws3 = wb.create_sheet('Data')
for row in range(5, 30):
    for col in range(15, 54):
        ws3.cell(column=col, row=row, value=get_column_letter(col))
print(ws3['AA10'].value)


wb.save('output.xlsx')
wb.close()

4 案例研究

4.1 美国各省各州人口统计的例子

数据来源:美国人口统计表

源代码:

import openpyxl, pprint

'''
{'AL':
    {'Autauga':{tract:13, 'pop':人口总数}
    
    }
}
'''


wb = openpyxl.load_workbook('censuspopdata.xlsx')
sheet = wb.active

countryData = {}
#填充每个城市的人口和有几个行政区
for row in range(2, sheet.max_row+1):
    state = sheet['B' + str(row)].value
    country = sheet['C' + str(row)].value
    pop = sheet['D' + str(row)].value

    countryData.setdefault(state, {})
    countryData[state].setdefault(country, {'tract': 0, 'pop': 0})

    #统计该州所包含的区数
    countryData[state][country]['tract'] += 1
    #将每个区的数据进行累加
    countryData[state][country]['pop'] += int(pop)
#将某个区的人口数目输出
print(countryData['AL']['Covington']['tract'])

#打开txt文本将统计的文本写入到文本文档中
print('Writing results...')
resaultFile = open('resault.py', 'w')
resaultFile.write('allData = ' + pprint.pformat(countryData))

4.2 批量更新表格中的数据

修改前
修改后
import openpyxl
wb = openpyxl.load_workbook('fruit.xlsx')
updataData = {
    '草莓': 10,
    '葡萄': 4
}
ws = wb.get_sheet_by_name('Sheet1')
for rowNum in range(2, ws.max_row+1):
    productName = ws.cell(row=rowNum, column=1).value
    if productName in updataData:
        ws.cell(row=rowNum, column=2).value = updataData[productName]
wb.save('modify1.xlsx')
wb.close()

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python 作为一门面向对象的编程语言,支持许多不同的数据类型,这些数据类型可以分为四个主要的类别:列表(list)、元组(tuple)、集合(set)和字典(dictionary)。 1. 列表(list) 列表是一组有序的元素,可以包含任何数据类型。列表用方括号([])表示,元素之间用逗号(,)隔开。列表是可变的,可以添加、删除或更改其中的元素。 例如,下面是一个包含三个元素的列表: ``` my_list = [1, 'hello', 3.14] ``` 2. 元组(tuple) 元组是一组有序的元素,可以包含任何数据类型元组用小括号(())表示,元素之间用逗号(,)隔开。元组是不可变的,不能添加、删除或更改其中的元素。 例如,下面是一个包含三个元素的元组: ``` my_tuple = (1, 'hello', 3.14) ``` 3. 集合(set) 集合是一组无序的元素,不包含重复元素。集合用大括号({})表示,元素之间用逗号(,)隔开。集合是可变的,可以添加或删除其中的元素。 例如,下面是一个包含三个元素的集合: ``` my_set = {1, 'hello', 3.14} ``` 4. 字典(dictionary) 字典是一组无序的键值对(key-value)。键(key)必须是唯一的,值(value)可以是任何数据类型字典用大括号({})表示,键值对之间用冒号(:)隔开,键值对之间用逗号(,)隔开。字典是可变的,可以添加、删除或更改其中的键值对。 例如,下面是一个包含三个键值对的字典: ``` my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'} ``` ### 回答2: Python是一种优秀的编程语言,它有许多强大的特性,其中最重要的就是它的组合数据类型。Python提供了四种不同类型的组合数据类型,分别是列表、元组、集合和字典。这四种类型都具有不同的特点和优劣,可以满足不同的编程需求。 1. 列表(List) 列表是Python中最常用的数据类型之一。它可以同时存储不同类型数据,是一种非常灵活的数据结构。列表中的元素是可变的,从而可以轻松添加、删除和修改元素。列表支持切片操作和排序,可以按照需要对列表进行排序和切片,从而实现不同的操作。列表通常用于存储一组相关的数据,比如记录用户信息或电影列表等。 2. 元组(Tuple) 元组和列表非常类似,不同之处在于元组的元素是不可变的。因此,元组是一种更加安全和高效的数据结构,一旦定义了元组,就无法对其进行修改。元组通常用于存储一些不需要被修改的常量数据,比如程序的配置信息或者一组固定的坐标。 3. 集合(Set) 集合是一种不重复的序列,它可以用于去重和数学方面的操作。集合不支持索引和切片,因为其元素是无序的。但是它具有快速的查找和去重功能,适用于对某些数据进行去重和求交集、并集等数学操作。 4. 字典(Dictionary) 字典是Python中的一种映射数据类型,它可以用键值对的形式存储数据。与列表一样,字典也是可变的,可以添加、删除和修改其中的元素。字典通常用于存储一些关联数据,比如账户名和密码等。 总之,列表、元组、集合和字典是Python中最常用的四种组合数据类型,它们都具有不同的特点和优劣,可以满足不同的编程需求。程序员需要根据具体的任务需求和数据类型的特点选择合适的组合数据类型进行编程。 ### 回答3: Python中有四种重要的组合数据类型:列表、元组、集合、字典。它们分别有不同的特点和用法,下面分别进行详细介绍。 1. 列表:列表是Python中最常用的数据结构之一,它可以包含任意类型数据,并且可以通过位置索引来访问每一个元素。列表可以增加、删除、修改其中的元素,可以进行排序、反转等操作,是非常实用的组合数据类型。例如: ```python # 创建一个列表 list1 = [1, 2, 3, 4] # 访问列表中的元素 print(list1[0]) # 输出1 # 修改列表中的元素 list1[1] = 5 print(list1) # 输出[1, 5, 3, 4] ``` 2. 元组元组是一种不可变的序列,它和列表很像,但是元组中的元素不能被修改。因此,元组在一些不希望被修改的场景下比较常用,例如函数返回多个值时可以使用元组元组也可以通过位置索引来访问其中的元素。例如: ```python # 创建一个元组 tuple1 = (1, 2, 3, 4) # 访问元组中的元素 print(tuple1[0]) # 输出1 # 尝试修改元组中的元素,会报错 tuple1[1] = 5 # TypeError: 'tuple' object does not support item assignment ``` 3. 集合:集合是由一些唯一的、不可变的元素组成的,它可以进行交集、并集、差集等操作,非常适合用来进行数学运算。集合中的元素是没有顺序的,因此不能通过位置索引来访问其中的元素。例如: ```python # 创建一个集合 set1 = {1, 2, 3, 4} # 添加一个元素 set1.add(5) print(set1) # 输出{1, 2, 3, 4, 5} # 计算两个集合的交集 set2 = {3, 4, 5, 6} print(set1 & set2) # 输出{3, 4, 5} ``` 4. 字典字典是一种由键值对组成的映射表,它可以通过键来访问值。字典中的键必须是不可变的,例如字符串、数字等类型,而值可以是任意类型数据字典用于表示一些复杂的数据结构,例如关系型数据中的表。例如: ```python # 创建一个字典 dict1 = {'name': 'Tom', 'age': 20, 'gender': 'male'} # 访问字典中的值 print(dict1['name']) # 输出Tom # 修改字典中的值 dict1['age'] = 21 print(dict1) # 输出{'name': 'Tom', 'age': 21, 'gender': 'male'} ``` 以上就是Python中四种组合数据类型的详细介绍,它们可以满足不同的需求,学会灵活运用这些数据类型,可以提高我们编程的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值