设为首页 加入收藏

TOP

数据分析实战(一)
2017-09-30 16:57:42 】 浏览:7172
Tags:数据分析 实战

Edit

 



数据分析实战


使用适当的分析方法,对收集的数据进行分析,总结规律,提取有价值的信息,形成有效结论的过程。

基础分析方法:

对比分析、分组分析、结构分析、分布分析、交叉分析、矩阵分析等方法。

高级分析方法:

回归分析、聚类分析、决策树、神经网络、因子分析、时间序列分析等方法。

数据分析的作用:

  • 现状分析:日报、月报等
  • 原因分析:专题分析
  • 预测分析:年度计划制定时分析
  • 现状分析:日报、月报等
  • 原因分析:专题分析
  • 预测分析:年度计划制定时分析

数据分析流程:

Alt text

数据准备

数据类型

  • Logical,逻辑型,布尔型

    • 两种取值:True、False
    • 运算规则:与(&)、或(|)、非(not)
  • Numerical,数值型

    • 实数
    • 运算规则:加、减、乘、除、取整(//)、求余(%)、乘方(**)
  • Character,字符型

数据结构

相互之间存在一种或多种关系的数据类型的集合。

Pandas中两种常用的数据结构:

  • Series
  • DataFrame

Series

用于存储一行或一列的数据,以及与之相关的索引的集合。

DataFrame数据框

用于存储多行和多列的数据集合
可与Excel类比

Series、DataFrame参考印象笔记《Python数据分析与展示》

向量化运算

向量化计算是一种特殊的并行计算方式,可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令用于一个数据/向量。

numpy中ndarray中的相关操作,即为向量化运算。

原则:

  • 尽可能避免显示的for循环
  • 过早的优化是魔鬼

数据处理

数据导入

导入CSV文件

参考:参数详解

使用pandas库中read_csv函数导入CSV文件

from pandas import read_csv
read_csv(file,encoding)

 

  • 导入中文时,encoding=’utf-8’

 

numpy库中用loadtxt导入CSV文件。

导入文本文件

使用pandas库中read_table函数导入普通文本文件。
语法:

from pandas import read_table
read_table(file,names=[列名1,列名2,……],sep="",encoding,……)

Alt text

Alt text

如果存在中文路径,在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]

  • condition:过滤条件。

Alt text

Alt text

注意:comments为列名

随机抽样

随机抽样函数:

data.sample(n,frac,replace=False)
  • n:按个数抽样
  • frac:按百分比抽样
  • replace:是否可放回抽样,默认FALSE不可放回。

分层抽样:

按照某一列进行分组,用data.groupby('class').其实就是对data数据进行按照class列进行分组,返回一个字典。

Alt text

Alt text

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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python文件和目录操作方法 下一篇python2/python3中关于写入csv文..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目