Python 学习笔记
一、 主要基本内容
1.1 主要python库
(1) Numpy库:主要进行数据处理,对于数组进行元素级运算;线性代数运算,傅立叶变换,随机数的生产;
(2) Pandas库:便捷处理结构化数据的大量数据结构和函数;
(3) Matplotlib库:绘制数据图表;
1.2 主要工作
(1) 与外界交互:读写各种各样的格式和数据库;
(2) 准备:对数据进行清理、修整、整和、规范化、重塑、切片切块、变形等处理;
(3) 转换:对数据集做一些数学和统计运算以产生新的数据集;
(4) 建模和计算:将数据和统计模型、机器学习算法或其他计算工具联系起来;
(5) 展示:创建交互式的或静态的图片或文字摘要;
1.3 python import与from…import….(python模块)区别
在python用import或者from…import来导入相应的模块。模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。
① import numpy as np;导入numpy模块,并使用np表示
Import numpy ;导入numpy模块
From numpy import ;从模块numpy中导入,并使用其中的命名
② 我们可以通过import来导入多个模块,用“,”(逗号)分隔。
1.3 Python主要数据结构
(1) 列表(list):a=[1,2,’asd’,4];列表中的值可以修改
(2) 元组(Tuple):a=(1,3,‘asd’,4);元组中的值不可以修改
(3) 字典(Dictionary):a={‘today‘:20,’tomorrow‘:30};today是键(key),20是key的值
B=a不是复制而是引用;b=a(:)才是复制b=a.copy()也是复制
二、 Numpy库
2.1 数组ndarray:
(1) 将一个元组、字典、列表转化为数组:data=np.array(data1);
(2) 主要函数:
(m,n)=array.shape;m表示行,n表示列的维数
array.ndim:数组行的维数
array.dtype:数组的数据类型
np.zeros(),np.ones():分别创建指定长度或形状的全0或全1的数组
np.arrange(15):产生0-14的数组
np.reshape((2,3)) :表示设置数组形状
(3) 数组的运算
AA:两个数组对应元素相乘 1/A,A**0.5
A-A:对应元素相减
(4) 索引和切片
元素索引:
A[5:8]:表示数组A的第6到第8个元素
A[:]:表示A中所有元素
A[1,2]与A[1][2]等价
A[2,3,4]:表示2个3行4列的数组
切片索引:
A[1:6]:表示前面第2个元素到第6个元素
A[:2,1:]:表示前2行,第2列到最后(第一行到第三行,第2列到最后一列)
布尔型索引:
花式索引:
(5) 数组的转置和轴对换
Array.T 表示数组的转置
np.dot(x,y) 表示XY的内积
(6) 通用函数
abs、fabs:计算绝对值
sqart:计算平方根
square:计算平方
exp:计算指数
add:将数组中元素对于相加
multiply:数组对于元素相乘
maximum:元素级最大值计算
minimum:元素级最小值计算
mod 求模
np.meshgrid(x,y)表示产生二维矩阵
numpy.where(x,y,z)表示if x 则y,否则z
(7) 数学和统计方法:
Sum 表示全部或某轴向求和
Mean 算术平均值
Std、var 标准差和方差
Min和max 最小值和最大值
Argmin、argmin 最小元素和最大元素索引
Cumsum 所有元素累计求和
Cumprod 所有元素累计求积
排序:array.sort()
唯一化和其他的集合逻辑
(8) 数组文件的输入输出
将数组以二进制文件保存到磁盘:np.save(‘array’,array);文件保存为.npy,可通过np.load导入;
读取文本:arr=np.loadtxt(‘array.txt’,delimiter=’,’)
(9) 线性代数
X.dot(y)相当于np.dot(x,y)
矩阵的逆:inv(A)
Trace: 计算对角线元素的和
det:计算矩阵的行列式
eig:计算矩阵的本征值和本征向量
solve: 求解线性方程组Ax=b
lstsq: 求解Ax=B的最小二乘解
(10) 随机数生成
np.random.normal(size=(4,4)) 标准正态分布
rand 均匀分布样本值
randint 给定上下限随机选取整数
binomial 产生二项分布的样本值
三、 Pandas库
(1) 数据结构介绍:
Series:由数组对象和数据标签组成。Obj=series(array);obj.values为数据值,obj.index为数据标签,标签可以是数字,也可是字母。读取时obj[‘a’];
DataFrame:表格型数据结构,含有一组有序的列,每列可以是不同的值类型(数字,字符串,布尔型),既有行索引也有列索引。
Array为字典,frame=DataFrame(Array)
Frame=DataFrame(Array,colums=[],index=[]) colums表示行索引,index表示列索引
(2) 索引对象
Index对象是不可修改的
reindex 重新索引obj.reindex(range(6),method=’ffill’) ffill或pad前向填充,bfill或backfill后向填充
obj.drop([‘index’]) 删除指定索引的值
obj[‘a’:’c’] a行到c行
data[data[‘three’]>5]
(3) 算术运算和数据对齐
S1+S2 都是series类型,索引值相同,值相加,不同,nan填充
(4) 函数应用和映射
Def f(x) frame.apply(f)
(5) 排序和排名
根据行和列索引进行排序obj.sort_index() obj.sort_index(by=’b’) 按某一列进行排序
带有重复值的索引:
(6)汇总和计算描述统计:
Sum、mean、
相关系数和协方差:import pandas.io.data as web
Cov 为协方差
(7) 唯一值、值计算、成员资格
Obj.unique() 唯一值数组
Obj.value_counts() 各值出现频率
Obj.isin()判断矢量化集合的成员资格
(8) 处理缺失数据
Data.isnumll()判断是否为空
Data.dropna()滤掉缺失数据
Data.fillna(0) 常数填充
(9) 层次化索引
(10) 重排分级顺序
(11) 根据级别汇总顺序
(12) 使用DataFrame的列
四、Matplotlib库:import matplotlib.pyplot as plt
4.1 Matplotlib中API
(1) figure和subplot
fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
(2) 颜色、标记和线型
ax.plot(x,y,linestyle=’—‘,color=’g’,marker=’o’,label=’Default’)
(3)刻度标签和图例
Xlim、xticks、xticklabels分别控制图表的范围、刻度位置、刻度标签
修改x轴的刻度:set_xticks和set_xticklabels
Ax.legend(loc=’best’)添加图例
(4) 注解
(5) 保存:plt.savefig(‘figpath.svg’)
4.2 pandas中的绘图函数
(1) 线性图:S.plot()
(2) 柱状图:data.plot(kind=’bar’,ax=axes[0],color=’k’,alpha=0.7)
(3) 直方图和密度图: tips[‘tip_pct’]=tips[‘tip’]/tips[‘total_bill’] tips[‘tip_pct’].hist(bins=50)
(4) 散布图: plt.scatter()
五、数据规整化:清理、转换、合并与重塑
5.1 (1) 数据库风格的DataFrame合并
Pd.merge(x,y)将xy(交集)合并;pd.merge(x,y,how=’outer’)并集pd.merge(x,y,on=’key’)指定连接键
(2) 索引上的合并
pd.merge(left1,right1,left_on=’key’,right_index=True)索引作为连接键
(3) 轴向连接
np.concatenate([arr,arr],axis=1) 列加
np.concat([s1,s2,s3])默认按行加axis=0行axis=1列
(4)合并重叠数据
np.where(x,y,z)
series.combine_first()
(5)重塑和轴向旋转
Data.stack()将列旋转为行
Data.unstack()将行旋转为列
(6)将长格式转化为宽格式
Pivote=data.pivot(‘data’,’item’,’value’) pivoted.head()
5.2 数据转换
(1)移除重复数据
Data.duplicated()返回布尔型series,表示各行是否重复
Data.drop_duplicates()移除重复行的dataframe
(2)利用函数或映射进行数据转换
(3)替换值:传入参数可以是字典
Data.replace(-999,np.nan)
(4)重命名索引
(5)离散化和面元划分
Cat=pd.cut(ages,bins)
(6) 检测和过滤异常值
data[(np.abs(data)>3).any(1)]=np.sign(data)*3
(7) 排列和随机采样
(8) 计算指标/哑变量
5.3 字符串操作
(1) 对象方法
Val.split(‘,’)拆分数段;pices=[x.strip() for x in val.split(‘,’)
Strip ,rstrip,lstrip 去除空白符
(2)正则表达式 import re
转载于:https://blog.51cto.com/11517555/2060758