代码改变世界

Python数据分析

2020-03-09 00:05  cascle  阅读(411)  评论(0编辑  收藏  举报

Numpy从入门到实战

第一章

Numpy是什么

进行数组/矩阵计算,附带线性代数,傅立叶,随机数等一系列函数

 

优势:Python原生要写很多循环,性能慢

 

Numpy是很多数据科学类库的基础库,比如SciPy,Scikit-Learn,Tensorflow,PandlePandle等

 

第二章 Numpy编程入门

1.import

import numpy as np

2.性能对比

%timeit a(5)

 

第三章 Array对象

一.Array对象

array里的数据必须是同一数值类型

 

自身属性:

1.shape,返回一个元组,表示维度里具体有几个元素

2.ndim,维度数目

3.size,元素数目

4.dtype,元素类型

 

二.创建

1.List和嵌套List里创建

np.array([1,2,3,4,5])
np.array(
[
    [1,2,3,4,5],
    [6,7,8,9,19]   
]
)

2.预制的arange,ones/ones_like,zeros/zeros_like,empty/empyt_like,full/full_like,eye等函数创建

3.np.random模块创建随机数,比如randn生成指定为度的随机数

 

三.Array方法

1.逐元素加减乘除

2.面向多维的数组索引

3.sum/mean等聚合函数

4.线性代数计算,比如求解方程组,逆矩阵等

 

reshape函数:改变维度

arraa + 1:每个元素都➕1

 

第四章.数组按索引查询

一.基础索引:

一维与List差不多:

x:全部

x[2]:单个

x[2:4]:切片

x[2:-1]

x[-3:]

x[:-3]

 

二维:

x[0,0]:x[0][0]

x[2]:单行

x[:2]:这个返回的是一个一维数组,有转置

 

切片会修改原来的数组,直接修改而不是复制得到一个新的

 

二.神奇索引:

整个数组进行索引,数组参数里是相应位置,获取一个新数组

argsort:排序,返回序列的索引数组

 

二维数组

x[[0,2]]:选择0行2行

x[[0,2], :]:同上

x[:, [0,2]]:所有行取0列,2列

x[[0, 2], [3, 4]]:指定0行2行,3列4列,返回一维数组

二维数组索引只要指定了行列坐标,就返回一维数字

 

三.布尔索引:

选择数组拷贝,对数组先做比较得到一个bool数组,再应用到数组里去

x>5:返回一个全是bool值的数组,其值取决于是否比5大

x[x>5]:返回比5大的数字组成的数组

 

二维数组:

x[x>5]:返回一个一维数组

 

条件组合:

condition = (x > 5) | (x < 4):返回布尔数组

x[condition]:数组选值

 

第五章.random的随机函数

可以参考官方文档,有三大部分

1.简单的随机函数

2.对数组随机打散

shuffle只打散行

permutation全打散,并且返回的是数组拷贝

3.复杂随机函数

 

最后一个参数是数据类型(可省略),倒数第二个是维度描述元组

 

第六章.数学统计函数

linspace:生成一个范围内,相应个数的点,均值切割

sum:和

prod:乘积

cumsum:累积加

cumprod:累积积

min:最小

max:最大

percentile:0-100百分位数

quantile:0-1分位数

median:中位数

average:加权平均

mean:平均值

std:标准差

var:方差

 

axis:上面的函数指定轴,计算轴为行还是列。为0是行(聚合韩式是跨行,消解行,而不是在行上计算),为1是列(聚合函数跨列,消解列,而不是在行上计算)。

可以理解为同性质的一起计算

 

广播:两个矩阵数目不一致,比如特征减去平均,要把平均行复制

 

标准化:每个列的量纲一致,不要差太大权重无法比较

 

Pandas数据分析从入门到实战

第一章.介绍

更简单的数据结构,更快的速度,更多的分析工具

用于数据分析,数据处理,数据可视化

 

第二章.读取数据

读取表格类型的数据,才能分析

要有行有列

csv:read_csv

excel:read_excel

mysql:read_sql

 

引入类库

import pandas as pd

读取前几行:

df.head()

展现出来的数据,第一列是索引。然后是每个数据的列

几行几列:

df.shape()

columns:列名

index:索引

dtypes:每一列类型

 

第三章.数据结构:DataFrame和Series

DataFrame:二维数据,整个表格,多行多列

Series:一维数据,一行或者一列。包含了数据和数据相关的数据标签(索引)两个数组

创建Series:

1.pd.series([])

index:获取索引

values:获取数值

2.参数里index=指定索引

3.用python字典(hash)创建

 

查询Series:

类似字典,用key即索引获取值

 

DataFrame中查询出Series:

返回一行一列是Series

返回多行多列还是DataFrame

df['year']:year是列索引,返回year那一列的Series

df.loc[1]:查询第一行

返回多行:用切片,包含了尾部元素

 

第四章.5种查询数据的方法

查询常用函数

1.loc

2.iloc

3.where

4.query

 

loc既能查又能覆写

 

降维顺序:

DataFrame->Series->value

 

df.set_index('ymd', True):设置ymd那一列为索引,里边的值获取行

 

1.数值

loc[column1, column2]

 

2.列表

loc[行1, 行2]

 

3.区间

类似切片

 

4.条件

根据bool列表查询

 

5.函数

用lambda表达式代替布尔表达式

 

 第五章.新增数据列

1.直接赋值

2.apply:传func和指定轴,隔行或者隔列

3.assign:传多个函数按行执行

4.按条件选择分组,loc方法

 

value_counts:个数

 

第六章.统计函数

1.汇总类

describe函数,全部汇总都计算

 

2.唯一去重

unique

 

3.按值计数

value_counts 

 

4.相关系数和协方差

1.协方差

是否是同向变化

cov函数

 

2.相关系数

相似程度,1最相似,-1最不相似

corr函数

 

第七章.对缺失值处理

1.检测:

isnull,notnull

 

2.丢弃:

dropna

 

3.填充:

fillna

 

 第八章.SettingWithCopyWarning

不知道get的是view还是copy,view的话只读不能写

 解决办法:

1.loc直接set

2.先copy再set

 

第九章.对数据进行排序

sort_values

 

第十章.对字符串处理

Series上的str属性,有replace等方法

slice:切片

默认支持正则表达式

 

第十一章.axis怎么理解

单行、单列:针对这一行这一列操作

多行多列:跨行保留列,跨列保留行聚合

 

第十二章.index作用

1.更方便查询

2.性能提升

3.自动的数据对齐(自动算矩阵或者向量)

4.更强大数据支持(CategoricalIndex,MultiIndex,DateTimeIndex)

set_index设置index

要先排序index再查询速度快,sort_index

 

第十三章.数据merge

不同DataFrame数据merge成一个大表

merge类似SQL的join语法

 

第十四章.Concat合并

给DataFrame添加行或者列

contact:

 

append:

contact特例,直接把行放下面

 

高性能:只调用一次,不要调用多次,用集合当参数传入

 

第十五章.Pandas批量拆分与合并Excel文件

iloc,即index locate 用index索引进行定位,所以参数是整型,如:df.iloc[10:20, 3:5]
loc,则可以使用column名和index名进行定位,如:

 

第十六章.分组数据统计

groupBy函数,对列名聚合,groupBy("a").sum()

agg:多级索引,一个列名下有多个聚合函数作为列

可以遍历groupBy的返回值

plot:画图

 

第十七章.MultiIndex

分层索引:一个轴上有多个索引层级,可以表达更高维度数据的形式

元祖(key1,key2)代表索引分级

列表[key1,key2]代表索引同级

sliece(none):所有索引

resetIndex:多重索引打散

 

第十八章.map,apply, applyMap

map:对Series处理值到值的映射,参数字典或者函数都可以

apply:对Series和Dataframe的Series做映射,参数是函数

applyMap:对DataFrame做映射,参数是函数

 

第十九章.groupBy每个apply

groupBy流程:split,apply,combine

 

第二十章.groupBy后的不同列统计

对某一列排序,可以gropuBy()[列名].agg(),可以可以agg里传入列名为字典的key

agg:agg(新列名=函数),agg(新列名=(原列名,函数)),agg({原列名,函数/函数列表})

或者apply生成一个Series

 

第二十一章.stack和pivot实现数据透视

将列式数据变为,二维交叉形式,叫做透视

unstack:将多维索引引导的数据二维交叉化。index编程column

stack:与unstack互逆

pivot:对原始数据指定数据透视的轴,分别是x轴,分类,y轴(先set_index为表格,再unstack)

 

第二十二章.日期

to_datatime:转为日期对象Timestamp

DatetimeIndex:日期类型索引Timestamp的列表形式

 

日期索引缺失

1.reindex:

data_range:生成日期范围,作为参数传给reindex

 

2.resample:改变采样周期。跟时间粒度和一个聚合函数

 

第二十三章.

 

 

 

 

 

 

 

 

 

【美国微软大神的数据分析课】Pandas vs Excel