一、前言

大家好,今天我来介绍一下我接的第一个Python单子。我完成这个单子前后不到2小时。

首先我接到这个单子的想法是处理Excel表,在两个表之间建立联系,并通过项目需求,修改excel表中的数据。我是运用面向过程写的,将每一步都放在了不同的函数中,下面让我来介绍一下我是怎么通过自己的思路一步一步完成的。

做完单子后,老师很快就给我转账了,并且没有二次修改,感觉很省心:

投稿这篇文章后,老师又给我50元稿费:

先上客户的需求

二、代码实现及讲解

  1. 模块的导入

主要用到的模块为openpyxl、random

import openpyxl
import random
from  openpyxl.utils.cell import get_column_letter,column_index_from_string

除了运用到openpyxl和random还用到了openpyxl中的utils包下cell模块的两个方法,第一个方法get_column_letter的作用是将整型转换为对应excel中列属性的字符串,例如:12转换为L,50转换为AX

第二个方法是将字符串转换为整型,其本质类似于10进制和27进制之间的转换,当然你也可以自己写,下面附上自己写的行(整型)转换为列(字符串)的代码。

def num_to_string(n):column = n - 1real_colum = ''while column >= 26:value = column // 26column = column % 26real_colum += chr(value + 64)real_colum += chr(column + 65)return real_colum

2.获取“数据原表”中数据

#创建一个全局变量MATERIAL_MESSAGE
MATERIAL_MESSAGE = []
#获取小宛中数据
def get_construct_message():#读取数据原表.xlsx表wb = openpyxl.load_workbook('数据原表.xlsx')#获取获取当前活动工作表,默认为第一个表ws = wb.active#获取在生产记录更新.xlsx中的可以用到的数据存入MATERIAL_MESSAGE中for row in range(1,ws.max_row + 1):if ws[f'A{row}'].value == '日期':for i in range(ord('B'),ord('I')):material = []#将日期转换为与生产记录更新中相对应写法的形式date = ws[f'B{row}'].value.translate(str.maketrans('年月','--'))date = date.replace('号','')material.append(date)i = chr(i)material.append(ws[f'{i}{row + 1}'].value)material.append(ws[f'{i}{row + 3}'].value)MATERIAL_MESSAGE.append(material)print(MATERIAL_MESSAGE)

3.获取生产记录更新表中的日期和材料

# 将客户要求的对应数据存入字典中
TABLES = {"水泥":"水泥1","粉煤灰":"煤灰","河沙":"沙1","粗骨料1":"石1","粗骨料2":"石2","减水剂":"外加剂","水":"水"}
#存入生产记录更新表的日期和其所在的行数
DATE = []
#存入生产记录更新表的材料和其所在的列数
MATERIAL = []
wb = openpyxl.load_workbook('生产记录更新.xlsx')
ws = wb.active
#获取日期
def get_date():for row in range(3,ws.max_row + 1):#将日期进行分割合并转换成与MATERIAL_MESSAGE中对应日期的格式date = str(ws[f'B{row}'].value).split()[0]date_list = date.split('-')if '0' in date_list[1]:date_list[1] = date_list[1].replace('0','')if '0' in date_list[2]:date_list[2] = date_list[2].replace('0','')date = '-'.join(date_list)DATE.append([date,row])pprint.pprint(DATE)#获取材料
def get_material():n = 0for column in ws[1]:n += 1#判断该单元格的内容是否在TABLES中if column.value in TABLES.values():#运用行列转换的方法进行转换MATERIAL.append([column.value,get_column_letter(n - 1)])pprint.pprint(MATERIAL)

DATE表部分数据

MATERIAL表数据

4.对生产数据更新表中数据的修改

#两个参数分别为材料的类型和所在的列数
def update_default(matrial,letter):for row in range(3,ws.max_row + 1):#判断单元格是否为空if ws[f'{letter}{row}'].value != None:for i in range(len(MATERIAL_MESSAGE)):#需求条件,要将连个表中的日期和材料类型进行一一对应if DATE[row-3][0] == MATERIAL_MESSAGE[i][0] and matrial == TABLES[MATERIAL_MESSAGE[i][1]]:#修改形参letter对应列的每个符号要求的单元格对应的设定值ws[f'{letter}{DATE[row - 3][1]}'].value = MATERIAL_MESSAGE[i][2]#分别获取该列列号的下两列对应的列号letter_random = get_column_letter(column_index_from_string(letter) + 2)letter_real = get_column_letter(column_index_from_string(letter) + 1)#判断该列是否在这三列中,若在其中则得到-2到2之间的随机数,否则-1到1之间的随机数,并更新误差值if letter in ('AV','BB','BE'):ws[f'{letter_random}{DATE[row - 3][1]}'].value = round(random.uniform(-2, 2), 1)else:ws[f'{letter_random}{DATE[row - 3][1]}'].value = round(random.uniform(-1, 1), 1)#运用设定值和误差值更新中间的实际值ws[f'{letter_real}{DATE[row - 3][1]}'].value = round(ws[f'{letter}{DATE[row - 3][1]}'].value * (1 + ws[f'{letter_random}{DATE[row - 3][1]}'].value * 0.01),2)

5.最后,调用函数并保存数据

def main():get_construct_message()get_date()get_material()for i in MATERIAL:update_default(i[0],i[1])wb.save('生产记录更新.xlsx')if __name__ == "__main__":main()

三、效果展示

修改前部分数据

修改后部分数据

四、结尾

通过自己的的两个小时的努力奋战完成了这个单子,总的来说,难度不在于怎么修改数据,而是在于怎么把两个表相互关联,通过这次接单让我对excel表能够更加熟练地进行操作,接单既能提升自己的能力,又能赚点外快,何乐而不为呢。

想要追赶Python的热潮,却无门路?

门槛低、薪资高、发展好… Python+大数据开发作为2022年最有“钱途”的岗位之一 ,是很多应届生和转行小伙伴们的首选。

学习 Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。

Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…

这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

本份资料已开源,需要高清版的朋友可以去我的Gitee查看。

下面来看看python每个分支知识点的详细内容,以及配套学习文件。

一、Python基础和高级编程

对于新手学Python而言,基础和高级编程这一块是很重要的,因为如果你没有学过它们,直接去学习某个方向,你将会一脸懵逼,所以这是绕不过的,打好这一块的基础之后,你完全可以无障碍地进阶Python的任何方向。

学习资源:

以上所有的文件都已经打包好了,需要的朋友请移步文末。

二、爬虫

应该有很多人都对爬虫感兴趣吧?不只是Python可以写爬虫,还有很多语言都能写,但Python是公认的最适合的语言了。

爬虫不只是爬虫工程师会用到,业余时间也可以用来爬点自己想要的东西,又或者是做兼职也是可以的,甚至非程序员在工作方面也用得到,比如电商人员爬取大量同行数据来分析出市场的情况,在大量数据的基础上研究新的电商方案。


学习资源:

三、数据分析

数据分析也是当下的一大热门方向,用Python来做的话比其他语言强很多,但往往只会数据分析还是差点意思,如果能具备爬虫能力来爬取数据就更好了。

以上所有的文件都已经打包好了,需要的朋友请移步文末。

四、数据库与大数据开发


五、算法与人工智能

机器学习是人工智能的必经之路,核心就在这里,所以想往人工智能去发展的人,可以学学机器学习,但同时也有个前提,人工智能是公认存在门槛的,应届毕业生不是研究生以上学历或者大学中出类拔萃的人,基本上很难找到工作,所以也请考虑清楚。


学习资料:

六、Python全栈学习路线

以上所有的文件都已经打包好了。愿你们在自学Python的路上顺风顺水、学有所成!

需要完整版学习文件的朋友可以去我的Gitee查看。

这个时代的年轻人,一定需要有自己的闪光点,而不是仅仅做好专业内的事情。

只要你有一技之长、拥有逆风破浪的能力,面对未知的困难,依然能够披荆斩棘。

把平时的碎片时间抽出一小块来学习Python,通过提升自己,去享受你的人生,去看更大的世界。

Python新手接了第一个副业单子,2小时完成:Python修正excel表格数据相关推荐

  1. Python写入和读取Excel表格数据

    Python作为一个强大的数据处理工具,这里简单介绍下python读取写入excel表格数据. 一.python写入excel表格 导入xlwt模块 生成一个空的excel表格,命名为my_test. ...

  2. python提取excel表格数据

    文章目录 一.说明: 二.带着我发现的来个问题,寻找解决方法: 0.安装模块`xlrd` 1.解决哪一行是开始的行的问题: 2.解决,表格中有合并单元格的问题: 3.结合1和2的问题解决,弄个自动化识 ...

  3. 【Unity】安装配置Python使用protobuf转换Excel表格数据并在unit中使用

    前言: 之前使用NPOI插件编写的导表工具,其实就是直接将数据进行序列化,解析时还需要进行反序列化,步骤比较繁复,最近看到Google的一个开源的项目protobuf,不仅可以用于进行excel表格数 ...

  4. python使用openpyxl处理excel表格数据

    python使用openpyxl处理excel表格数据 前言 一.安装openpyxl包 二.读取excel数据 1. 获取excel表格的页码 2. 获取excel表格某一行的数据 3. 获取exc ...

  5. python读excel表格数据绘制图表_Python读取Excel数据生成图表 v2.0

    原博文 2020-06-15 15:09 − ## Python读取Excel数据生成图表 v2.0 ## 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用 ...

  6. 遇到“脏乱差”的Excel数据怎么办??利用Python规范Excel表格数据(数据清洗)

    此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉. 本文章纯野生,无任何借鉴他人文章及抄袭等.坚持原创!! 1. 前言 本文章主要介绍利用Python去规范Exc ...

  7. python导入excel表格-Python 将Excel表格数据导入MySQL数据库

    今天分享一个刚刚完成的Python脚本,一个实用的小技能,就是利用Python代码,将EXCEL表格数据导入到MySQL数据库中!话不多说,下面代码示例. Excel表格数据.jpg 1示例代码: i ...

  8. python读取excel表格数据

    python操作excel主要用到xlrd和xlwt两个库,xlrd读取表格数据,支持xlsx和xls格式的excel表格:xlwt写入excel表格数据 一.python读取excel表格数据 1. ...

  9. python 如何读取excel表格数据

    文章目录 前言 python 读取excel 表格 前言 如何用python读取excel表格数据呢 ? python 读取excel 表格 首先需要配置好环境,需要下载 xlrd 包: # 如果不指 ...

  10. Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...

最新文章

  1. 【hdu 1573 X问题】【 hdu3579 Hello Kiki 】【poj 2891】
  2. 单例模式之恶汉模式(详解)
  3. leetcode双指针(python与c++)
  4. MDP动态规划解法(三)
  5. springboot数据源oracle,springboot+mybatis中使用多数据源oracle数据库
  6. lwip路由实现_TCP控制块《LwIP协议栈源码详解——TCP/IP协议的实现》
  7. office每次退出时,提示更改会影响共用模板normal
  8. POJ1053 Set Me
  9. 企业或个人域名备案怎么弄
  10. strom 在linux下部署、基本命令
  11. 高清网络视频监控系统中交换机的选择
  12. 2020年创业风口:社交电商
  13. 数据挖掘之坦坦尼克号获救情况分析
  14. 字符串分割 strsep 函数
  15. 妈妈的味道,从一碗北极虾荠…
  16. js特效------实例
  17. 效用最大化准则:离散选择模型的核心(Probit模型上篇)——离散选择模型之七
  18. jstree Api 中文翻译文档
  19. 【一】Java语言基础思维导图
  20. 链表2--JZ25复杂链表的复制JZ36两个链表的第一个公共结点JZ55链表中环的入口结点JZ56删除链表中重复的结点

热门文章

  1. 虚拟vpc服务器搭建,服务器搭建vpc
  2. tplogin怎么创建虚拟服务器,TP-Link路由器作为二级路由器用的设置方法
  3. 2022基金定投数字货币理财程序源码
  4. 读书笔记《能力陷阱》第三章:建立良好的人际关系网络
  5. 组装三代番木瓜基因组——by Serenity Fang
  6. Falsy Bouncer
  7. 比较好些的计算机论文题目,计算机论文题目大全(24页)-原创力文档
  8. 电脑速度慢是什么问题导致的
  9. React 组件的三种写法总结
  10. 介绍requests+threading多线程爬虫,提取采用xpath 和正则两种,介绍线程锁