python数据分析基础

1.常用python模块

  • pandas 提供快速便捷处理结构化数据的大量数据结构和函数。使用最多的pandas对象dataframe,他是一个面向列的二维表结构,另一个是series,一个一维的标签化数组对象。
  • numpy 科学计算的基础包,包括多维数组,数组运算函数,线性代数运算、傅里叶变化、随机数生成。
  • matplotlib 流行的绘制图表和其他二维数据可视化的python库
  • scipy 钻们解决科学计算中各种标准问题域的包的集合
  • scikit-learn 机器学习工具包,子模块包括分类(svm、近邻、随机森林、逻辑回归等)、回归(lasso、岭回归等)、聚类(k-均值、谱聚类等)、降维(PCA、特征选择、矩阵分解等)、选型(网格搜索、交叉验证、度量)、预处理(特征提取、标准化)
    -statsmodels 统计分析包,包含经典统计学和经济计量学的算法,包括如下子模块:回归模型、方差分析、时间徐序列分析、非参数方法、统计模型结果可视化。

2.python数据结构和序列

元组:元组是一个固定长度,不可改变的python序列对象。

tup=(2,3,4)

元组(tuple)方法

  • tup.count(a):统计元素a在元组中出现的次数

列表: 与元组相比,列表长度可变,内容可被修改。

list=[2,3,5,none]

列表的方法:

  • list.append(a) :将元素a添加到列表list末尾;
  • list.insert(index,a) :将元素a添加到指定的索引index位置;
  • list.pop(index) :将指定的索引index位置的元素移除并返回该元素;
  • list.remove(a) :将列表中第一次出现的a元素删除
  • list.extend(a) :将a追加到列表当中,a可以为其他数据类型,这样拓展速度比使用+连接速度快,因为不用重新创建列表
  • list.sort() :将列表重新排序,不创建新对象
  • sorted(a) :将a有序排列,返回新对象

在列表中检索速度比字典和集合速度慢,因为列表是线性搜索,而在字典和集合中,是基于哈希表的检索,在同一时间内还可以检查其他项

列表操作

1.二分搜索和维护已排序的列表

bisect 模块支持二分查找,和向已排序的列表插入值。
bisect.bisect(list_name,element): 找到插入值后仍保证排序的位置
bisect。insort(list,index) :向列表中index位置插入值

import bisect c=[1,2,2,2,3,4,7] print(bisect.bisect(c,2)) #out:4 pirnt(bisect.bisect(c,5)  #out :6 bisect.insort(c,6) print(c) #out :[1,2,2,2,3,4,6,7] 

2.常用函数

enumerate函数: 可以返回元组序列;

some_list=['foo','bar','baz'] mapping={} for i ,v in enumerate(some_list):      mapping[v]=i print(mapping) #out:{'bar':1,'baz':2;'foo':0} 

zip函数:
zip函数可以将多个列表、元组或其他序列晨读组合城一个元组列表:

seq1=['foo','bar','baz'] seq2=['one','two','three'] zipped=zip(seq1,seq2) list(zipped) # out :[('foo','noe'),('bar','two'),('baz','three')] 

zip函数还可以用来解压缩处理:

newseq1,newseq2=zip(*zipped) print(newseq1) #newseq1=['foo','bar','baz'] print(newseq2) #newseq2=['one','two','three'] 

reversed函数:从后向前迭代一个列表。该方法时一个生成器。

字典:python中的哈希映射或关联数组,是键值对的集合,大小可变。键通常为不可变的标量类型,值可以为任意python对象

可以使用del关键字或pop方法删除值
del dic[key]: 删除key键和其对应的值
dic.pop(key):功能同上,返回返回删除的值。
可以用update方法一个字典与另一个字典融合:
d1.update(d2) :将d2中的键值对与d1合并,相同的键,不同的值,由b2覆盖b1的值。

集合 (set)无需的不可重复的元素的集合。

创建方法:

#方法1: a=set([1,1,2,3,4,5,6,3,4]) print(a) #a={1,2,3,4,5,6}  方法2: a={1,2,3,4,4,4,5,6}#两者等价 

集合的运算:支持合并、交集、差分、对称差等数据集合运算
合并:取两个集合中不重复的元素,可以用union方法或者|运算符
交集:取两个集合中的相同元素,可以使用intersection或者&运算符

常用方法:

  • a.add(x) 添加x到集合a中
  • a.clear()将a集合清空
  • a.remove(x)移除集合中的x元素
  • a.pop()取出集合中的第一个元素
  • a.union(b)a和b的并集
  • a.update(b)将b中的元素与a合并
  • a.intersection(b)交集
  • a.intersection_update(b)将a中的元素设置为交集
  • a.difference(b)存在于a但不存在于b的元素
  • a.difference_update(b) 将a中元素设置为a和b的差集
  • a.symetric_difference(b)只在a或者只在b的元素
  • a.symetric_difference——update(b):类比上面方法
  • a.issubset(b) :判断a是否为b的子集,是则返回true
  • a.issuperset(b)判断b是否为a的子集,是则返回true
  • a.isdisjoint(b)判断a和b是否无交集,是则返回true