[tips]日常总结1

Dec 17, 2016   #tips 

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)

merge - 通过键值拼接列

它类似于关系数据库中的join操作,可以根据一个或多个键将DataFrame中的行拼接起来。

下面对其中的几个参数做些说明:

  • on=None 指定拼接所用列名,如果两个对象的列名不统一,可以分别通过left_on和right_on指定。
  • left_index/right_index 用行索引做连接键时,指定为True
  • how 当两个表存在不重合的键时,结果的选取方式,’inner’-交集;‘outer’-并集;‘left’/‘right’分别取一边。
  • suffixes=(’_x’,’_y’) 当左右表格存在除连接键外的同名列时,通过添加后缀的方式作区分。
  • 多对多连接,结果为行的笛卡尔积。

join - 索引上的合并,拼接列

  • 默认按索引合并,合并相同或相似的索引。
  • 可以连接多个frame

concat - 以轴连接多个对象

  • 默认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()