python操作excel库xlwings---6、实例需求分析
python操作excel库xlwings---6、实例需求分析
一、总结
一句话总结:
解决实际问题的时候,明确需求,问题更加容易解决,而且处理数据之前,也需要明确数据是否需要规整,数据是否缺失
二、实例需求分析
博客对应课程的视频位置:6、实例需求分析-范仁义-读书编程笔记
https://www.fanrenyi.com/video/34/313
1、示例需求分析
需求
更加直观一点
操作步骤
步骤一:先处理数据
- 获取每个市的每一年的GDP(数据规整,不用处理)
- 处理地级市欧式距离(数据不好取,可以生成一个283*283的表,来表示城市之间的距离)
- 城市行政区域面积(数据规整,不用处理)
步骤二:按公式计算结果
2、格式化数据
处理地级市欧式距离(数据不好取,可以生成一个283*283的表,来表示城市之间的距离)
In [1]:
# 1、从excel中读地级市的欧氏距离
# 2、规整数据,生成一个283*283的表
# 3、将规整化的数据写入excel中
In [1]:
# 1、读地级市的欧氏距离
import xlwings as xw
# 应用->工作簿->工作表->范围
# 应用
app = xw.App(visible=True,add_book=False)
# 工作簿
wb = app.books.open("283地级市的欧氏距离.xlsx")
# 工作表
sht = wb.sheets["283地级市欧式直线距离(千米)"]
# 范围
data = sht.range("a2:i80090").value
# 保存excel
wb.save()
# 关闭excel程序
wb.close()
app.quit()
In [2]:
print(len(data))
print(data[0])
print(data[80088])
In [3]:
# 2、规整数据,生成一个283*283的表
# 初始化一个283*283的表,值全是0
distance = [[0]*283 for _ in range(283)]
# 向这个表里面填值
for i in data:
distance[int(i[1])-1][int(i[5])-1]=i[8]
print(distance[0])
In [4]:
# 3、将规整化的数据写入excel中
# 应用->工作簿->工作表->范围
# 应用
app = xw.App(visible=True,add_book=False)
# 工作簿
wb = app.books.add()
# 工作表
sht = wb.sheets["sheet1"]
# 范围
sht.range("a1").value=distance
# 保存excel
wb.save("规整化的283地级市的欧氏距离.xlsx")
# 关闭excel程序
wb.close()
app.quit()
3、按公式计算结果
处理地级市欧式距离(数据不好取,可以生成一个283*283的表,来表示城市之间的距离)
In [1]:
# 1、从excel中读地级市的欧氏距离
# 2、规整数据,生成一个283*283的表
# 3、将规整化的数据写入excel中
In [1]:
# 1、读地级市的欧氏距离
import xlwings as xw
# 应用->工作簿->工作表->范围
# 应用
app = xw.App(visible=True,add_book=False)
# 工作簿
wb = app.books.open("283地级市的欧氏距离.xlsx")
# 工作表
sht = wb.sheets["283地级市欧式直线距离(千米)"]
# 范围
data = sht.range("a2:i80090").value
# 保存excel
wb.save()
# 关闭excel程序
wb.close()
app.quit()
In [2]:
print(len(data))
print(data[0])
print(data[80088])
In [3]:
# 2、规整数据,生成一个283*283的表
# 初始化一个283*283的表,值全是0
distance = [[0]*283 for _ in range(283)]
# 向这个表里面填值
for i in data:
distance[int(i[1])-1][int(i[5])-1]=i[8]
print(distance[0])
In [4]:
# 3、将规整化的数据写入excel中
# 应用->工作簿->工作表->范围
# 应用
app = xw.App(visible=True,add_book=False)
# 工作簿
wb = app.books.add()
# 工作表
sht = wb.sheets["sheet1"]
# 范围
sht.range("a1").value=distance
# 保存excel
wb.save("规整化的283地级市的欧氏距离.xlsx")
# 关闭excel程序
wb.close()
app.quit()