数据分析实战

Edit


  • 数据分析实战
    • 数据准备
      • 数据类型
      • 数据结构
        • Series
        • DataFrame数据框
      • 向量化运算
    • 数据处理
      • 数据导入
        • 导入CSV文件
        • 导入文本文件
        • 导入Excel文件
      • 数据导出
        • 导出文本文件
      • 重复值处理
      • 缺失值处理
      • 空格值处理
      • 字段抽取
      • 字段拆分
      • 记录抽取
      • 随机抽样
      • 记录合并
      • 字段合并
      • 字段匹配
      • 简单计算
      • 数据标准化
      • 数据分组
      • 时间处理
      • 时间抽取
      • 虚拟变量 dummy variables
    • 数据分析
      • 基本统计
      • 分组分析
      • 分布分析
      • 交叉分析
      • 结构分析
      • 相关分析
      • RFM分析
      • 矩阵分析
    • 数据可视化
      • 散点图scatter
      • 折线图
      • 饼图
      • 柱形图
      • 直方图
      • 地图
      • 热力地图

数据分析实战



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

基础分析方法:

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

高级分析方法:

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

数据分析的作用:

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

数据分析流程:

数据准备

数据类型

  • 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_csvread_csv(file,encoding)
  • 导入中文时,encoding=’utf-8’

numpy库中用loadtxt导入CSV文件。

导入文本文件

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

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

如果存在中文路径,在read_table参数中增加engine=‘python‘参数。

导入Excel文件

使用read_excel函数导入Excel文件。

from pandas import read_excelread_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:过滤条件。

注意: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

数据标准化

无量纲化

0-1标准化

data[‘scale‘]=round(dta.score-data.score.min()/(data.score.max()-data.score.min()),2)

数据分组

根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究。——分档

函数:

cut(series,bins,right=True,labels=NULL)
  • bins:分组的划分数组
  • right:分组的时候,右边是否闭合
  • labels:分组的自定义标签

时间处理

时间转换:将字符型的时间格式数据转换为时间型数据。

时间转换函数:

datatime=pd.to_datatime(dataString,format)

时间格式化:将时间型数据按照指定格式转换为字符型数据。

时间格式化函数:

dateTimeFormat=datetime.dt.strftime(format)

时间属性抽取:从日期格式里抽取需要的部分,如月、日。
抽取语法:

datetime.dt.property

时间抽取

根据一定的条件,对时间格式的数据进行抽取。

  • 根据索引进行抽取
    • DataFrame.ix[start:end]
    • DataFrame.ix[dates]
  • 根据时间列进行抽取
    • DataFrame[condition]

注意:df.ix[]:通过行号或行标签索引。

虚拟变量 dummy variables

虚拟变量,也叫哑变量和离散特征编码,可用来表示分类变量、非数量因素可能产生的影响。

  • 离散特征取值之间有大小意义:尺寸(L,M)
    • pd.Series.map(dict)
  • 离散特征取值之间无大小意义:颜色(R,G)
    • pd.get_dummies()

具体:

pd.get_dummies(data,prefix=None,prefix_sep=‘_‘,dummy_na=False,columns=None,drop_first=False)

数据分析

基本统计

描述性统计分析函数:describe(),一次性求得基本情况。

另外,还可用下表统计函数:

还有:

  • 累计求和:cumsum
  • 最大值最小值所在位置:argmin()、argmax()
  • 百分位数:quantile()

分组分析

根据分组字段,将分析对象划分成不同的部分,以进行对比分析各组之间的差异性。

常用统计指标:计数、求和、平均值。

分组统计函数:

分布分析

将数据等距或者不等距的分组,进行研究各组分布规律。

交叉分析

分析两个或两个以上分组变量之间的关系,以交叉表的形式进行。

交叉计数函数(透视表):

pivot_table(values,index,columns,aggfunc,fill_value)

结构分析

在分组及交叉的基础上,计算各组成部分所占比重,进而分析总体的内部特征。

外运算:

内运算:

相关分析

研究两个或两个以上随机变量之间相互依存关系的方向和密切程度。

  • 线性相关
  • 非线性相关

线性相关关系主要采用皮尔逊(Pearson)相关系数r来度量连续变量之间线性相关强度。

相关分析函数:

  • DataFrame.corr():计算每个列两两之间的相关度,返回DataFrame。
  • Series.corr(other):计算该序列与传入列之间的相关度,返回一个数值,即相关度。

RFM分析

根据客户活跃程度和交易金额贡献,进行客户价值分析。

RFM分析过程:

矩阵分析

根据事物(产品、服务等)的两个重要属性(指标)作为分析依据,进行关联分析(象限分析)。

数据可视化

散点图scatter

plot(x,y,‘.‘,color=(r,g,b))

折线图

plt(x,y,style,color,linewith)

饼图

plt.pie(x,labels,colors,explode,autopct)

柱形图

bar(left,height,width,color)barh(left,height,width,color)

直方图

hist(x,color,bins,cumulative=False)

地图

地图绘制步骤:

  1. 获取地图对象,获取每个区域的名字以及顺序;
  2. 在每个区域的名字和顺序后面,加上需要展示的数据及经纬度;
  3. 根据数据大小,设置每个区域展示颜色(0,1)。
  4. 根据颜色进行填充
  5. 根据经纬度进行标注地图的名字

需要安装Basemap库.

热力地图

时间: 2024-10-28 11:13:21

数据分析实战的相关文章

R语言速成实战 R语言数据分析实战

详情请交流  QQ  709639943 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经典算法与应用 00.老司机学python篇:第一季(基础速过.机器学习入门) 00.Python 从入门到精通 78节.2000多分钟.36小时的高质量.精品.1080P高清视频教程!包括标准库.socket网络编程.多线程.多进程和协程.

数据分析实战之自如房租分析

代码地址如下:http://www.demodashi.com/demo/13312.html 项目说明 通过对深圳自如网站上的房源情况进行探索分析,进而了解深圳自如房租的相关情况. 探索的问题 房租的分布情况 哪种户型的房源最多 哪条地铁线附近的房租比较贵 哪个区的房租更贵 房源的面积分布情况 数据说明 数据来源深圳自如网站(仅包含可出租状态的合租房源) 采用集搜客工具爬取 house_area: 表示房间的面积 house_toom: 表示出租房屋的户型 house_price: 表示每月的

【python数据分析实战】电影票房数据分析(一)数据采集

目录 1.获取url 2.开始采集 3.存入mysql 本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析. 1.获取url 我们先打开猫眼票房http://piaofang.maoyan.com/dashboard?date=2019-10-22 ,查看当日票房信息, 但是在通过xpath对该url进行解析时发现获取不到数据. 于是按F12打开Chrome DevTool,按照如下步骤抓包 再打开获取到的url:http://pf.maoyan.com/second-bo

【python数据分析实战】电影票房数据分析(二)数据可视化

目录 图1 每年的月票房走势图 图2 年票房总值.上映影片总数及观影人次 图3 单片总票房及日均票房 图4 单片票房及上映月份关系图 在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来并做成动态可视化. 图1 每年的月票房走势图 第一张图,我们要看一下每月的票房走势,毫无疑问要做成折线图,将近10年的票房数据放在一张图上展示. 数据抽取: 采集到的票房数据是

Python Spark大数据分析实战教程下载|pyspark教程

分享网盘下载地址--https://pan.baidu.com/s/1c1OjpSW 密码: a5ks Python是数据分析最常用的语言之一,而Apache Spark是一个开源的强大的分布式查询和处理引擎. 本课程以案例驱动的方式讲解如何基于Python语言进行Spark Application编程,完成数据获取.处理.数据分析及可视化方面常用的数据分析方法与技巧,通过这些实际案例让学员轻松掌握使用PySpark分析来自不同领域的数据.

python数据分析实战-第9章-数据分析实例气象数据

第9章 数据分析实例--气象数据 2309.1 待检验的假设:靠海对气候的影响 2309.2 数据源 2339.3 用IPython Notebook做数据分析 2349.4 风向频率玫瑰图 2469.5 小结 251 123 import numpy as npimport pandas as pdimport datetime 1 ferrara = pd.read_json('http://api.openweathermap.org/data/2.5/history/city?q=Fer

数据分析实战基础--在R 软件中运用

一.R 中的循环 for循环语句 while循环语句 if()   next---跳过. if()break----不执行. true  一直执行. 要赋初始值 repeat 循环语句

R数据分析实战学习笔记(2)

3.17 程序结构 有3种结构: 顺序结构:A---B 选择结构:只有满足一定条件时才会执行的程序模块. 循环结构:只要满足一定的条件,程序模块就会不断的执行. 3.18 for循环  遍历 seq:序列.seq()函数创建序列. 注:seq为各种序列时,则为各序列的名字:seq为数字时,则写成 for(i in 1:n). 对于数据框data frame,使用for循环默认是按列遍历的.如何按行遍历.使用: 3.19 while循环  条件为真 while (condition) expr 一

python数据分析实战-第6章-深入pandas数据处理

第6章 深入pandas:数据处理 117 6.1 数据准备 117 合并 1234567891011 #merge是两个dataframe共同包含的项import numpy as npimport pandas as pdframe1 = pd.DataFrame( {'id':['ball','pencil','pen','mug','ashtray'], 'price': [12.33,11.44,33.21,13.23,33.62]})print(frame1)print()frame