python的应用场景
重复性的东西编写脚本html
和对于大数据量的操做python
不建议本身在网上找下载,建议下载anaconda,可在清华镜像里面下载anaconda,下载安装以后可在桌面上找到程序image.pngmysql
jupyer Notebook 为本次学习的经常使用项目,可进行可视化界面操做,分段sql
shift+光标执行
数据库
目录
1.数据类型
2.变量
3.三大结构
3.1列表
3.2元组
3.3字典
4.控制流
5.def命名函数
6.Numpy包
7.1 Series
7.2 dataframe
8.数据的筛选
9.数据的聚合
10.多表关联
11.多重索引
12.文本函数
13.空值&去重
14.apply函数
15.数据透视表
16.连接数据库数组
1.数据类型:数据结构
数值型,直接输入能够进行计算
app
可用type进行数据类型的判断
函数
返回整除的结果
工具
显示余数的结果
int整数直接计算
在python里面单双引号基本没有影响,可是在一段话表示的时候里面有单引号,整段话两边套上双引号才能识别,都为单引号系统则识别不了。相反,整句里面用双引号,整句的时候则用单引号做为系统区分。
系统报错,将单引号改为双引号就能够识别(双引号为具体内容的边界)
边界用三引号的时候,内容能够包含单双引号的。
字符串:字符串一样不能直接进行计算,可用int转换成数字进行计算。
bool数组(ture默认为1,false默认为0):是能够进行与数字加减运算的
注意,第一个字母要大写
None:表明缺失值,不能进行运算(至关于表格内画斜线的格子) “”:表明空值
2.变量
对应的叫“常量
a=1
变量=1(不加引号的时候就是变量,中文也能够,可是不建议用,由于兼容性差)
同时给对个变量赋值:a,b=1,2
3.1列表
num=[1,2,3]
表示数据里面有1,2,3,能够对其进行运算
len()
列表里面有几个元素
访问列表里面有几个元素:列表名[] 第一个位置是“0”表示
查找sql、增长、更改、删除
shift+tab
帮助键查
insert
(位置,插入内容)插入
apped
(插入内容)在末尾添加内容,可是插入的是惟一的值,不能添加多个因素
变量=变量+[内容1,内容2]添加多个因素能够此方法
pop
(位置)删除,直接空的话默认删除末尾的数字
更改
二维列表的建立
元组
()
元组不能修改,与列表对比
字典
键key值value对
在磁盘上占用空间比较大,查询效果一直会很快
set()
将列表集合化,至关并集去重
list(set())
将set进行嵌套变成新的列表
if for while
【if】判断
【while】循环
【for】for i in range(10)
#10表明一个列表
for优势就是不容易造成死循环
须要1~100之间的数字
换一种写法,一句等同以上三句的效果
5.def命名函数
”:“
换行缩进表示def内部的函数内容
1~10之间求平方
map()全匹配
免除了定义函数的苦恼
python有不少第三方库,能够进行加载使用
加载:import collection
其中collection为第三方模块
经常使用包:
特性是用法比较简单,而且有不少共享的第三方包
进行加载
Python的特色是语法比较简单,而且有不少能够共享的第三方包其中今天提到的Numpy和Pandas这两个包经常使用语统计分析,这两个包会帮助咱们保证速度的处理上千条数据。
【Numpy包进行加载和使用】
可用type查看数据类型
利用a变量对数组进行赋值
同样能够接受与数组同样的切片,简单运算
可以进行多维数据结构
注意数据类型的区别“int32“
性价比会相对较高一些(由于是基于Numpy开发的)--操做方面更加习惯,数据框的形式。
进行加载并重命名为pd:import pandas as pd
其主要有两个数据结构:
从0开始到4结束,索引
有一些比较高的属性shift+tab调出查看里面支持哪些参数
结果区别
索引查找
索引也能够进行多个值索引,索引是列表表示,因此须要有方括号。
最外面的方括号表明索引方式
里面的方括号,表明索引的内容一个列表
比较智能的能够自动补缺
特性:原始的数值类型的内容增长一个字符串,则总体都会变成字符串,数据类型会保证统一。
基础是一维的近似于数组的结构。
至关于无数的一维叠加起来,支持多形式输入
经过字典来输入数据框:
会发现顺序改变,是由于字典自己就是无需的
进行一维输入:会发现,二者不等价,数据结构是不同的
对数据框进行切片,数据类型进行变换
等价代码df.age,与别的一块儿写有可能会报错,建议用方括号的切片形式
基于行的切片
同时可切多个值
以上主要是些标准的查找
单独搜索某一值
字符串的更改
针对的是某个行和某个列
某一个特定值的筛选“年龄为18岁的”
方法1:逻辑判断
外面的df是提取出来,里面的df表明的是逻辑判断。
提取结构就是TRUE的结果内容
多条件的筛选查找
同时知足这两个条件的,“|”为并集
方法2:逻辑判断
iloc和loc查找(可同时知足两个参数进行切片的)
iloc所在行的数字进行索引,是针对第几行的
loc是针对标签进行切片的
(可同时知足两个参数进行切片的)
df.ix是能够行和标签一块儿使用,可是仍是会报错,不建议使用。
读入.csv文件:read.csv
首先把文件放在相同的目录下面
自己默认读取就是utf因此读取会很顺畅
若是改为读取gbk则会报错,若是读取gbk须要进行设置解析编码
查看前几行:
查看尾行:df.tail()
查看数据类型依然用:df.info()
还能够继续追加筛选过滤条件
1.转至
表名称.T,可将表格快速的转至
2.排序
【values】函数
方法1:排序的依据by="排序依据"
方法2:经过数组也能够进行排序
df.avg.sort_values()
两者区别是,若是用数组调,返回的是数组,在数据框里面调直接返回的是数据框。
ascending=False
改变排序升序为降序
对字段进行排序:直接把条件加入
列出的表不是根据实际的中文顺序进行的,介意的话需建另外一张表格进行调整。
【index】按照索引的排序
【rank】函数
默认顺序为升序排列,添加ascending
参数改成降序
method参数默认为加权平均,改成min
直接用排序第一个,符合现实使用的习惯。改成first
则排序不考虑并列状况直接按照顺序来进行。
3.查找重复
直接可查出有多少个惟一值
加个count
可直接查找出合计数量
4.描述性统计
5.累计累加
6.分段统计
使用更加适合分段统计的cut函数
pd.cut(df.avg.bins=5)
系统自动分割成5部分
也能够自定义区间,而后命名
经常使用于用户分级、消费水平分割等使用场景
7.分位法进行分割统计
分位法函数:.qcut()
x具体的内容例如df.avg
q排名几等分
retbins是否包含开区间闭区间
precision分割出来的精度
duplicates是否要进行些去重操做
聚合函数:mysql不支持分组排名,则可用此函数groupby
经过for循环可把分组内容打印出来进行查看
三种关联方法
1.merge根据键值,对的是某一列
同名去重不一样名保留
附加:
修改表的字段名称可用rename()函数
也可把行名提取出来,而后从0开始查其位置进行更改,再赋值的方法(通常用于只改一个,比较简单)
col=list(df.columns) col[0]='all' df.columns=col
2.join针对索引进行
针对的是固定的索引例如日期
3.concat堆叠,对应的是对象
两张表格上下放一块儿,“暴力组合”
之间是上下拼接,增长函数 .axis=1 进行左右拼接,对不上的默认为空值。
应用场景:例如1~12月份相同字段的销售统计的拼接汇总等。
方法1:可用切片
方法2:数据框类型的
不借助groupby进行设置多重索引的方法:set_index
把列变成索引进行排序,输出可达到整理在一块儿的效果
反过来把索引变成列,增长函数reset_index()便可
这时后面可直接[]去引用。
pandas里面预处理函数
需求:想把表格内某一列带方括号的字段去掉方括号。
思路1:直接进行左右两边切掉(不成功,由于操做是针对数组进行的,是针对索引的切片)
思路2:调用.str()
(可行)
例如:.str.count
统计字符串出现的次数
.str.find(“数据”)
从哪一个位置开始统计
.str
都是针对值里面的字符串进行的操做
需求:继续把单引号排除
思路1:用空值替换单引号(不可行)
由于replace针对的是表格内具体的某一值进行替换,因此,上面对表格内字段进行替换并无成功。
思路2:增长.str (可行)
1.空值
对表赋予空值,及对空值进行再赋值
2.删除重复元素
去重方法1:
去重方法2:相对更简单
帮助咱们把一个函数或者自定义函数应用到全部的行或者列里面进行处理,可大大提升数据分析的效率。
需求示例:
薪资显示数值后面加上K,例如11.5K
方法1:
用 .str
将浮点数据转成文本再进行拼接
方法2:
输入x,输出的是. str
和k
进行拼接
输入从position.avg
来
apply的优势是特别快
方法3:等价方法2(在里面可加进去简单的判断)
方法4:
注意,直接position会直接报错,由于对象不能针对整个表,其中参数axis默认为0,是空值对应函数应用到列里面。须要把它设置为=1,说明函数设置应用到列,对这一列数组进行操做,指明是x.avvg则可成功。
1.apply聚合(分组)
需求:不一样城市下面新增排名前5的职位。
分析需求:
①对不一样城市--分组
②前5---排序
方法1:记住输入和输出
数据拆开后再合并
方法2:
经过控制参数,变成升序
agg和apply的区别:agg聚合后针对固定的行和列,apply的灵活性比较高,能够对数据进行拆分再组合,不涉及行数的变化用agg是能够的。
agg直接调用方法;
等价于:
比较高级的用法是,能够同时应用多个函数
能够处理超大的数据对比Excel透视
首选要考虑“我想要的数据透视表形式是什么样子的”
values:具体的哪一个值进行计算
index:按照什么来进行聚合,例如“city”
columns:列是设什么样子的,例如“workyear”
aggfunc:具体造成什么样子的值,默认是“mean”
多重索引一样能够
调用np,因此要用np.mean等计算方式,直接mean则会报错
也可在此表格进行继续接片
其中margins
参数=Ture
是在透视表下面添加汇总项目
dropna=Ture
,就是把一些空值砍掉
透视表的一些高级用法:
需求:只想要对平均薪资进行平均,top进行求和,想要计算values的值是有针对性的。
方法:aggfuns里面把列表改为字典
应用场景,对处理大数据量的统计提供很好的工具。
建议用pandas连接数据库,会比较方便
须要安装一依赖包
老师在讲的时候说新人在安装依赖包的时候回会遇到些问题,很幸运~我就遇到了~~~
安装包的时候出现“pip不是内部外部,或其余可执行的程序”的报错
方法:须要把环境配置一下,
此电脑-->属性-->高级-->环境变量-->Path-->把ananconda里面含有pip程序的两个文件的位置路径放进去-->保存-->调用cmd(win+r,输入cmd)-->成功
1.连接数据库方式
import pymysql #加载变量
conn=pymysql.connect(
host='localhost', #定义新的变量连接,能够直接输入localhost,也能够直接输入本地的地址127.0.0.11由于mysql通常都是本地因此这两种方法都可
user='root', #数据库用户名称
password='12346', #帐号密码
db='data', #想要连接的数据库
port=3306, #输入端口,默认的,若是有变化本身更改便可
charset='utf8' #文本编码若是是gbk则改为gbk对应
)
建立后调用一个方法(直接记住)
conn.cursor()
以后能够用 .execute()
来进行sql语句的输入
若是须要把全部的结果都执行出来
data=cur.fetchall()
不过会以元组的形式输出,须要简单处理一下
进行增删该查后的结果提交操做可用.conn.commit()
方可提交
打开游标以后,须要养成好的习惯进行关闭
cur.close()
一样,数据库链接进行关闭
conn.close()
2.链接数据库方式
pandas在数据库的应用最关键的是sql和con
可直接先把sql语句写好
要注意的是连接是比较特殊的,新的连接方式 .orm帮助数据读写的sqlalchemy
从读取处处理而后到写入数据库的过程:
①读取表:
若是忘记数据库中有哪些表的具体名头能够用此函数进行查看
reader('show tables')
②处理合并多表格
③按照需求条件,分组汇总,提取部分数值转换重置成数据框
④查看数据类型是否须要更改
result.info()
⑤写入数据库
参数if_exists
指的是他是否存在了='fail'
是默认的,也就是说若是表存在的话,则写入是失败的。
把参数修改为 ='append'
是指插入数据,即表存在的话则是插入数据,表不存在的话则会是新建数据,
参数index
,若是=True
是表明写入的时候把数据框里面的索引变成一列进行存储;通常会更改成=False
不写入。
返回mysql数据库查看
会发现新导入的表格的字段类型和以前的不太相符,不是预想的最优形式。
建议在开始作的时候,预先在数据库中建好,设置好新的表格表头及类型,而后再进行导入。
而且注意,在python导入运行步骤时候,如不当心执行了屡次,则在数据库中也会相应的重复增长屡次的数据,因此操做要当心谨慎。
当在数据库建表的时候字段小于导入字段的时候,python会报错。
当在数据库建表的时候字段大于导入字段的时候,python则可正常写入,在数据库中可自动匹配为空。
⑥写入 .csv