Python数据分析
2020-03-09 00:05 cascle 阅读(424) 评论(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