阅读 83

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

第一章 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(要分割矩阵,分割份数)

作者:anti酱

原文链接:https://www.jianshu.com/p/8b11787eafb9

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐