python笔记

发布时间:2019-08-14 12:48:22编辑:auto阅读(45)

    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) 数组的运算
    A
    A:两个数组对应元素相乘 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

关键字