Intro
下面笔者会记录一下日常中学习到的小知识点,以备查看。当一些知识储备充足,会系统地再做整理。
12-17
1. merge,join,concat in pandas
之前接触过pandas,用的比较多的是merge,对于join的用法一直比较模糊。
在数据处理和特征挖掘中,表与表之间的连接是一个经常使用的操作。
函数原型如下:
merge(left, right, how='inner', on=None, left_on=None,right_on=None,
left_index=False, right_index=False, sort=True, suffixes=('_x','_y'),
copy=True, indicator=False)
join(self,other,on=None,how='left',lsuffix='',rsuffix='', sort=False)
concat(objs, axis=0, join='outer',join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,copy=True)
它类似于关系数据库中的join操作,可以根据一个或多个键将DataFrame中的行拼接起来。
下面对其中的几个参数做些说明:
- on=None 指定拼接所用列名,如果两个对象的列名不统一,可以分别通过left_on和right_on指定。
- left_index/right_index 用行索引做连接键时,指定为True
- how 当两个表存在不重合的键时,结果的选取方式,’inner’-交集;‘outer’-并集;‘left’/‘right’分别取一边。
- suffixes=(’_x’,’_y’) 当左右表格存在除连接键外的同名列时,通过添加后缀的方式作区分。
- 多对多连接,结果为行的笛卡尔积。
- 默认按索引合并,合并相同或相似的索引。
- 可以连接多个frame
- 默认axis=0情况下,concat是将objs按照append的方式拼接起来
- axis=1情况下与merge相同。
12-18
1. malloc, realloc, calloc
在stdlib.h函数库中,它们的返回值是请求系统分配的地址,如果失败返回NULL。函数原型如下:
void* malloc(unsigned size);
void* calloc(size_t numElements, size_T sizeOfElement);
void* realloc(void* ptr, unsigned newsize);
- malloc 在内存的动态存储区中分配一块长度为size字节的连续区域,返回该区域的首地址。
- calloc 在内存中申请numElements*sizeOfElement字节大小的连续地址空间。
- realloc 给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度。
区别:
- malloc不能初始化所分配的内存空间,而calloc可以。
- realloc可以对给定指针所指的空间进行扩大或者缩小,但原有内容保持不变。
12-25
1. histogram
##Compute the histogram of a set of data
numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None)
hitogram对数组a进行直方图统计,将数组a的取值范围分为bins个区间,并统计a中的每个值落入各个区间中的次数。
##examples
import numpy as np
import matplotlib.pyplot as plt
np.histogram([1,2,3,1,2,4], bins=[0,1,2,3])
plt.hist([1,2,3,1,2,4], bins=3)
plt.title("Histogram with 3 bins")
plt.show()