美文网首页
就业班第三阶段 python数据处理

就业班第三阶段 python数据处理

作者: anti酱 | 来源:发表于2021-03-05 23:18 被阅读0次

    第一章 pandas入门

    1.1/1.2 jupyter基础

    创建虚拟环境

    a、创建指定python版本的虚拟环境

    conda create -n 环境变量名 python=3.6

    b、虚拟环境命令

    conda env list ——查看**当前拥有的虚拟环境

    conda remove -n 环境变量名 --all ——删除*环境变量

    activate 环境变量名 —— 进入/激活环境变量

    conda deactivate—— 退出环境变量

    Cell 单元知识:

    Cell有四种功能:Code、Markdown、Raw NBConvert、Heading(有些可能没有了,因为和Markdown 效果一样),这四种功能可以互相切换。

    • Code用于写代码

    • Markdown用于文本编辑

      • 命令模式:蓝色 无铅笔
      • 编辑模式:绿色 有铅笔
    • Raw NBConvert中的文字或代码等都不会被运行

    • Heading是用于设置标题的,这个功能已经包含在Markdown中了

    markdown两种模式

    a、命令模式: 蓝色 无铅笔

    b、编辑模式:绿色 有铅笔

    命令模式常用快捷键

    • enter:进入 cell 单元编辑
    • shift+enter:运行当前行并跳转到下一行,没有下一行会创建
    • ctrl+enter:只运行当前行
    • alt+enter:运行当前行,并创建一行空行
    • a:往上插入一行
    • b:往下插入一行
    • y:转换为代码
    • m:转换为Markdown
    • r:转换为Row NBconvert
    • x:剪切一行
    • c:复制一行
    • v:粘贴剪切/复制行到下一行
    • shift+v:粘贴剪切/复制行到上一行
    • dd:删除一行
    • z:撤销删除
    • ctrl+z:撤销输入修改,但是要选择具体的单元(除非修改后还没有运行),这个其实是编辑模式的
    • ctrl+s:保存节点,便于恢复,存储在file/revert to checkpoint中
    • f:查找和替换
    • k 键 或者 方向上键:选择上一行
    • j 键 或者 方向下键:选择下一行
    • shift+k 或者 shift + 方向上键:选择当前行和上一行,一直按会选择很多行
    • shift+j 或者 shift + 方向下键:选择当前行和下一行 (也可以用 shift 来选择多行,shift +鼠标单击 第一行和最后一行来选择) 注意:好像不能跨行选择,即选择的行都是连续的
    • shift+m:merge 合并选择的行,如果没有选择多行那么会合并当前行和下一行
    • space:往下滑动多行
    • shift+space:往上滑动多行
    • ctrl+shift+p:进入的界面是将下面这些快捷键又变成了选择按钮了
    • 1、2、3 :这些都是将 cell 单元转化为 markdown,但是只对第一行起作用

    编辑模式常用快捷键

    • tab键:代码补全
    • shift+tab:函数提示
    • ctrl + ]:缩进,就是往后退格,相当于tab 键的功能,只不过不需要指定在行首输入
    • ctrl + [:取消缩进
    • ctrl+a:全选
    • ctrl+z:撤销
    • ctrl+shift+z:对撤销的操作进行撤销
    • ctrl+y:对撤销的操作进行撤销
    • 对cell 单元格内容进行位置定位:
    1. ctrl+home、ctrl+up: 定位到当前 cell 单元格所有内容的最前头
    2. ctrl+end、ctrl+down:定位到当前 cell 单元格所有内容的最后头
    3. ctrl+left: 定位到当前 cell 单元格光标位置的下一个词语结尾
    4. ctrl+right:定位到当前 cell 单元格光标位置的上一个词语开头
      配合shift使用可以快速选中: 比如ctrl+shift+left ,可以选中左边数据
    • ctrl+backspace:删除前一个单词
    • ctrl+delete:删除后一个单词
    • ctrl+m、esc:切换到命令模式
    • 总结:基本上命令模式用 shift ,编辑模式用 ctrl
    • 使用分号可以阻止该行函数的结果输出,这种需求也可以注释代码来实现 查看函数帮助可以使用多种方法: 1、shift+tab 2、?func 3、help(func)[图片上传失败...(image-85974c-1614923346717)]

    魔法函数:

    使用魔法函数可以简单地实现一些单纯 python 要很麻烦才能实现地功能

    1. %行魔法函数,只对本行代码生效
    2. %%cell 魔法函数,在真个 cell 单元中生效,必须放到 cell 首行
    3. %lsmagic:列出所有的魔法函数
    4. %magic:查看各个魔法函数的说明

    ?后面加上魔法函数名称,可以查看该魔法函数的说明

    1.3/1.4 pandas基础入门

    dataframe数据类型

    • 创建dataframe
      1. 使用多维列表创建

        • 原始数据为多维列表(列表里面套列表)
      2. 使用数组字典创建

        • 原始数据为多维字典,创建作为行列
      3. 两种创建方式差异

        1. 多维列表创建没有列名
        2. 数组字典创建字典名直接作为列名
    • 看数据类型
      • type(df)——查看任何对象的数据类型
    • 获取和更改dataframe索引
      • 获取行索引——df.index

      • 获取列索引——df.columns

      • 获取行列索引——df.axes

      • 更改行索引——df.set_index(列名)

      • 更改列索引——df.columns=[列名1,列名2,....]

    • 数据预览
      • df.info()——读取dataframe的所有信息

      • df.describe()——查看dataframe的描述性统计

      • df.head()——读取数据的前几行,如括号没有参数默认5行

      • df.tail()——读取数据的后几行,没有参数默认5行

      • df.shape——查看数据几行几列

      • df.size——查看数据元素个数

      • df.dtypes——查看数据类型

    DataFrame和Series的比较

    • 创建Series

      1. 列表创建

        • 原始数据为列表
      2. 字典创建

        • 原始数据为字典
      3. 创建有索引的Series

    • 将series转换为dataframe
      • 转化为dataframe

        • to_frame()函数
      • 转化为dataframe并且行列转置

        • to_frame().T函数
    • Dataframe和Series的差异

      • 前者为二维数组,后者为一维数组
      • 可以理解为前者有行列两个维度前者的某一列就是后者
    • Pandas 读取文件

      • pd.csv(路径,属性)
        • pd.csv(路径,header=0)——将第0行作为标题行
        • pd.csv(路径,skiprows=[1,2])——跳过第1,2行
        • pd.csv(路径,keep_default_na=False)——不显示Na值

    第二章 dataframe操作

    dataframe索引类型

    • 使用位置做索引
    • 使用列表做索引
    • 使用切片做索引
    • 使用布尔做索引

    2.1 获取行

    • 使用loc或者iloc函数实现
      • 方式1:列表索引,loc内索引为列表
      • 方式2:切片索引,从哪一行到哪一列
      • 方式3:位置索引iloc
        • loc与iloc:前者基于索引值左闭右闭区间;后者基于位置左闭右开区间
      • 方式4:布尔索引,loc内为某条件

    2.2 获取列

    • 获取列
      • 不用函数,直接中括号
      • 布尔索引和切片索引选出来的是
    • 获取行和列
      • 使用iloc或者loc+切片+loc+2层方法(4种都行)

    2.3 dataframe相关操作

    • 更改列名

      • 方法1:新建更改

        • df.columns=[列名1,列名2,列名3.....]
      • 方法2:rename更改

        • df.rename(columns=[列名1,列名2,列名3.....])
    • 替换信息
      • df.replace({’要替换的列:{‘替换的值’:'替换后的值'})
      • df[列名].replace({‘替换的值’:'替换后的值'},inplace=True)
        • 注意一定要加inplace=True才能确认修改
      • 方法2:map函数
        • df[列名]=df.map(字典)
    • 查看信息
      • 查看某列多少值——df[列名].unique()

      • 查看某列各值个数——df[列名].value_counts()

    • 数据排序
      • df.sort_values(列名,ascending=True/False,inplace=True/False)
    • 求极值
      • df.max()/df.min()——最大值最小值
    • 求和与累积求和
      • df.sum()
      • df.cumsum()
    • 增加/删除行列
      • df[列名]=值——增加列
      • del df[列名]——删除列
      • df.drop(labels=0)——删除行,默认labels=0为删除行,labels=1为删除列
    • 寻找最值索引位置
      • df.idxmax()——最大值索引位置
      • df.idxmin()——最小值索引位置
    • 矩阵计算
      • dataframe实质上是矩阵,可以进行矩阵的加减乘除

    第三章 dataframe操作

    1、数据关联

    • 数据拼接——pd.concat([df1,df2])
    • 关联,默认inner join

      • pd.merge(df1,df2,on='关联列')

      • pd.merge(df1,df2,on=['关联列1','关联列2'....])

      • 自定义关联

        • pd.merge(df1,df2,how='left'/'right'/'outer',on='关联列')
      • 列名不一样关联

        • pd.merge(df1,df2,left_on='关联列名1',right_on='关联列名2')
      • 关联列为索引时

      • pd.merge(df1,df2,left_index=True,right_on=True)

    2、数据分组

    • 分组——df.groupby(列名)
    • 分组属性
      • df.groupby.size()——各组元素个数

      • df.groupby.groups——把每个分组的元素罗列出来

      • len(df.groupby)——分组后的组数

      • 罗列每组分类——解包

        • for name,item in group: print(name)
      • df.group.mean()——各组求平均值

      • df.group.sum()——各组求和

      • 分组后聚合

        • df.group.agg([np.sum,np.mean....])——分组后聚合,类似数据透视
        • df.group.agg({’age':np.sum,'user_id':np.mean....})——不同列不同聚合

    3、转换过滤

    • 替换空值——df.fillna(替换后的值)
    • 将每个分组转化为某个特定指标,结合lambda函数
      • df.groupby('列名).[列名1,列名2,....].transfrom(lambda (s-s.mean())/s.std())
    • 分组过滤
      • df.groupby(列名).filter(条件)

    4.pandas 连接mysql

    • 读取内容
      import pandas                                
      import sqlalchemy                                                                             
      engine = sqlalchemy.**create_engint("mysql+pymysql://用户名:密码@sql地址:端口地址/数据库名")
      pd.read_sql(读取数据的sql语句,engine)
      
    • 写入内容
       pd.to_sql('写入的表名',engine,index=False,if_exsits='append')——如果存在,追加数据
      
      

    第四章 numpy操作

    • array的创建
      1. 列表/多维列表创建

        • np.array([列表])
        • np.array([[列名],[列表],[列表]......)
      2. 填充创建

        • 填充指定值:np.full([行数,列数],填充值)
        • 填充零:np.zeros((行数,列数))
        • 填充1:np.ones((组数,行数,列数))
      3. 使用序列创建

        • 新建序列创建:np.arange(起始值,结束值,步长)——从起始值到结束值每个步长取1个数,左闭右开
        • 重新组合序列:np.arange(....).reshape((组数,行数,列数))
        • 随机矩阵创建: np.random.random((组数,行数,列数))
      4. 划分创建

        • np.limspace(起始值,结束值,划分份数)
    • 查看数据类型
      • type(np.array(....))——查看数据类型
      • np.array(....).dtype——查看array值的数据类型(注意,所有元素只有数据类型一致)
    • numpy索引

      • 切片
        1. 某行某列值

          • data[行数,列数]
        2. 某列的全部值

          • data[:,列数]
        3. 从初始行到结束行的所有相应列:

          • data[行数起始值:行数结束值+1,[列数1,列数2.....]]
        4. 行数1列数1的值+行数2列数2的值,必须一一对应:

          • data[[行数1,行数2],[列数1,列数2]]
      • 索引
        • 单条件布尔索引:data[data==值]
        • 多条件布尔索引:data[(data==值1)|(data==值1)]********
    • numpy相关操作
      • 更改数据类型——data.astype('更改后的数据类型')
      • 所有元素求和——data.sum()
      • 求指数——np.exp(data)
      • 开方——np.sqrt(data)
      • 多维变一维,多个组组成一个组——data.ravel()
      • 矩阵拓展——np.tile(原始矩阵,(行拓展倍数,列拓展倍数))
      • 矩阵拼接
        • 水平拼接——加到每行后面,列变:np.hstack((矩阵a,矩阵b))
        • 垂直拼接——多家几行,列不变:np.vstack((矩阵a,矩阵b))
      • 矩阵分割
        • 水平分割(行数不变,每行列数减少)——np.hsplit(要分割矩阵,分割份数)
        • 垂直分割(列数不变,行数减少)——np.vsplit(要分割矩阵,分割份数)

    相关文章

      网友评论

          本文标题:就业班第三阶段 python数据处理

          本文链接:https://www.haomeiwen.com/subject/uymrqltx.html