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的子集,是则返回truea.issuperset(b)
判断b是否为a的子集,是则返回truea.isdisjoint(b)
判断a和b是否无交集,是则返回true