初衷
为什么会有这个想法?
希望通过自己的学习历程,把自己遇到的弯路给大家讲述一下,让大家在自学的路上更加高效一些。另一方面把自己的每天学习经历分享出来,请朋友们探讨经验,请大佬们多加指教,让自己提升更快。还有一点小私心,日更可以逼迫自己更好的学习
为什么学习编程?
兴趣:大学时还没感觉,毕业后经历过李世石与alpha go的世纪大战,感受到了技术给世界带来的改变,由此埋下伏笔。(PS:希望有生之年能自己做一部游戏)
能力:一开始自学时想要提高自己的编程能力。随着学习时间越来越长,发现我得到的不仅是如何编程、怎么去编程、用什么工具编程,带给我更多的是在处理问题上思想的改变。
应用:编程并不是高大上的事情,我的理解是一种可以高效解决问题的途径。学习好知识和手段后,能应用到自己的实际的生活和工作中,这个学习结果就是成功的。能让自己和身边的人有所提升,就是成功的。
经历
自学初期
自学初期已经开始工作了,第一份工作由于上班时间节奏比较慢,觉得自己应该做些什么。于是开始近乎疯狂的自习、看视频、记笔记、查资料等等。当时感觉什么都看的懂,什么都会,编程并不难,这也让我在弯路上越走越远。
思想转变期
直到我想用编程去解决实际问题时,现实给了我一巴掌!自己之前学的忘得一干二净,根本无从下手,这时才突然醒悟之前一直是理论学习,并没有给我带来什么提升,此时我也更加去注重编程思想以及编程实践。与此同时,我也摒弃了只看不做、只说不做的过程。~似乎这道理幼儿园的小朋友都明白,却让我浪费了几个月的时间~
加速成长期
我十分讨厌重复的去做同一件事,所以在学习时我会一天切换好几本书同时学习,拿电脑做比喻应该算是多线程工作。坏处时每本书的学习进度很慢,但同时给我带来的好处是接触的面会广一下,在学习中也都是可以相互借鉴、参考的。
迫于日常可有效利用学习时间太少,想专注的去对待自己的爱好。因此在2019年决定考研,最终在学习了8个月后,忘记了最终报名。~在此吐槽一下自己的时间管理~当然不会放弃,2020年我还会回来的
现在进行时
现在正在看Python语言相关、机器学习相关、考研参考相关的书籍,也正在将这些知识应用到工作中,转化为生产力,这会给我带来些许成就感,让我更加热爱自己的兴趣。
python语言看的是《笨方法学python》,作者比较有趣会让我学习不那么枯燥,由浅入深的渐近感比较好,个人还是比较推荐的。
机器学习看的是经典的西瓜书,这本书让我恶补了大量的统计学知识,是一本让我后悔没有好好上大学的书。里面的思想讲得很透彻,对我提升帮助很大
今日分享
献丑时间到了,要晒自己的作品了,大佬们多指教,拍砖拍死我吧
背景
工作单位每天都会有繁琐的、具备N十万行EXCEL表格处理工作,虽然处理逻辑都是一致的,但仍需要每日重复劳动。再加上单位电脑实在弱鸡(奔腾G处理器,自己领悟吧小伙伴们),一处理就是多半天过去了,希望通过自己的知识改变下自己,其实最主要的还是因为自己懒。
计划
三步走战略:
1、在不打开文件的基础上,可以完全复制内容到另一个文件中。
2、在第一步的基础上增加功能,实现筛选有效数据、数据统计等功能,形成分析报表
3、在功能齐全的情况下形成可视化的程序,能做到看不懂代码的同事也能完成操作(这项我也不知道能不能实现,还没有看过这方面的资料,现在技术那么强大,应该可以的吧)
分享
工具:macbook pro + Pycharm
# -*- coding: utf-8 -*-
#第一步先导入可处理excel文件的openpyxl包
from openpyxl import Workbook
from openpyxl import load_workbook
#第二步读取文件并激活文件的指定sheet(激活后才可引用该sheet的数据)
1、 load_workbook(filename,read_0nly,keep_vba,guess_types,data_only,keep_links)方法:需要填写文件路径及相关信息,也就是我要取的基础报表的路径
2、get_sheet_by_name('XX'):XX为sheet名,通过此方法可激活名为XX的sheet
data_file = load_workbook('/Users/baojiashuo/Desktop/bjsaill.xlsx',False,True,True,True)
data_file_sh = data_file.get_sheet_by_name('bjsaill')
#第三步以行为单位遍历EXCEL将所有的数据拆分为一行一行的,每一行为一个列表,最终形成一个每行数据列表的集合。
举个形象的例子,基础EXCEL内容如下:
A1 A2 A3
B1 B2 B3
我要取到的效果是:
[ (A1,A2,A3),(B1,B2,B3) ]
注:此处的结果并不是EXCEL上看见的值,而是A1取的是“<Cell u'bjsaill'.A1>”样子的值,无法直接填充进新EXCEL文件,因为这不是一个真正的值,我理解为只是一个属性。A2、A3等等同理。第四步会说到.value的方法
cl_cell = list()
cl_value = list()
for row in data_file_sh.rows:
data_file_sz = row
data_cl = cl_cell.append(data_file_sz)
#第四步将上述的结果转化为EXCEL我们可看见的值存放入列表中,效果同上一致
1、.value:可以取指定的单元格对象的值,cl_cell[i][x].value中cl_cell为第三步生成的列表,[i][x]分别代表原EXCEL中第i行第x列的值,这样就可以将值全部存储入列表中,而并非属性了
2、del cl_value_b:清空cl_value_b列表中的数据,如果不清空的话会在列表的第二个元组中呈现出第一个元祖的数据,第三个元组中呈现出第一、二个元祖的数据,以此类推
cl_cell_b = list()
for i in range (0,len(cl_cell)):
cl_value_b = list()
for xin range (0,len(cl_cell[0])):
a = cl_cell[i][x].value
z = cl_value_b.append(a)
cl_cell_b.append(cl_value_b)
del cl_value_b
#第五步打开目标写入文件,激活指定sheet,与第一步一致
data_file_b = load_workbook('/Users/baojiashuo/Desktop/aill.xlsx',False,True,True,True)
data_file_sh_b = data_file_b.active
#第六步遍历所有的值,依次写入目标文件中
.cell(row = p,column = q).value:列表第p行、第q列的值,最小值均为1,因此循环语句中是从1开始。但列表的元素位置是从0开始的,因此取值部分是p-1、q-1。
for p in range (1,len(cl_cell)):
for q in range(1,len(cl_cell[0])):
data_file_sh_b.cell(row = p,column = q).value = cl_cell_b[p-1][q-1]
#第七步保存关闭文件
.save("/Users/baojiashuo/Desktop/{}.xlsx".format("aill")):"/Users/baojiashuo/Desktop/为保存路径、{}.xlsx为保存的格式、aill为保存的名称
data_file_b.save("/Users/baojiashuo/Desktop/{}.xlsx".format("aill"))
data_file_b.close()
最后
由于时间缘故,代码的变量值可读性还比较差,而且并没有做优化,后续完成第二部战略后会全部更新一遍,使可读性更强一些,文中有解释错误或者不到位的地方还请指正,共同学习、共同进步。
上述代码只是单纯的复制粘贴,马上进入第二阶段,添加业务需求功能,让数据直接生成所需要的分析报表
结束语
每天一点小更新、每日前进一大步。初来简书,初次更新,还望海涵。爱学习、爱编程,小白、大牛统统都爱。
三人行必有我师,温故而知新,可以为师!
请多指正!