第七周:Python

本人目前是python小白,所以此篇笔记相对图片内容较多,逻辑层级尽最大努力整理了一下。课程相对我这小白需要慢慢吸收,鉴于课程较多还是决定分段整理一下。

【python的应用场景】

重复性的东西编写脚本

和对于大数据量的操作

【数据搭建的环境】

不建议自己在网上找下载,建议下载anaconda,可在清华镜像里面下载anaconda,下载安装之后可在桌面上找到程序image.png

jupyer Notebook 为本次学习的常用项目,可进行可视化界面操作,分段

shift+光标执行

image.png

【python基础】

1.数据类型:

数值型,直接输入可以进行计算

image.png

可用type进行数据类型的判断

image.png

返回整除的结果

image.png

显示余数的结果

image.png

int整数直接计算

image.png

在python里面单双引号基本没有影响,但是在一段话表示的时候里面有单引号,整段话两边套上双引号才能识别,都为单引号系统则识别不了。相反,整句里面用双引号,整句的时候则用单引号作为系统区分。

image.png

系统报错,将单引号改成双引号就可以识别(双引号为具体内容的边界)

边界用三引号的时候,内容可以包含单双引号的。

字符串:字符串同样不能直接进行计算,可用int转换成数字进行计算。

bool数组(ture默认为1,false默认为0):是可以进行与数字加减运算的

image.png

注意,第一个字母要大写

None:代表缺失值,不能进行运算(相当于表格内画斜线的格子)

“”:代表空值

2.变量,对应的叫“常量”

a=1

变量=1(不加引号的时候就是变量,中文也可以,但是不建议用,因为兼容性差)

image.png

同时给对个变量赋值:a,b=1,2

3.三大结构:列表、字典、元组

【列表】num=[1,2,3]表示数据里面有1,2,3,可以对其进行运算

len()列表里面有几个元素

访问列表里面有几个元素:列表名[]  第一个位置是“0”表示

image.png

查找sql、增加、更改、删除

shift+tab帮助键查

insert(位置,插入内容)插入

apped(插入内容)在末尾添加内容,但是插入的是唯一的值,不能添加多个因素

变量=变量+[内容1,内容2]添加多个因素可以此方法

image.png

pop(位置)删除,直接空的话默认删除末尾的数字

更改

image.png

二维列表的创建

image.png

image.png

image.png

【元组】:()

元组不能修改,与列表对比

【字典】:0

键key值value对

在磁盘上占用空间比较大,查询效果一直会很快

image.png

image.png

set()将列表集合化,相当并集去重

list(set())将set进行嵌套变成新的列表

image.png

image.png

4.控制流:if  for  while

【if】判断

image.png

【while】循环

image.png

image.png

【for】for i  in range(10)   10代表一个列表

for优点就是不容易形成死循环

image.png

 需要1~100之间的数字

image.png

image.png

换一种写法,一句等同以上三句的效果

5.def命名函数

”:“换行缩进表示def内部的函数内容

image.png

image.png

1~10之间求平方

map()全匹配

image.png

image.png

免除了定义函数的苦恼

python有很多第三方库,可以进行加载使用

加载:import collection

其中collection为第三方模块

image.png

常用包:

image.png

特性是用法比较简单,并且有很多共享的第三方包


下期内容o(* ̄︶ ̄*)o:

【Numpy和Pands】这两个是常用于统计分析,可以帮我们处理上千条数据

Numpy包进行加载

image.png

Python的特点是语法比较简单,并且有很多可以共享的第三方包其中今天提到的Numpy和Pandas这两个包常用语统计分析,这两个包会帮助我们保证速度的处理上千条数据。

【Numpy包进行加载和使用】

image.png

image.png

image.png

可用type查看数据类型

利用a变量对数组进行赋值

一样可以接受与数组一样的切片,简单运算

image.png

image.png

能够进行多维数据结构

image.png

注意数据类型的区别“int32“

【Pandas包】性价比会相对较高一些(因为是基于Numpy开发的)--操作方面更加习惯,数据框的形式。

进行加载并重命名为pd:import pandas as pd

image.png

其主要有两个数据结构:

1.Series,一维的,在tab搜索时首字母S要大写

image.png

从0开始到4结束,索引

有一些比较高的属性shift+tab调出查看里面支持哪些参数

image.png

结果区别

image.png

索引查找

image.png

索引也可以进行多个值索引,索引是列表表示,所以需要有方括号。

image.png

最外面的方括号代表索引方式

里面的方括号,代表索引的内容一个列表

image.png

比较智能的可以自动补缺

image.png

特性:原始的数值类型的内容增加一个字符串,则整体都会变成字符串,数据类型会保证统一。

基础是一维的近似于数组的结构。

2.dataframe 二维的,视觉上比较接近表格

相当于无数的一维叠加起来,支持多形式输入

通过字典来输入数据框:

image.png

会发现顺序改变,是因为字典本身就是无需的

进行一维输入:会发现,两者不等价,数据结构是不一样的

image.png

对数据框进行切片,数据类型进行变换

image.png

等价代码df.age,与别的一起写有可能会报错,建议用方括号的切片形式

基于行的切片

image.png

同时可切多个值

image.png

image.png

image.png

以上主要是些标准的查找

单独搜索某一值

image.png

字符串的更改

image.png

针对的是某个行和某个列

某一个特定值的筛选“年龄为18岁的”

方法1:逻辑判断

image.png

image.png

外面的df是提取出来,里面的df代表的是逻辑判断。

提取结构就是TRUE的结果内容

image.png

多条件的筛选查找

image.png

同时满足这两个条件的,“|”为并集

方法2:逻辑判断

image.png

iloc和loc查找(可同时满足两个参数进行切片的)

iloc所在行的数字进行索引,是针对第几行的

image.png

loc是针对标签进行切片的

image.png

(可同时满足两个参数进行切片的)

image.png

image.png

df.ix是可以行和标签一起使用,但是还是会报错,不建议使用。

image.png

【读入.csv文件:read.csv】

首先把文件放在相同的目录下面

image.png

本身默认读取就是utf所以读取会很顺畅

如果改成读取gbk则会报错,如果读取gbk需要进行设置解析编码

image.png

查看前几行:

image.png

查看尾行:df.tail()

查看数据类型依然用:df.info()

image.png

image.png

image.png

image.png

还可以继续追加筛选过滤条件

image.png

【数据的筛选】

1.转至

表名称.T,可将表格快速的转至image.png

2.排序

【values】函数

方法1:排序的依据by="排序依据"

image.png

方法2:通过数组也可以进行排序

df.avg.sort_values()

二者区别是,如果用数组调,返回的是数组,在数据框里面调直接返回的是数据框。

ascending=False改变排序升序为降序

对字段进行排序:直接把条件加入

image.png

列出的表不是根据实际的中文顺序进行的,介意的话需建另一张表格进行调整。

【index】按照索引的排序

image.png

【rank】函数

image.png

image.png

默认顺序为升序排列,添加ascending参数改为降序

method参数默认为加权平均,改为“min”直接用排序第一个,符合现实使用的习惯。改为“first”则排序不考虑并列情况直接按照顺序来进行。

3.查找重复

image.png

直接可查出有多少个唯一值

image.png

加个count可直接查找出合计数量

4.描述性统计

image.png

image.png

5.累计累加

image.png

6.分段统计

使用更加适合分段统计的cut函数

=pd.cut(df.avg.bins=5) 系统自动分割成5部分

也可以自定义区间,然后命名

image.png

常用于用户分级、消费水平分割等使用场景

7.分位法进行分割统计

分位法函数:.qcut()

image.png

x具体的内容例如df.avg

q排名几等分

retbins是否包含开区间闭区间

precision分割出来的精度

duplicates是否要进行些去重操作

【数据的聚合】

聚合函数:mysql不支持分组排名,则可用此函数groupby

image.png

通过for循环可把分组内容打印出来进行查看

image.png

【多表关联】

三种关联方法

1.merge根据键值,对的是某一列

image.png

同名去重不同名保留

附加:
修改表的字段名称可用rename()函数
也可把行名提取出来,然后从0开始查其位置进行更改,再赋值的方法(一般用于只改一个,比较简单)
col=list(df.columns)
col[0]='all'
df.columns=col

2.join针对索引进行

image.png

针对的是固定的索引例如日期

3.concat堆叠,对应的是对象

image.png

两张表格上下放一起,“暴力组合”

之间是上下拼接,增加函数 .axis=1 进行左右拼接,对不上的默认为空值。

应用场景:例如1~12月份相同字段的销售统计的拼接汇总等。

【多重索引】

方法1:可用切片

image.png

方法2:数据框类型的

image.png

不借助groupby进行设置多重索引的方法:set_index

image.png

把列变成索引进行排序,输出可达到整理在一起的效果

image.png

反过来把索引变成列,增加函数reset_index()即可

image.png

这时后面可直接[]去引用。

【pandas里面预处理函数---文本函数】

需求:想把表格内某一列带方括号的字段去掉方括号。

思路1:直接进行左右两边切掉(不成功,因为操作是针对数组进行的,是针对索引的切片)

image.png

思路2:调用 .str()(可行)

例如:.str.count统计字符串出现的次数

.str.find(“数据”)从哪个位置开始统计

.str都是针对值里面的字符串进行的操作

image.png

需求:继续把单引号排除

思路1:用空值替换单引号(不可行)

image.png

因为replace针对的是表格内具体的某一值进行替换,所以,上面对表格内字段进行替换并没有成功。

思路2:增加.str (可行)

image.png

【空值&去重】

1.空值

对表赋予空值,及对空值进行再赋值

image.png

image.png

2.删除重复元素

image.png

去重方法1:

image.png

去重方法2:相对更简单

image.png

【apply】

帮助我们把一个函数或者自定义函数应用到所有的行或者列里面进行处理,可大大提高数据分析的效率。

需求示例:

薪资显示数值后面加上K,例如11.5K

方法1:

image.png

用 .str将浮点数据转成文本再进行拼接

方法2:

image.png

输入x,输出的是 . str和k进行拼接

输入从position.avg来

apply的优点是特别快

方法3:等价方法2(在里面可加进去简单的判断)

image.png

方法4:

image.png

注意,直接position会直接报错,因为对象不能针对整个表,其中参数axis默认为0,是空值对应函数应用到列里面。需要把它设置为=1,说明函数设置应用到列,对这一列数组进行操作,指明是x.avvg则可成功。

1.apply聚合(分组)

需求:不同城市下面新增排名前5的职位。

分析需求:

①对不痛城市--分组

②前5---排序

image.png

方法1:记住输入和输出

image.png

数据拆开后再合并

方法2:

image.png

通过控制参数,变成升序

image.png

agg和apply的区别:agg聚合后针对固定的行和列,apply的灵活性比较高,可以对数据进行拆分再组合,不涉及行数的变化用agg是可以的。

image.png

agg直接调用方法;

image.png

等价于:

image.png

比较高级的用法是,可以同时应用多个函数

image.png

【数据透视表】可以处理超大的数据对比Excel透视

image.png

首选要考虑“我想要的数据透视表形式是什么样子的”

values:具体的哪个值进行计算

index:按照什么来进行聚合,例如“city”

columns:列是设什么样子的,例如“workyear”

aggfunc:具体形成什么样子的值,默认是“mean”

image.png

多重索引同样可以

image.png

调用np,所以要用np.mean等计算方式,直接mean则会报错

image.png

也可在此表格进行继续接片

image.png

其中margins参数=Ture是在透视表下面添加汇总项目

dropna=Ture,就是把一些空值砍掉

透视表的一些高级用法:

需求:只想要对平均薪资进行平均,top进行求和,想要计算values的值是有针对性的。

方法:aggfuns里面把列表改成字典

image.png

应用场景,对处理大数据量的统计提供很好的工具。

【链接数据库】

建议用pandas链接数据库,会比较方便

需要安装一依赖包

image.png

老师在讲的时候说新人在安装依赖包的时候回会遇到些问题,很幸运~我就遇到了~~~

安装包的时候出现“pip不是内部外部,或其他可执行的程序”的报错

方法:需要把环境配置一下,

此电脑-->属性-->高级-->环境变量-->Path-->把ananconda里面含有pip程序的两个文件的位置路径放进去-->保存-->调用cmd(win+r,输入cmd)-->成功

image.png

image.png

1.链接数据库方式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语句的输入

image.png

如果需要把所有的结果都执行出来

data=cur.fetchall()

不过会以元组的形式输出,需要简单处理一下

image.png

image.png

进行增删该查后的结果提交操作可用  .conn.commit()方可提交

打开游标之后,需要养成好的习惯进行关闭

cur.close()

同样,数据库连接进行关闭

conn.close()

2.连接数据库方式2

pandas在数据库的应用最关键的是sql和con

可直接先把sql语句写好

要注意的是链接是比较特殊的,新的链接方式 .orm帮助数据读写的sqlalchemy

image.png

从读取到处理然后到写入数据库的过程:

①读取表:

image.png

如果忘记数据库中有哪些表的具体名头可以用此函数进行查看

reader('show tables')

②处理合并多表格

image.png

③按照需求条件,分组汇总,提取部分数值转换重置成数据框

image.png

④查看数据类型是否需要更改

result.info()

⑤写入数据库

image.png

参数if_exists指的是他是否存在了 ='fail' 是默认的,也就是说如果表存在的话,则写入是失败的。

把参数修改成  ='append'  是指插入数据,即表存在的话则是插入数据,表不存在的话则会是新建数据,

参数index,如果 =True 是代表写入的时候把数据框里面的索引变成一列进行存储;一般会更改为 =False 不写入。

image.png

返回mysql数据库查看

image.png

会发现新导入的表格的字段类型和之前的不太相符,不是预想的最优形式。

建议在开始做的时候,预先在数据库中建好,设置好新的表格表头及类型,然后再进行导入。

并且注意,在python导入运行步骤时候,如不小心执行了多次,则在数据库中也会相应的重复增加多次的数据,所以操作要小心谨慎。

当在数据库建表的时候字段小于导入字段的时候,python会报错。

当在数据库建表的时候字段大于导入字段的时候,python则可正常写入,在数据库中可自动匹配为空。

⑥写入 .csv

image.png

*********    end********

********  准备进入实战篇  *******

转自:https://ask.hellobi.com/blog/cbdingchebao/10505

猜你喜欢

转载自www.cnblogs.com/hankleo/p/9917833.html