就业班第三阶段 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(要分割矩阵,分割份数)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容