利用Python进行数据分析

利用Python进行数据分析

其实学习工作中碰到的数据分析许多多是sql直接搞定了。但是sql的灵活性还是不弱真正的编程语言灵活,其科学计算方法也显得单薄,远不如Python的科学计算包丰富。
比如之前在特征集中一般会有前一天、前两天、前三天的三列,但是如果我们需要计算这三列的方差什么的就不好算了。有些数据库是支持的比如postgrep。但是如果再要求一个中位数。这个就不好弄了。但是Python的科学计算包可以轻松搞定。同时画图也非常方便。

Numpy

其实就是个N 维数组容器 同时提供了矩阵运算

索引和切片

可以指定索引,默认就是类似其他语言那种从零开始的数字索引

其他

arange/xrange/range

  1. range是一个Python的内建函数,提供范围和步长作为参数,返回一个list
  2. arange是Numpy的函数,参数同上,但是返回一个以为一维数组
  3. xrange返回的是一个list生成器

pandas

切片

  1. 通过索引:df.col1或者df[‘col1’],如果是多列应当是列表的形式出现df[[‘col1’,’col2’]]

  1. 通过索引名 df

筛选条件

分组

groupby 返回一个groupby对象 其实可以简单理解为一个含有分组信息的dataFrame,这意味着
df.groupby()之后可以继续切片.df.groupby([‘dim1’,’dim2’])[[‘col1’,’col2’]]
从上面也可以看出,多维度分组,分组后只查看指定列的写法。
当然也可以使用函数进行分组,比如sql中常写的 if(var == 1,’是’,’否’),这里换成lambda表达式即可

其实分组列本质要求是一个和源数据列等长的Serial,如果使用源df中的列,直接提供列名即可;也可以自定义个以为数组用来分组。
特别注意:使用字符串列名作分组键,前面曾提到过可以使用字符串形式的列名作为分组键,
但上面例子中都没有用。是因为这种方法虽然方便,却存在隐患——使用这种方法时,调用者必须是 DataFrame 对象自身而不可以是 DataFrame 的索引形式。
即 df.groupby([‘key1’,’key2’])[‘data1’] 是 ok 的,但 df[‘data1’].groupby(‘key1’) 会报错。使用时当注意区分。