数据分析实战
使用适当的分析方法,对收集的数据进行分析,总结规律,提取有价值的信息,形成有效结论的过程。
基础分析方法:
对比分析、分组分析、结构分析、分布分析、交叉分析、矩阵分析等方法。
高级分析方法:
回归分析、聚类分析、决策树、神经网络、因子分析、时间序列分析等方法。
数据分析的作用:
- 现状分析:日报、月报等
- 原因分析:专题分析
- 预测分析:年度计划制定时分析
- 现状分析:日报、月报等
- 原因分析:专题分析
- 预测分析:年度计划制定时分析
数据分析流程:
数据准备
数据类型
-
Logical,逻辑型,布尔型
-
- 两种取值:True、False
- 运算规则:与(&)、或(|)、非(not)
-
Numerical,数值型
-
- 实数
- 运算规则:加、减、乘、除、取整(//)、求余(%)、乘方(**)
-
Character,字符型
数据结构
相互之间存在一种或多种关系的数据类型的集合。
Pandas中两种常用的数据结构:
Series
用于存储一行或一列的数据,以及与之相关的索引的集合。
DataFrame数据框
用于存储多行和多列的数据集合
可与Excel类比
Series、DataFrame参考印象笔记《Python数据分析与展示》
向量化运算
向量化计算是一种特殊的并行计算方式,可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令用于一个数据/向量。
numpy中ndarray中的相关操作,即为向量化运算。
原则:
数据处理
数据导入
导入CSV文件
参考:参数详解
使用pandas库中read_csv
函数导入CSV文件
from pandas import read_csv
read_csv(file,encoding)
numpy库中用loadtxt
导入CSV文件。
导入文本文件
使用pandas库中read_table
函数导入普通文本文件。
语法:
from pandas import read_table
read_table(file,names=[列名1,列名2,……],sep="",encoding,……)
如果存在中文路径,在read_table参数中增加engine='python'
参数。
导入Excel文件
使用read_excel
函数导入Excel文件。
from pandas import read_excel
read_excel(fileName,sheetname,names)
数据导出
导出文本文件
**to_csv**函数:
to_csv(filePath,sep=",",index=True,header=True)
![Alt text](./1499088638638.png)
重复值处理
数据结构中,行相同的数据只保留一行。 找出重复位置:
dIndex=df.duplicated()
根据某些列,找出重复位置:
dIndex=df.duplicated('id')
dIndex=df.duplicated(['id','key'])
提取重复数据
df[dIndex]
默认根据所有列,删除:
newdf=df.drop_duplicates()
指定某一列,删除:
newdf=df.drop_duplicates('id')
缺失值处理
**三种措施:**
- 数据补齐:
df.fillna('value')
- 删除对应缺失行:
df.dropna()
- 不处理
读取文件时,通过指定值作为缺失值。如‘缺失值’代表缺失值:
df=pd.read_csv(r'D:\data.csv',na_values=['缺失值'])
空格值处理
strip()函数
- lstrip():Left,左边空格
- rstrip():Right,右边空格
- strip():两边空格
字段抽取
根据已知列数据的开始和结束为止,抽取出新的列。
字段抽取函数:slice(start,stop)
。
例如:提取‘ABC1234’中的数字等。
df['列名'].str.slice(0,3)
字段拆分
类似于Excel中的分列。
分割函数:df.str.split(sep,n,expand=False)
- sep:用于分割的字符串
- n:分割为多少列
- expand:是否展开为数据框,默认FALSE
返回值:
- 如果expand为True,返回值为DataFrame
- 如果expand为FALSE,返回值为Series
记录抽取
根据一定的条件,对数据进行抽取。
类似于Excel中的过滤。
记录抽取函数:dataframe[condition]
注意:comments为列名。
随机抽样
随机抽样函数:
data.sample(n,frac,replace=False)
- n:按个数抽样
- frac:按百分比抽样
- replace:是否可放回抽样,默认FALSE不可放回。
分层抽样:
按照某一列进行分组,用data.groupby('class')
.其实就是对data数据进行按照class列进行分组,返回一个字典。
typicalNDict:1组抽2个,2组抽4个,3组抽6个。
记录合并
将两个结构相同的DataFrame,合并成一个DataFrame。
函数:pd.concat([df1,df2,……])
numpy中,用concatenate()函数。
字段合并
字段拆分的逆操作。用“+”号。
必须是str型数据:
df.astype(str)
字段匹配
根据各表共有的关键字段,把各表所需的记录一一对应起来。
表的合并.
字段匹配函数:
merge(x,y,left_on,right_on,how)
- x,y:待匹配df
- left_on:第一个df用于匹配的列
- right_on:第二个df用于匹配的列
- how:
-
- ‘left’:左连接,即使连接不上,保留左边没连接(匹配)上的部分
- ‘right’:右连接,即使连接不上,保留右边没连接(匹配)上的部分
- ’outer’:外连接,都保留。
简单计算
data['total']=data.price*data.num