第七周:python之数据分析基础

浏览: 1258

1.第三方库

    python拥有很强大的第三方库,在使用中我们可以快速调用这些库的程序,使得程序灵活高效。

    加载第三方库用关键字import,要命名别名用关键字as,比如我们要输入库math的语法为:import math。

2.1第三方库的使用.png

2.numpy

    数据分析常用的第三方库是numpy和pandas。

    numpy的对象是同种元素的多维数组,即ndarray。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(通常是元素是数字)。其最基础操作为array,创建数组,和列表类似,也可以进行索引、修改、计算、切片等操作。

2.2 numpy相关.png

3.pandas之Series

    pandas是基于numpy构建的,为时间序列分析提供了很好的支持。pandas中有两个主要的数据结构,一个是Series,另一个是DataFrame。

    数据结构Series是一维的,由一组数据和其对应的数据标签(索引index)组成。索引默认为空,即是数字0,1,2,3……但也可以指定,表现形式为:索引在左,数据在右。另外的,使用字典也可以生成Series,字典的键是索引,如果额外指定索引,不匹配的的索引的数据值为NaN。

2.3 Series基础.png

2.3 Series与字典.png

4.pandas之DataFrame

    数据结构DataFrame是二维的,和Series相比多了columns(可以看做成是excel中的列)。同样的也可以用字典来生成DataFrame,字典的键就是DataFrame的列索引,值就是相对应列的具体数据,行索引则和Series一样。

2.4 生成DataFrame.png

    同样的,DataFrame的行列索引都可以自定义,不能匹配的用NaN代替。

2.4 DataFrame自定义索引.png

     DataFrame基于列切片可以用中括号或者点,多列切片中括号里用列表。

2.4 列切片1.png                   2.4列切片2.png

    对行切片则用ix、loc、iloc,ix是可以混合使用行号和索引取值,iloc是根据行号取值,loc是根据索引取值,这三个同时也可以选取列标签取值。

2.4 行切片.png

    Pandas的数据查找是通过逻辑判断法,也就是布尔索引来查找所需要的数据,只返回ture的数据。如果多个条件的话,需要用逻辑符号且(&)、或(|)、非(~),每个条件两端需要用小括号括起来。

2.4 DataFrame查询.png

修改数据要先根据索引查找到所要改的数据,然后在进行赋值,使用loc。

2.4修改数据.png

5.pandas之加载数据

    Pandas加载数据用read的相关函数,如read_csv、read_excel等。注意:读取路径不能有中文字符,默认编码为utf8要使用其他编码的话则需使用参数encoding来确定编码类型。查询数据的前5行或末尾5行分别用headtail,也可以指定行数查询。

2.5加载数据read_csv.png

    筛选数据除了之前的索引方法之外,还可以用函数query。

2.5筛选数据query.png

6.pandas之常用函数

转置:用函数T,即是把数据框的行列位置对调

2.6转置.png

排序:sort_values,按列排序可以是多列。默认升序(ascending)

      sort_index,按行索引排序。默认升序

2.6排序.png

    排名:rank,默认method='average',升序排名(ascending=True),按行(axis=0)

                           #average 值相等时,取排名的平均值

                          #min 值相等时,取排名最小值

                          #max 值相等时,取排名最大值

                         #first值相等时,按原始数据出现顺序排名

2.6排名rank.png

重复值:unique(),返回唯一值的数组

2.6惟一值.png

描述统计:describe(),只能对数字列进行描述统计。描述统计里的每个指标都可以单独计算,如max,min等。

2.6描述统计.png

累加:cumsum,按列进行逐行累加。一般用于计算总次数或者总销售等。

2.6累加cumsum.png

    分类统计:cut,参数x是需要分类的列,bins表示需要分的组数也可以自定义分割,labels表示每组的标签即是名称,注意cut是在pandas下的函数而不是DataFrame。另外的还有个qcat函数是对排名进行分类的。

2.6分类统计.png

    数据分组:groupby,按某列或多列进行分组,分组之后可以进行计数、求最值等操作。

   2.6分组groupby.png

2.6多列分组.png

7.多表关联

merge:根据一列或多列把两表的行合并。

2.7多表关联merge.png

join:默认是行索引关联,也可以是左表索引关联右表字段。

concat:默认将两个表上下堆叠在一起,

8.数据预处理

(1)文本清洗:要利用字符串函数str,例如要去除字符串的两端字符也就是提取中间字符,直接利用字符串的索引。每次使用操作之前都要调用一次str函数。

2.8.1文本清洗str.png

(2)空值处理:可以分为删除(dropna)和填充(fillna)。

     fillna(value=None,method=None,axis=0)中的value除了基本类型外,还可以使用字典,这样可以实现对不同列填充不同的值。

2.8.2空值处理.png

    (3)重复值处理:查找重复值(duplicated)和删除重复值(drop_duplicates)。

duplicated:数据表中两个条目间所有列的内容都相等时,函数才会判断为重复值,也可以单独对某一列进行重复值判断。

drop_duplicates:判断标准与duplicated一样,只是把后出现的重复值删除即是默认保留‘first’。

2.8.3重复值处理.png

(4)更改数据格式:通常是用函数astype更改即可。这里要注意的是日期格式要用to_datetime函数来更改。

9.函数apply

    函数格式为:apply(func,*args,**kwargs),当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元组或者字典中的参数按照顺序传递给参数

2.9 apply基础.png

     apply 是 pandas 库的一个很重要的函数,多和 groupby 函数一起用,也可以直接用于 DataFrame和 Series 对象。主要用于数据聚合运算,可以很方便的对分组进行现有的运算和自定义的运算。例如要对position表求每个城市前三的薪资情况:

2.9 apply与groupby组合.png

10.数据透视

    在pandas使用函数pivot_table函数进行数据透视,功能和excel类似,根据一个或多个制定的维度对数据进行聚合。

    pandas.pivot_table函数中包含四个主要的变量,以及一些可选择使用的参数。四个主要的变量分别是数据源data,数值values,行索引index,列columns。可选择使用的参数包括数值的汇总方式,NaN值的处理方式,以及是否显示汇总行数据等。

2.10数据透视.png

   11.操作数据库

(1)用python连接数据库

     首先应该要先按装pymysql这个包,使用命令行命令pip install pymysql来安装。然后使用这个包下面的函数connet创建连接,再用函数cursor创建游标,最后再用函数execute执行sql语句即成功连接。

2.11连接数据库.png

    连接成功后,要把结果执行出来,则需要使用游标中的函数ftechall。

2.11执行连接结果.png

    如果对数据有新建或者修改的操作,则需要使用函数commit来提交数据。

2.11提交数据.png

    若所有操作已经完成,在最后则需要关闭游标和连接。

2.11关闭游标与连接.png

(2)在pandas下连接数据库

    建议使用此方法,同样的需要创建连接和SQL语句,然后直接用函数read_sql读取数据库即可。注意这里的连接语句也可以用下面11.3图中的连接方法。

2.11.2 pandas下连接数据库.png

(3)把数据写入到数据库

    在写入数据库之前一般要在数据库中创建一个我们所需要的新表,然后再用函数to_sql写入即可。这里需要注意的是,连接需要使用另外的一种方法:库sqlalchemy下的函数create_engine。

2.11.3写入数据库.png

推荐 2
本文由 lizhi914637 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册