2020.02.04
Note1
数据库内外连接原理
- 内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
- 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
- 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
- 右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
- 全外连接:左外连接 union 右外连接。
pandas merage
pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来,语法如下:
1 | merge(left, right, how='inner', on=None, left_on=None, right_on=None, |
作为一个功能完善、强大的语言,python的pandas库中的merge()支持各种内外连接。
- left与right:两个不同的DataFrame
- how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner
- on : 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键
- left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。
- right_on:右则DataFrame中用作 连接键的列名
- left_index:使用左则DataFrame中的行索引做为连接键
- right_index:使用右则DataFrame中的行索引做为连接键
- sort:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能
- suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(‘_x’,’_y’)
- copy:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能
- indicator:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自己于左边(left_only)、两者(both)
Note2
pandas表中每一行的多列进行计算
方法1:
要对DataFrame的多个列同时进行运算,可以使用apply,例如col3 = col1 + 2 * col2:
1 | df['col3'] = df.apply(lambda x: x['col1'] + 2 * x['col2'], axis=1) |
其中x带表当前行,可以通过下标进行索引。
方法2:
1 | df['col3'] = list(map(lambda x,y:x+2*y,x['col1'],x['col2'])) |
2020.2.7
Note3
pandas对表中某一个坐标位置的进行取值和赋值操作
方法1:loc
使用loc
可以像numpy
那样切片,还可以按照索引取列:
1 | df.loc[1,1] |
方法2:iloc
使用iloc
取出的是具体一个坐标的值:
1 | df.iloc[1,2] |
虽然用这两个方法取值还是很快,但是要进行赋值操作就很慢了,最好还是先用npmat=df.values
转换成numpy
进行计算了再整列赋值上去,这样就快得多了。
2020.2.8
Note4
numpy 创建制定值的矩阵
0矩阵
1 | np.zero([row,col]) |
其他值矩阵
1 | np.full((col,row),127,dtype=np.uint8) |