3- pandas excel 操作
Excel 基本操作1234import pandas as pdimport numpy as npdf = pd.read_excel(...\\Excel-Tutorial.xlsx', header=[1]).reset_index()# 格式为: DataFrame
参数header=[1]指定使用Excel中的第二行作为标题。
输出Excel,并建立不同的sheet12345#import xlwt#from xlwt import Workbookwriter = pd.ExcelWriter('...\\', engine='xlsxwriter')df.groupby(['parents'])['son'].to_excel(writer,sheet_name='p_son')df.groupby(['parents'])['fish'].to_excel(writer,sheet_name='fish')
document.querySelectorAll('.github-emoji')
.forEach(el => {
...
数据结构与算法-排序与查找-映射抽象数据类型
排序与查找-映射抽象数据类型[TOC]
抽象数据类型“映射”:ADT Map
Python最有用的数据类型之一“字典”
字典是一种可以保存key-data键值对的数据类型其中关键码key可用于查询关联的数据值data
这种键值关联的方法称为“映射Map”
ADT Map的结构是键-值关联的无序集合
关键码具有唯一性通过关键码可以唯一确定一个数据值
ADT Map定义的操作如下:Map():创建一个空映射,返回空映射对象;put(key, val):将key-val关联对加入映射中,如果key已存在,将val替换旧关联值;get(key):给定key,返回关联的数据值,如不存在,则返回None;del:通过del map[key]的语句形式删除keyval关联;len():返回映射中key-val关联的数目;in:通过key in map的语句形式,返回key是否存在于关联中,布尔值
用一个HashTable类来实现ADT Map, 该类包含了两个列表作为成员其中一个slot列表用于保存key另一个平行的data列表用于保存数据项
在slot列表查找到一个key的位置 ...
数据结构与算法-排序与查找-归并与快排
排序与查找-归并与快排[TOC]
归并排序Merge Sort分治策略在排序中的应用,归并排序是递归算法, 思路是将数据表持续分裂为两半, 对两半分别进行归并排序
递归的基本结束条件是:数据表仅有1个数据项,自然是排好序的;
缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一;
调用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并,得到排好序的数据表
123456789101112131415161718192021222324252627282930313233343536def mergeSort(alist): print("Splitting ",alist) if len(alist)>1: mid = len(alist)//2 lefthalf = alist[:mid] righthalf = alist[mid:] mergeSort(lefthalf) mergeSort(righthalf) i=0 j=0 ...
数据结构与算法-排序与查找-冒泡和选择
排序与查找-冒泡和选择[TOC]
冒泡排序Bubble Sort
冒泡排序的算法思路在于对无序表进行多趟比较交换,
每趟包括了多次两两相邻比较, 并将逆序的数据项互换位置, 最终能将本趟的最大项就位
经过n-1趟比较交换, 实现整表排序❖每趟的过程类似于“气泡”在水中不断上浮到水面的经过
第1趟比较交换, 共有n-1对相邻数据进行比较一旦经过最大项,则最大项会一路交换到达最后一项
第2趟比较交换时, 最大项已经就位, 需要排序的数据减少为n-1, 共有n-2对相邻数据进行比较
直到第n-1趟完成后, 最小项一定在列表首位, 就无需再处
12345678910111213141516171819202122232425262728def bubbleSort(alist): for passnum in range(len(alist)-1,0,-1): for i in range(passnum): if alist[i]>alist[i+1]: temp = alist[i] ...
数据结构与算法-排序与查找-查找
排序与查找-查找[TOC]
顺序查找Sequential Search无序表
如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系。
在Python List中, 这些数据项的存储位置称为下标(index) , 这些下标都是有序的整数。
通过下标, 我们就可以按照顺序来访问和查找数据项, 这种技术称为“顺序查找
要确定列表中是否存在需要查找的数据项
首先从列表的第1个数据项开始,
按照下标增长的顺序,逐个比对数据项,如果到最后一个都未发现要查找的项,那么查找失败
123456789101112131415def sequentialSearch(alist, item): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == item: found = True else: pos = pos+1 return foundtestlist = ...
scipy-样条插值interpolate
scipy-样条插值interpolate[TOC]
python scipy样条插值函数:interpolateinterp1d 函数class scipy.interpolate.interp1d(x, y,kind=’linear’, axis=- 1**, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)**[source]
样条插值
样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法。插值样条是由一些多项式组成的,每一个多项式都是由相邻的两个数据点决定的,这样,任意的两个相邻的多项式以及它们的导数(不包括仇阶导数)在连接点处都是连续的。 连接点的光滑与连续是样条插值和前边分段多项式插值的主要区别。
在Scipy里可以用**scipy.interpolate模块下的interpld函数**实现样条插值。 SciPy的0.14.0版本里样条插值方式有:'linear','zero', 'slinear', 'quadratic'(2次), 'cubic'(3次), 4, 5等。
...
learning-bash-6-'-'参数的传递
参数传递:bash特殊变量:\$0, \$#, \$*, \$@, \$?, \$\$和命令行参数 。详见learning-bash-2
getopsgetopts是一个解析脚本选项参数的工具。
语法格式:getopts [option[:]] [DESCPRITION] VARIABLE
option: 表示为某个脚本可以使用的选项.
“:”: 如果某个选项(option)后面出现了冒号(”:”),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)
VARIABLE:表示将某个选项保存在变量VARIABLE中
getopts是linux系统中的一个内置变量,一般用在循环中。每当执行循环是,getopts都会检查下一个命令选项,如果这些选项出现在option中,则表示是合法选项,否则不是合法选项。并将这些合法选项保存在VARIABLE这个变量中。getopts还包含两个内置变量,及OPTARG和OPTIND
OPTARG就是将选项后面的参数(或者描述信息DESCPRITION)保存在这个变量当中。
OPTIND:这个表示命令行的下一个选项或参数的索引(文件名不算选项 ...
数据结构与算法-动态规划-背包问题
动态规划-背包问题(上接递归)[TOC]
动态规划:
动态规划算法采用了一种更有条理的方式来得到问题的解
找零兑换的动态规划算法从最简单的“1分钱找零”的最优解开始, 逐步递加上去, 直到我们需要的找零钱数
在找零递加的过程中, 设法保持每一分钱的递加都是最优解, 一直加到求解找零钱数, 自然得到最优解
递加的过程能保持最优解的关键是, 其依赖于更少钱数最优解的简单计算, 而更少钱数的最优解已经得到了。
问题的最优解包含了更小规模子问题的最优解, 这是一个最优化问题能够用动态规划策略解决的必要条件
博物馆大盗问题大盗潜入博物馆, 面前有5件宝物, 分别有重量和价值, 大盗的背包仅能负重20公斤, 请问如何选择宝物, 总价值最高?
item
weight
value
1
2
3
2
3
4
3
4
8
4
5
8
5
9
10
我们把$m(i, W$记为:前$i(1<=i<=5)$个宝物中,组合不超过$W(1<=W<=20)$ 重量,得到的最大价值$m(i, W)$应该是$m(i-1, W)$和$m(i-1, W- ...