就业班第三阶段 python数据处理
第一章 pandas入门 1.1/1.2 jupyter基础 conda create -n 环境变量名 python=3.6 conda env list ——查看**当前拥有的虚拟环境 conda remove -n 环境变量名 --all ——删除*环境变量 activate 环境变量名 —— 进入/激活环境变量 conda deactivate—— 退出环境变量 Cell有四种功能:Code、Markdown、Raw NBConvert、Heading(有些可能没有了,因为和Markdown 效果一样),这四种功能可以互相切换。 Code用于写代码 Markdown用于文本编辑 命令模式:蓝色 无铅笔 编辑模式:绿色 有铅笔 Raw NBConvert中的文字或代码等都不会被运行 Heading是用于设置标题的,这个功能已经包含在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 单元格内容进行位置定位: ctrl+home、ctrl+up: 定位到当前 cell 单元格所有内容的最前头 ctrl+end、ctrl+down:定位到当前 cell 单元格所有内容的最后头 ctrl+left: 定位到当前 cell 单元格光标位置的下一个词语结尾 ctrl+right:定位到当前 cell 单元格光标位置的上一个词语开头 ctrl+backspace:删除前一个单词 ctrl+delete:删除后一个单词 ctrl+m、esc:切换到命令模式 总结:基本上命令模式用 shift ,编辑模式用 ctrl 使用分号可以阻止该行函数的结果输出,这种需求也可以注释代码来实现 查看函数帮助可以使用多种方法: 1、shift+tab 2、?func 3、help(func)[图片上传失败...(image-85974c-1614923346717)] 使用魔法函数可以简单地实现一些单纯 python 要很麻烦才能实现地功能 %:行魔法函数,只对本行代码生效 %%:cell 魔法函数,在真个 cell 单元中生效,必须放到 cell 首行 %lsmagic:列出所有的魔法函数 %magic:查看各个魔法函数的说明 ?后面加上魔法函数名称,可以查看该魔法函数的说明 1.3/1.4 pandas基础入门 dataframe数据类型 创建dataframe 原始数据为多维字典,创建作为行列 原始数据为多维列表(列表里面套列表) 多维列表创建没有列名 数组字典创建字典名直接作为列名 使用多维列表创建 使用数组字典创建 两种创建方式差异 看数据类型 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 原始数据为字典 原始数据为列表 列表创建 字典创建 创建有索引的Series 将series转换为dataframe to_frame().T函数 to_frame()函数 转化为dataframe 转化为dataframe并且行列转置 Dataframe和Series的差异 前者为二维数组,后者为一维数组 可以理解为前者有行列两个维度,前者的某一列就是后者 Pandas 读取文件 pd.csv(路径,header=0)——将第0行作为标题行 pd.csv(路径,skiprows=[1,2])——跳过第1,2行 pd.csv(路径,keep_default_na=False)——不显示Na值 pd.csv(路径,属性) 第二章 dataframe操作 dataframe索引类型 使用位置做索引 使用列表做索引 使用切片做索引 使用布尔做索引 2.1 获取行 使用loc或者iloc函数实现 loc与iloc:前者基于索引值,左闭右闭区间;后者基于位置,左闭右开区间 方式1:列表索引,loc内索引为列表 方式2:切片索引,从哪一行到哪一列 方式3:位置索引iloc 方式4:布尔索引,loc内为某条件 2.2 获取列 获取列 不用函数,直接中括号 布尔索引和切片索引选出来的是行 获取行和列 使用iloc或者loc+切片+loc+2层方法(4种都行) 2.3 dataframe相关操作 更改列名 df.rename(columns=[列名1,列名2,列名3.....]) df.columns=[列名1,列名2,列名3.....] 方法1:新建更改 方法2:rename更改 替换信息 df[列名]=df.map(字典) 注意一定要加inplace=True才能确认修改 df.replace({’要替换的列:{‘替换的值’:'替换后的值'}) df[列名].replace({‘替换的值’:'替换后的值'},inplace=True) 方法2: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,left_on='关联列名1',right_on='关联列名2') pd.merge(df1,df2,how='left'/'right'/'outer',on='关联列') pd.merge(df1,df2,on='关联列') pd.merge(df1,df2,on=['关联列1','关联列2'....]) 自定义关联 列名不一样关联 关联列为索引时 pd.merge(df1,df2,left_index=True,right_on=True) 2、数据分组 分组——df.groupby(列名) 分组属性 df.group.agg([np.sum,np.mean....])——分组后聚合,类似数据透视 df.group.agg({’age':np.sum,'user_id':np.mean....})——不同列不同聚合 for name,item in group: print(name) df.groupby.size()——各组元素个数 df.groupby.groups——把每个分组的元素罗列出来 len(df.groupby)——分组后的组数 罗列每组分类——解包 df.group.mean()——各组求平均值 df.group.sum()——各组求和 分组后聚合 3、转换过滤 替换空值——df.fillna(替换后的值) 将每个分组转化为某个特定指标,结合lambda函数 df.groupby('列名).[列名1,列名2,....].transfrom(lambda (s-s.mean())/s.std()) 分组过滤 df.groupby(列名).filter(条件) 4.pandas 连接mysql 读取内容 写入内容 第四章 numpy操作 array的创建 np.limspace(起始值,结束值,划分份数) 新建序列创建:np.arange(起始值,结束值,步长)——从起始值到结束值每个步长取1个数,左闭右开 重新组合序列:np.arange(....).reshape((组数,行数,列数)) 随机矩阵创建: np.random.random((组数,行数,列数)) 填充指定值:np.full([行数,列数],填充值) 填充零:np.zeros((行数,列数)) 填充1:np.ones((组数,行数,列数)) np.array([列表]) np.array([[列名],[列表],[列表]......) 列表/多维列表创建 填充创建 使用序列创建 划分创建 查看数据类型 type(np.array(....))——查看数据类型 np.array(....).dtype——查看array值的数据类型(注意,所有元素只有数据类型一致) numpy索引 单条件布尔索引:data[data==值] 多条件布尔索引:data[(data==值1)|(data==值1)]******** data[行数,列数] data[:,列数] data[行数起始值:行数结束值+1,[列数1,列数2.....]] data[[行数1,行数2],[列数1,列数2]] 切片 索引 某行某列值 某列的全部值 从初始行到结束行的所有相应列: 行数1列数1的值+行数2列数2的值,必须一一对应: numpy相关操作 水平分割(行数不变,每行列数减少)——np.hsplit(要分割矩阵,分割份数) 垂直分割(列数不变,行数减少)——np.vsplit(要分割矩阵,分割份数) 水平拼接——加到每行后面,列变:np.hstack((矩阵a,矩阵b)) 垂直拼接——多家几行,列不变:np.vstack((矩阵a,矩阵b)) 更改数据类型——data.astype('更改后的数据类型') 所有元素求和——data.sum() 求指数——np.exp(data) 开方——np.sqrt(data) 多维变一维,多个组组成一个组——data.ravel() 矩阵拓展——np.tile(原始矩阵,(行拓展倍数,列拓展倍数)) 矩阵拼接 矩阵分割创建虚拟环境
a、创建指定python版本的虚拟环境
b、虚拟环境命令
Cell 单元知识:
markdown两种模式
命令模式常用快捷键
编辑模式常用快捷键
配合shift使用可以快速选中: 比如ctrl+shift+left ,可以选中左边数据魔法函数:
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')——如果存在,追加数据
6人点赞
知识点
作者:anti酱
链接:https://www.jianshu.com/p/8b11787eafb9