pandas
默认读取excel时
第一行为默认索引行,不作为数据存在。.read_csv("test.cvs",header=None)#取消将第一行作列属性
第一列默认为数据
1 | data_table = pd.read_excel('data.xlsx') |
生成excel时-有小坑
1 | dataframe = pd.DataFrame(data) |
python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca
pandas 用excelwriter生成表格,运行正常但是没有生成文件?
目的是为了多条数据从指定行写入数据(python字典)
原始代码
1 | writer = pd.ExcelWriter(filepath) |
修改后成功代码
1 | with pd.ExcelWriter(filepath) as writer: |
成功得有点莫名。。(看with的用法-ctrl+鼠标点击直达,大概能理解了.)
At least one sheet must be visible
maybe是写入的数据有问题
TypeError: sequence item 0: expected str instance, numpy.int64 found
“ “.jion(str), jion分割的必须是字符串!!,如果传入的列表内都是str则没问题,但我们传的列表内是含有int的!所以会报类型错误参考
seaborn
【数据分析】seaborn的 heatmap热力图的cmap参数选项
项目requirements.txt
当前虚拟环境
1 | pip freeze > requirements.txt |
当前项目
1 | # 安装 |
注意 --encoding=utf8
为使用utf8编码,不然可能会报UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position 406: illegal multibyte sequence 的错误。
--force
强制执行,当 生成目录下的requirements.txt存在时覆盖。
安装
1 | pip install -r requirements.txt |
_、--
和__xx__
的区别
_ 在类的方法或属性前面添加,意味着该方法或属性不该被调用,不属于API。类似于C++中类的私有方法
--
真正作用是用来避免子类覆盖其内容,防止子类重写,若子类重写后,只能在该子类的内部中使用。这个方法不能被重写,它只允许在该类的内部中使用。__xx__
经常是操作符或本地函数调用的magic methods。在特殊的情况下,它只是python调用的hook。例如,init()函数是当对象被创建初始化时调用的;new()是用来创建实例。
字典与匿名函数的巧妙组合
python中没有switch/case以及三目运算符
优雅实现switch/case
1 | # 情况1: 范围判断 |
with语句
需要事先做一些设置,事后做一些清理.(类似于try/excption/finally)
1 | with open(r'c:\test.txt', 'r') as f: |
with后面接的对象返回的结果赋值给f。此例当中open函数返回的文件对象赋值给了f;with会自已获取上下文件的异常信息。
模块调用
python只用另一模块中的类, 为什么不包含在类中的代码也会被执行?
因为引用了其他模块的函数,但是该模块里面有不是包含在函数中的代码,你在引用该模块中dao的函数时候会先执行被引用模块的代码。
深拷贝与浅拷贝-巨坑
大佬写的很清楚:Python List的赋值方法
Python中关于对象复制有三种类型的使用方式,赋值、浅拷贝与深拷贝。
赋值:对象的赋值就是简单的对象引用,他们指向同一片内存,b是a的别名,是引用(同一个内存地址)。
浅拷贝.copy()
: 浅拷贝会创建新对象,其内容是原对象的引用。二者包含的元素的地址是相同的。是它仅仅只拷贝了一层,在a中有一个嵌套的list,如果我们修改了它,情况就不一样了。
深拷贝.deepcopy()
:深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。因而,它的时间和空间开销要高。因为深拷贝出来的对象根本就是一个全新的对象,不再与原来的对象有任何关联。
二维列表定义与赋值
1 | #错误写法 |
原因:本质上是“浅拷贝”的锅,二者包含的元素的地址是相同的。上面的定义手法是将第一行的元素的地址给了下面行,所以改变的时候,会出现整列一起改变的情况。
1 | # 正确写法 --- 每一行创建不同的元素 |
二维数组定义与初始化
1 | # 方法一: |
代码精炼
绘制三维图
1 | import matplotlib.pyplot as plt |
按照优先级快排算法(升序)
1 | def partition(arr, low, high, rule): |
双栈A*算法
参考:
图算法 - 只需“五步” ,获取两节点间的所有路径(非递归方式)
可实现图中任意两点所有路径以及(优先级排序后的最少节点-距离终点最近/最短路径-距离起点and终点最近)的路径
1 | # 找寻起点与终点的最少节点的路径 |
遗传算法
参考:
1 |