Python介绍、 Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置
python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
数据探索(数据清洗)①——数据质量分析(对数据中的缺失值、异常值和一致性进行分析)
数据探索(数据清洗)②—Python对数据中的缺失值、异常值和一致性进行处理
数据探索(数据集成、数据变换、数据规约)③—Python对数据规范化、数据离散化、属性构造、主成分分析 降维
数据探索(数据特征分析)④—Python分布分析、对比分析、统计量分析、期性分析、贡献度分析、相关性分析
挖掘建模①—分类与预测
挖掘建模②—Python实现预测
挖掘建模③—聚类分析(包括相关性分析、雷达图等)及python实现
挖掘建模④—关联规则及Apriori算法案例与python实现
挖掘建模⑤—因子分析与python实现

数据探索(数据特征分析④)—Python分布分析、对比分析、统计量分析、期性分析、贡献度分析、相关性分析

  • 数据特征分析
    • 分布分析
      • 定量数据的分布分析
        • 遵循的主要原则有
        • 实例Python实现
          • 代码实现
      • 定性数据的分布分析
    • 对比分析
      • 对比分析主要有以下两种形式:
      • 代码实现
    • 统计量分析
    • 周期性分析
    • 贡献度分析
    • 相关性分析
      • 直接绘制散点图
      • 绘制散点图矩阵
        • 代码实现
      • 计算相关系数
        • 代码实现
  • 数据特征分析常用Python函数
    • 统计特征函数
      • sum
      • mean
      • var
      • std
      • corr
      • cov
      • skew/kurt
      • Describe
      • cum系列函数
      • rolling_系列
    • 统计作图函数
      • plot
      • pie
      • hist
      • boxplot
      • plot(logx = True) / plot(logy = True)
      • plot(yerr = error)

数据特征分析

对数据进行质量分析以后,接下来就是对数据做特征分析。一般可通过绘制图表、计算某些特征量等手段进行数据的特征分析。

分布分析

分布分析能揭示数据的分布特征和分布类型,便于发现某些特大或特小的可疑值。对于定量数据,欲了解其分布形式,是对称的、还是非对称的,可做出频率分布表、绘制频率分布直方图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。

定量数据的分布分析

对于定量变量而言,做频率分布分析时选择“组数”和“组宽”是主要的问题,一般按照以下步骤:

  1. 求极差 : 极差 = 最大值 - 最小值
  2. 决定组距与组数: 这里根据业务数据的含义,组数 = 极差/组距
  3. 决定分点
  4. 列出频率分布表
  5. 绘制频率分布直方图

遵循的主要原则有

  • 各组之间必须是相互排斥的
  • 各组必须将所有的数据包含在内
  • 各组的组宽最好相等

实例Python实现

  • 第一步:求极差

  • 第二步:分组
    这里根据业务数据的含义,可取组距为10。

  • 第三步:决定分点,如下表:

  • 第四步:绘制频率分布直方图

  • 第五步:绘制频率分布直方图

代码实现
import pandas as pdheight = 'data/身高_无缺失.xls'  # 餐饮数据
data = pd.read_excel(height, index_col=u'id')  # 读取数据,指定“id”列为索引列
data = data.loc[(data['身高'] > 130) & (data['身高'] < 200)]  # 过滤异常数据
statistics = data.describe()  # 保存基本统计量statistics.loc['range'] = statistics.loc['max']-statistics.loc['min']  # 极差
statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean']  # 变异系数
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%']  # 四分位数间距print(statistics)

import matplotlib.pyplot as plt  # 导入图像库
import seaborn as sns
from scipy.stats import norm  # 用于拟合正态分布曲线
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
def norm_comparision_plot(data, title, figsize=(12, 10), color="#099DD9",ax=None, surround=True, grid=True):# """# function: 传入 DataFrame 指定行,绘制其概率分布曲线与正态分布曲线(比较)# color: 默认为标准天蓝  #F79420:浅橙  ‘green’:直接绿色(透明度自动匹配)# ggplot 经典三原色:'#F77B72':浅红, '#7885CB':浅紫, '#4CB5AB':浅绿# ax=None: 默认无需绘制子图的效果;  surround:sns.despine 的经典组合,#                                      默认开启,需要显式关闭# grid:是否添加网格线,默认开启,需显式关闭# """plt.figure(figsize=figsize)  # 设置图片大小# fit=norm: 同等条件下的正态曲线(默认黑色线);lw-line width 线宽sns.distplot(data, fit=norm, color=color,kde_kws={"color": color, "lw": 3}, ax=ax)(mu, sigma) = norm.fit(data)  # 求同等条件下正态分布的 mu 和 sigma# 添加图例:使用格式化输入,loc='best' 表示自动将图例放到最合适的位置plt.legend([title+'概率密度图', '正态分布曲线拟合图 ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)], loc='best')plt.ylabel('频率')plt.title(title+"分布图")if surround == True:# trim=True-隐藏上面跟右边的边框线,left=True-隐藏左边的边框线# offset:偏移量,x 轴向下偏移,更加美观sns.despine(trim=True, left=True, offset=10)if grid == True:plt.grid(True)  # 添加网格线# plt.savefig(f".\\img\\{title}分布图.png")plt.show()
norm_comparision_plot(data,'身高')

定性数据的分布分析

  • 对于定性变量,常常根据变量的分类类型来分组,可以采用饼图和条形图来描述定性变量的分布。
  • 饼图的每一个扇形部分代表每一类型的百分比或频数,根据定性变量的类型数目将饼图分成几个部分,每一部分的大小与每一类型的频数成正比;条形图的高度代表每一类型的百分比或频数,条形图的宽度没有意义。

对比分析

对比分析是指把两个相互联系的指标数据进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。特别适用于指标间的横纵向比较、时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的步骤,选择得合适,才能做出客观的评价,选择不合适,评价可能得出错误的结论。

对比分析主要有以下两种形式:

  • 第一种:绝对数比较
    它是利用绝对数进行对比,从而寻找差异的一种方法。
  • 第二种:相对数比较
    它是由两个有联系的指标对比计算的,用以反映客观现象之间数量联系程度的综合指标,其数值表现为相对数。由于研究目的和对比基础不同,相对数可以分为以下几种:
    1)结构相对数:
    将同一总体内的部分数值与全部数值对比求得比重,用以说明事物的性质、结构或质量。如居民食品支出额占消费支出总额比重、产品合格率等。
    2)比例相对数:
    将同一总体内不同部分的数值对比,表明总体内各部分的比例关系,如人口性别比例、投资与消费比例等。
    3)比较相对数:
    将同一时期两个性质相同的指标数值对比,说明同类现象在不同空间条件下的数量对比关系。如不同地区商品价格对比,不同行业、不同企业间某项指标对比等。
    4)强度相对数:
    将两个性质不同但有一定联系的总量指标对比,用以说明现象的强度、密度和普遍程度。如人均国内生产总值用“元/人”表示,人口密度用“人/平方公里”表示,也有用百分数或千分数表示的,如人口出生率用‰表示。
    5)计划完成程度相对数:
    是某一时期实际完成数与计划数对比,用以说明计划完成程度。
    6)动态相对数:
    将同一现象在不同时期的指标数值对比,用以说明发展方向和变化的速度。如发展速度、增长速度等。

代码实现

outputfile = 'tmp/sport.csv'  # 输出数据路径
data = pd.read_csv(outputfile)
data[['年级代码']] = data[['年级代码']].astype(str)  # 转字符串
scorestrs = ["体重指数成绩", "肺活量成绩", "50米跑成绩", "一分钟仰卧成绩","坐位体前屈成绩", "立定跳远成绩", "800米成绩", "总分"]
nj = data.groupby(data['年级代码'])
markers = ['*', 'o', '1', '2']
colors = ['steelblue', 'indianred', 'orange', 'green']
labels = ['大一', '大二', '大三', '大四']
i = 0
for njdm in nj.count().index.tolist():data_nj = nj.get_group(njdm)[scorestrs]plt.plot(scorestrs,  # x轴数据data_nj.mean().values.tolist(),  # y轴数据linestyle='-',  # 折线类型,实心线marker=markers[i],color=colors[i],  # 折线颜色label=labels[i])i = i+1
plt.ylabel('考试类别')
plt.xlabel('平均分数')
plt.title('不同年级各体测项目平均分')
plt.ylim((0, 100))  # y轴的刻度范围被设为a'到b'
plt.legend() # 添加图例
plt.show()

统计量分析

用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。
平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。
集中趋势度量主要有:均值、中位数、众数
离中趋势度量主要有:极差、标准差、变异系数

周期性分析

周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。周期性趋势相对较长的有年度周期性趋势、季节性周期趋势,相对较短的一般有月度周期性趋势、周度周期性趋势,甚至更短的天、小时周期性趋势。

贡献度分析

贡献度分析又称帕累托分析,帕累托法则又称20/80定律。同样的投入放在不同的地方会产生不同的效益。比如对一个公司来讲,80%的利润常常来自于20%最畅销的产品;而其他80%的产品只产生了20%的利润。贡献度分析要求我们抓住问题的重点,找到那最有效的20%的热销产品、渠道或者销售人员,在最有效的20%上投入更多资源,尽量减少浪费在80%低效的地方。

相关性分析

分析连续变量之间线性的相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。
相关性分析方法主要有:

直接绘制散点图

绘制散点图矩阵

需要同时考察多个变量间的相关关系时,若一一绘制它们间的简单散点图,十分麻烦。此时可利用散点图矩阵来同时绘制各自变量间的散点图,这样可以快速发现多个变量间的主要相关性,这一点在进行多元线性回归时显得尤为重要。

代码实现

# 相关关系分析
from pandas.plotting import scatter_matrix
stock_data = read_excel('.\\doc\\data.xls',parse_dates=['date'], index_col='date')
scatter_matrix(data[['volume', "open", "close", "low"]])
plt.show()

计算相关系数

为了更加准确的描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的如Pearson相关系数、Spearman秩相关系数和判定系数。


代码实现

Spearman(Pearson)相关系数

import numpy as np
cov = np.corrcoef(data[['volume', 'USD/CNY', 'p_change', 'EUR/CNY', '100JPY/CNY']].T)
print(cov)
img = plt.matshow(cov)
plt.colorbar(img, ticks=[-1, 0, 1])
plt.show()


pearson皮尔森相关系数

import seaborn as sns
ylabels = data[['volume', 'USD/CNY', 'p_change', 'EUR/CNY', '100JPY/CNY']].columns.values.tolist()
plt.subplots(figsize=(15, 10))  # 设置画面大小
# 皮尔逊相关系数——Pearson correlation coefficient,用于度量两个变量之间的相关性,其值介于-1与1之间,值越大则说明相关性越强。'''0.8-1.0     极强相关0.6-0.8     强相关0.4-0.6     中等程度相关0.2-0.4     弱相关0.0-0.2     极弱相关或无相关'''
sns.heatmap(data['volume', 'USD/CNY', 'p_change', 'EUR/CNY', '100JPY/CNY']].corr(), annot=True, vmax=1, square=True,yticklabels=ylabels, xticklabels=ylabels, cmap="RdBu")

数据特征分析常用Python函数

统计特征函数

统计特征函数用于计算数据的均值、方差、标准差、分位数、相关系数、协方差等,这些统计特征能反映出数据的整体趋势。本小节所介绍的统计特征函数如下表所示。


sum

功能:计算数据样本的总和(按列计算)
使用格式:
D.sum() 按列计算样本D的总和,样本D可为DataFrame或者Series。

mean

功能:计算数据样本的算术平均数
使用格式:
D.mean() 按列计算样本D的均值,样本D可为DataFrame或者Series。

var

功能:计算数据样本的方差
使用格式:
D.var() 按列计算样本D的均值,样本D可为DataFrame或者Series。

std

功能:计算数据样本的标准差
使用格式:
D.std() 按列计算样本D的均值,样本D可为DataFrame或者Series。

corr

功能:计算数据样本的Spearman(Pearson)相关系数矩阵
使用格式:
D.corr(method=‘pearson’) 样本D可为DataFrame,返回相关系数矩阵,method参数为计算方法,支持ppearson(皮尔森相关系数,默认选项)、kendall(肯德尔系数)、spearman(斯皮尔曼系数);
S1.corr(S2, method=‘pearson’) S1、S2均为Series,这种格式指定计算两个Series之间的相关系数。

cov

功能:计算数据样本的协方差矩阵
使用格式:
D.cov() 样本D可为DataFrame,返回协方差矩阵;
S1.cov(S2) S1、S2均为Series,这种格式指定计算两个Series之间的协方差。

skew/kurt

功能:计算数据样本的偏度(三阶矩)/ 峰度(四阶矩)
使用格式:
D.skew() / D.kurt() 计算样本D的偏度(三阶矩)/ 峰度(四阶矩)。
样本D可为DataFrame或Series。

Describe

功能:直接给出样本数据的一些基本的统计量,包括均值、标准差、最大值、最小值、分位数等。
使用格式:
D.describe() 括号里可以带一些参数,比如percentiles = [0.2, 0.4, 0.6, 0.8]就是指定只计算0.2、0.4、0.6、0.8分位数,而不是默认的1/4、1/2、3/4分位数。

cum系列函数

cum系列函数是作为DataFrame或Series对象的方法而出现的,命令格式为D.cumsum()。

rolling_系列

rolling_系列是pandas的函数,不是DataFrame或Series对象的方法,使用格式为pd.rolling_mean(D, k),意思是每k列计算一次均值,滚动计算。

统计作图函数

通过统计作图函数绘制的图表可以直观地反映出数据及统计量的性质及其内在规律,如盒图可以表示多个样本的均值,误差条形图能同时显示下限误差和上限误差,最小二乘拟合曲线图能分析两变量间的关系。
Python的主要作图库是Matplotlib,而Pandas基于Matplotlib并对某些命令作了简化,因此作图通常是Matplotlib和Pandas相互结合着使用。

导入包

plot

功能:绘制线性二维图,折线图。
使用格式:
plt.plot(x, y, S) 这是Matplotlib通用的绘图方式,绘制y对于x(即以x为横轴的二维图形),字符串参量S指定绘制时图形的类型、样式和颜色,常用的选项有:’b’为蓝色、’r’为红色、’g’为绿色、’o’为圆圈、’+’为加号标记、’ -’为实线、’ --’为虚线。当x、y均为实数同维向量时,则描出点 ,然后用直线依次相连。
D.plot(kind = ‘box’) 这里使用的是DataFrame或Series对象内置的方法作图,默认以Index为横坐标,每列数据为纵坐标自动作图,通过kind参数指定作图类型,支持line(线)、bar(条形)、barh、hist(直方图)、box(箱线图)、kde(密度图)、area、pie(饼图)等,同时也能够接受plt.plot()中接受的参数。因此,如果数据已经被加载为Pandas中的对象,那么以这种方式作图是比较简洁的。

pie

功能:绘制饼型图。
使用格式:
plt.pie(size) 使用Matplotlib绘制饼图,其中size是一个列表,记录各个扇形的比例。

hist

功能:绘制二维条形直方图,可显示数据的分布情形。
使用格式:
Plt.hist(x, y) 其中x是待绘制直方图的一维数组,y可以是整数,表示均匀分为n组;也可以是列表,列表各个数字为分组的边界点(即手动指定分界点)。

boxplot

功能:绘制样本数据的箱型图。
使用格式:
D.boxplot() / D.plot(kind = ‘box’) 有两种比较简单的方式绘制D的箱型图,其中一种是直接调用DataFrame的boxplot()方法,另外一种是调用Series或者DataFrame的plot()方法,并用kind参数指定箱型图(box)。其中,盒子的上、下四分位数和中值处有一条线段。箱形末端延伸出去的直线称为须,表示盒外数据的长度。如果在须外没有数据,则在须的底部有一点,点的颜色与须的颜色相同。

plot(logx = True) / plot(logy = True)

功能:绘制x或y轴的对数图形。
使用格式:
D.plot(logx = True) / D.plot(logy = True) 对x轴(y轴)使用对数刻度(以10为底),y轴(x轴)使用线性刻度,进行plot函数绘图,D为Pandas的DataFrame或者Series。

plot(yerr = error)

功能:绘制误差条形图。
使用格式:
D.plot(yerr = error) 绘制误差条形图。D为Pandas的DataFrame或Series,代表着均值数据列,而error则是误差列,此命令在y轴方向画出误差棒图;类似地,如果设置参数xerr = error,则在x轴方向画出误差棒图。

数据探索(数据特征分析)④—Python分布分析、对比分析、统计量分析、期性分析、贡献度分析、相关性分析相关推荐

  1. R语言 零基础入门教程第11章 Rattle可视化数据挖掘工具(1)Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例

    关注公众号凡花花的小窝,收获更多的考研计算机专业编程相关的资料 本章内容 Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例 本章目标 了解Rattle的安装及 ...

  2. RTK模块性能测试分析对比-GNSS实测- RTK板卡100赫兹延迟实测及分析

    RTK模块性能测试分析对比-GNSS实测- RTK板卡100赫兹延迟实测及分析 Septentrio_13589036830 前文说到了采用Septentrio的PPK免相控免像控技术三个客户(Win ...

  3. 机器学习之数据探索——数据特征分析(对比分析与统计量分析)

    在数据探索工作中,作为数据特征分析的角度,对比分析.统计量分析同样是发掘数据间关系与数据特征的重要渠道. 1 对比分析 对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小, ...

  4. 数据探索-数据特征分析

    数据特征分析 对于数据的特征分析是十分重要的,可以让我们更加的了解数据的信息,在下一步的数据分析.数据建模能帮助我们做出更好的决策.同时能给我们在解决问题上提供灵感. 数据特征分析可以分为如下几类 1 ...

  5. 基于c#的相关性分析_基于数字高程模型的城市地貌与地名相关性分析——以兰州市为例...

    江西地名研究 基于数字高程模型的城市地貌与地名 相关性分析--以兰州市为例 文/张鹏丽,李育 提要:以兰州市为例,使用 ASTER 30米分辨率的数字高程模型DEM并提取了兰州市周边所有地名信息:通过 ...

  6. python数据分析与挖掘数据之探索数据

    文章目录 三.数据探索 数据质量分析 缺失值分析 异常值分析 一致性分析 数据特征分析 1.分布分析 2.对比分析 3.统计量分析 4.周期性分析 分析:总体来看,正常用户和窃电用户在2012年2月份 ...

  7. Python数据挖掘:数据探索,数据清洗,异常值处理

    来源:天善智能韦玮老师 课堂笔记 作者:Dust 探索性数据分析Exploratory Data Analysis,EDA 数据探索的核心是︰ 1.数据质量分析(跟数据清洗密切联系) 2.数据特征分析 ...

  8. 用 Python 对数据进行相关性分析

    在进行数据分析时,我们所用到的数据往往都不是一维的,而这些数据在分析时难度就增加了不少,因为我们需要考虑维度之间的关系.而这些维度关系的分析就需要用一些方法来进行衡量,相关性分析就是其中一种.本文就用 ...

  9. 数据预处理—-(数据探索、数据清理、数据集成、数据规约、数据变换)

    数据挖掘概念与技术 定义挖掘目标–>数据取样–>数据探索–>数据预处理–>挖掘建模–>模型评价 第一章.数据 挖掘的数据类型:时间序列,序列,数据流,时间空间数据,多媒体 ...

  10. 数据分析系列之数据探索

    根据观测,调查收集到的初步的样本数据集后,接下来要考虑的是样本的数据集的数量和质量是否满足模型构建的要求 ,是否出现从未设想过的数据状态?其中有什么明显的规律趋势,各因素之间有什么关联性?通过检验数据 ...

最新文章

  1. 写代码时发现......还得是 SpringBoot !一篇拿下
  2. 用shell脚本配置oracle安装需求
  3. 云原生生态周报 Vol. 15 | K8s 安全审计报告发布
  4. mysql 5.7 centos 7_CentOS 7 下 MySQL 5.7 的安装与配置
  5. maven添加sqlserver的jdbc驱动包
  6. 方法大纲_社会工作师(中级)中级实务 考试大纲 附使用方法
  7. 数据类型的基本表达式
  8. 程序设计教程用c 语言编程,程序设计教程--用C 语言编程
  9. LayaAir UI 组件 # Button 按钮
  10. WP中Document的层次设计
  11. 大学计算机vb基础知识6,计算机基础课-VB6选择题汇编(2011-2016)
  12. rose双机热备mysql,实战:ROSE HA双机热备系统安装指南
  13. android版直播伴侣,来疯直播伴侣
  14. PING 192.168.5.13 (192.168.5.13 ) 56(84) data bytes后长时间不响应
  15. 浏览器获取京东cookie教程
  16. java文字版格斗游戏。
  17. 微信公众平台开发——新增素材
  18. 51单片机用c语言倒计时程序,51单片机实现100以内倒计时,求大佬指点。
  19. Java 杨辉三角
  20. linux使用ftp命令_如何在Linux上使用FTP命令

热门文章

  1. <C语言程序实例>C语言实现菱形输出
  2. java 加减乘除_加减乘除运算(Java)
  3. 一张图回顾Hadoop十年:Hadoop老矣,尚能饭否?
  4. 如何装计算机网络驱动,网卡驱动怎么安装,手把手教你电脑网卡驱动怎么安装...
  5. Ubuntu 18.04 增加swap空间 亲测有效
  6. HCIA-IoT 个人学习总结 Day3
  7. linux系统及编程基础唐晓君,Linux-Shell编程之判断文件类型
  8. 个人博客如何申请ICP备案
  9. 初中英语语法(015)-附加疑问句
  10. 安利一款SOLIDWORKS插件,可一键帮你分离配置那种!