热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《python数据分析与挖掘实战》笔记第3章

文章目录第3章:数据探索3.1、数据质量分析3.2、数据特征分析3.2.1、分布分析3.2.2、对比分析3.2.3、统计量分析1.集中趋势度量2.离中趋势度量3.2.

文章目录

    • 第3章:数据探索
      • 3.1、数据质量分析
      • 3.2、数据特征分析
        • 3.2.1、分布分析
        • 3.2.2、对比分析
        • 3.2.3、统计量分析
          • 1.集中趋势度量
          • 2.离中趋势度量
        • 3.2.4、周期性分析
        • 3.2.5、贡献度分析
        • 3.2.6、相关性分析
          • 1. 直接绘制散点图
          • 2. 绘制散点图矩阵
          • 3. 计算相关系数
      • 3.3、python主要数据探索函数
        • 3.3.1、基本统计特征函数
          • corr()
          • cov()
          • skew/kurt
        • 3.3.2、拓展统计特征函数
        • 3.3.3、统计作图函数
          • (1) plot
          • (2) pie
          • (3) hist
          • (4) boxplot
          • (5) plot(logx = True) / plot(logy = True)
          • (6)plot(yerr = error)
      • 3.4、小结


第3章:数据探索

根据观测、调查收集到初步的样本数据集后,接下来要考虑的问题是:

  • 样本数据集的数量和质量是否满足模型构建的要求?
  • 是否出现从未设想过的数据状态?
  • 其中有没有什么明显的规律和趋势?
  • 各因素之间有什么样的关联性?

3.1、数据质量分析

数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。

数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。

在常见的数据挖掘工作中,脏数据包括如下内容:

  • 缺失值
  • 异常值
  • 不一致的值
  • 重复数据及含有特殊符号(如#、¥、*)的数据

缺失值的处理分为删除存在缺失值的记录、对可能值进行插补和不处理。

异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点的分析。

代码清单3-1,餐饮销售额数据异常值检测代码

#-*- coding: utf-8 -*-
import pandas as pdcatering_sale = '../data/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列print(data.describe()) # 查看数据的基本情况import matplotlib.pyplot as plt #导入图像库plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号plt.figure() #建立图像
p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() #从小到大排序,该方法直接改变原对象#用annotate添加注释
#其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。
#以下参数都是经过调试的,需要具体问题具体调试。
for i in range(len(x)): if i>0:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))else:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))plt.show() #展示箱线图

describe()函数可以查看数据的基本情况

销量
count 200.000000
mean 2755.214700
std 751.029772
min 22.000000
25% 2451.975000
50% 2655.850000
75% 3026.125000
max 9106.440000

其中count是非空值数,通过len(data)可以知道数据的记录为201条,因此缺失值数为1。另外提供的基本参数还有平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。

  • 异常值检测箱型图
    异常值检测箱型图

  • 一致性分析
    数据不一致性是指数据的矛盾性、不相容性。直接对不一致的数据进行挖掘,可能会产生与实际相违背的挖掘结果。


3.2、数据特征分析


3.2.1、分布分析

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

  1. 定量数据的分布分析

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

1)求极差。
2)决定组距与组数。
3)决定分点。
4)列出频率分布表。
5)绘制频率分布直方图。

遵循的主要原则如下。
1) 各组之间必须是相互排斥的。
2) 各组必须将所有的数据包含在内。
3) 各组的组宽最好相等。

  1. 定性数据的分布分析

对于定性变量,常常根据变量的分类类型来分组,可以釆用饼图和条形图来描述定性变量的分布。

3.2.2、对比分析

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

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

(1)绝对数比较
绝对数比较是利用绝对数进行对比,从而寻找差异的一种方法。

(2) 相对数比较
相对数比较是由两个有联系的指标对比计算的,用以反映客观现象之间数量联系程度 的综合指标,其数值表现为相对数。由于研究目的和对比基础不同,相对数可以分为以下 几种。

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

3.2.3、统计量分析

用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。

平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;
反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。

1.集中趋势度量

(1)均值
均值是所有数据的平均值。

作为一个统计量,均值的主要问题是对极端值很敏感。如果数据中存在极端值或者数据 是偏态分布的,那么均值就不能很好地度量数据的集中趋势。为了消除少数极端值的影响, 可以使用截断均值或者中位数来度量数据的集中趋势。截断均值是去掉高、低极端值之后的平均数。

(2)中位数
中位数是将一组观察值按从小到大的顺序排列,位于中间的那个数。即在全部数据中, 小于和大于中位数的数据个数相等。

⑶众数
众数是指数据集中出现最频繁的值。众数并不经常用来度量定性变量的中心位置,更适 用于定性变量。众数不具有唯一性。当然,众数一般用于离散型变量而非连续型变量。

2.离中趋势度量

(1)极差
极差=最大值一最小值

极差对数据集的极端值非常敏感,并且忽略了位于最大值与最小值之间的数据的分布 情况。

(2)标准差
标准差度量数据偏离均值的程度

(3) 变异系数
变异系数度量标准差相对于均值的离中趋势

变异系数主要用来比较两个或多个具有不同单位或不同波动幅度的数据集的离中趋势。

(4 )四分位数间距
四分位数包括上四分位数和下四分位数。将所有数值由小到大排列并分成四等份,处于 第一个分割点位置的数值是下四分位数,处于第二个分割点位置(中间位置)的数值是中位 数,处于第三个分割点位置的数值是上四分位数。

四分位数间距,是上四分位数QU,与下四分位数QL之差,其间包含了全部观察值的一 半。其值越大,说明数据的变异程度越大;反之,说明变异程度越小。

代码清单3-2,餐饮销量数据统计量分析代码

#-*- coding: utf-8 -*-
#餐饮销量数据统计量分析
from __future__ import print_function
import pandas as pdcatering_sale = '../data/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
data &#61; data[(data[u&#39;销量&#39;] > 400)&(data[u&#39;销量&#39;] <5000)] #过滤异常数据
statistics &#61; data.describe() #保存基本统计量statistics.loc[&#39;range&#39;] &#61; statistics.loc[&#39;max&#39;]-statistics.loc[&#39;min&#39;] #极差
statistics.loc[&#39;var&#39;] &#61; statistics.loc[&#39;std&#39;]/statistics.loc[&#39;mean&#39;] #变异系数
statistics.loc[&#39;dis&#39;] &#61; statistics.loc[&#39;75%&#39;]-statistics.loc[&#39;25%&#39;] #四分位数间距print(statistics)

结果

销量
count 195.000000
mean 2744.595385
std 424.739407
min 865.000000
25% 2460.600000
50% 2655.900000
75% 3023.200000
max 4065.200000
range 3200.200000
var 0.154755
dis 562.600000

3.2.4、周期性分析

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

3.2.5、贡献度分析

贡献度分析又称帕累托分析&#xff0c;它的原理是帕累托法则&#xff0c;又称20/80定律。同样的投入放 在不同的地方会产生不同的效益。例如&#xff0c;对一个公司来讲&#xff0c;80%的利润常常来自于20%最畅 销的产品&#xff0c;而其他80%的产品只产生了 20%的利润。

代码清单3-3&#xff0c;菜品盈利帕累托图代码

#-*- coding: utf-8 -*-
#菜品盈利数据 帕累托图
from __future__ import print_function
import pandas as pd#初始化参数
dish_profit &#61; &#39;../data/catering_dish_profit.xls&#39; #餐饮菜品盈利数据
data &#61; pd.read_excel(dish_profit, index_col &#61; u&#39;菜品名&#39;)
data &#61; data[u&#39;盈利&#39;].copy()
data.sort_index(ascending &#61; False)import matplotlib.pyplot as plt #导入图像库
plt.rcParams[&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] #用来正常显示中文标签
plt.rcParams[&#39;axes.unicode_minus&#39;] &#61; False #用来正常显示负号plt.figure()
data.plot(kind&#61;&#39;bar&#39;)
plt.ylabel(u&#39;盈利&#xff08;元&#xff09;&#39;)
p &#61; 1.0*data.cumsum()/data.sum()
p.plot(color &#61; &#39;r&#39;, secondary_y &#61; True, style &#61; &#39;-o&#39;,linewidth &#61; 2)
plt.annotate(format(p[6], &#39;.4%&#39;), xy &#61; (6, p[6]), xytext&#61;(6*0.9, p[6]*0.9), arrowprops&#61;dict(arrowstyle&#61;"->", connectionstyle&#61;"arc3,rad&#61;.2")) #添加注释&#xff0c;即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u&#39;盈利&#xff08;比例&#xff09;&#39;)
plt.show()

  • 效果图
    效果图

3.2.6、相关性分析

分析连续变量之间线性相关程度的强弱&#xff0c;并用适当的统计指标表示出来的过程称为相关分析

1. 直接绘制散点图

判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图&#xff0c;如图3-11所示。
3-11

2. 绘制散点图矩阵

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

散点图矩阵如图3-12所示。

3-12

3. 计算相关系数

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

(1 ) Pearson相关系数

一般用于分析两个连续性变量之间的关系&#xff0c;其计算公式如下。
image.png

(2 ) Spearman秩相关系数
Pearson线性相关系数要求连续变量的取值服从正态分布。不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数&#xff0c;也称等级相关系数来描述。

因为一个变量的相同的取值必须有相同的秩次&#xff0c;所以在计算中采用的秩次是排序后所在位置的平均值。

只要两个变量具有严格单调的函数关系&#xff0c;那么它们就是完全Spearman相关的&#xff0c;这与Pearson 相关不同&#xff0c;Pearson相关只有在变量具有线性关系时才是完全相关的。

(3 )判定系数
判定系数是相关系数的平方&#xff0c;用r的平方表示&#xff1b;用来衡量回归方程对y的解释程度。判定系数取值范围&#xff1a;0&#61;

代码清单3-4&#xff0c;餐饮销量数据相关性分析

#-*- coding: utf-8 -*-
#餐饮销量数据相关性分析
from __future__ import print_function
import pandas as pdcatering_sale &#61; &#39;../data/catering_sale_all.xls&#39; #餐饮数据&#xff0c;含有其他属性
data &#61; pd.read_excel(catering_sale, index_col &#61; u&#39;日期&#39;) #读取数据&#xff0c;指定“日期”列为索引列data.corr() #相关系数矩阵&#xff0c;即给出了任意两款菜式之间的相关系数
result1&#61;data.corr()[u&#39;百合酱蒸凤爪&#39;] #只显示“百合酱蒸凤爪”与其他菜式的相关系数
print(result1)
print(&#39;-&#39;*50)
result2&#61;data[u&#39;百合酱蒸凤爪&#39;].corr(data[u&#39;翡翠蒸香茜饺&#39;]) #计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数
print(result2)

  • 结果

百合酱蒸凤爪 1.000000
翡翠蒸香茜饺 0.009206
金银蒜汁蒸排骨 0.016799
乐膳真味鸡 0.455638
蜜汁焗餐包 0.098085
生炒菜心 0.308496
铁板酸菜豆腐 0.204898
香煎韭菜饺 0.127448
香煎罗卜糕 -0.090276
原汁原味菜心 0.428316
Name: 百合酱蒸凤爪, dtype: float64
--------------------------------------------------
0.009205803051836475

3.3、python主要数据探索函数

Python中用于数据探索的库主要是Pandas &#xff08;数据分析&#xff09;和Matplotlib &#xff08;数据可视化&#xff09;。其 中&#xff0c;Pandas提供了大量的与数据探索相关的函数&#xff0c;这些数据探索函数可大致分为统计特征函数与统计作图函数&#xff0c;而作图函数依赖于Matplotlib&#xff0c;所以往往又会跟Matplotlib结合在一起使用。

3.3.1、基本统计特征函数

统计特征函数用于计算数据的均值、方差、标准差、分位数、相关系数和协方差等&#xff0c;这些统计特征能反映出数据的整体分布。本小节所介绍的统计特征函数如表3-8所示&#xff0c;它们主要作为Pandas的对象DataFrame或Series的方法岀现。

  • 表3-8 Pandas主要统计特征函数

方法名函数功能所属库
sum()计算数据样本的总和(按列计算)Pandas
mean()计算数据样本的算术平均数Pandas
var()计算数据样本的方差Pandas
std()计算数据样本的标准差Pandas
corr()计算数据样本的Spearman (Pearson)相关系数矩阵Pandas
cov()计算数据样本的协方差矩阵Pandas
skew()样本值的偏度(三阶矩)Pandas
kurt()样本值的峰度(四阶矩)Pandas
describe()给出样本的基本描述(基本统计量如均值、标准差等)Pandas

corr()

功能&#xff1a;计算数据样本的Spearman (Pearson)相关系数矩阵。
使用格式&#xff1a;D.corr(method-pearson&#39;)

样本D可为DataFrame,返回相关系数矩阵&#xff0c;method参数为计算方法&#xff0c;支持pearson (皮尔森相关系数&#xff0c;默认选项)、kendall (肯德尔系数)、spearman (斯皮尔曼系数)&#xff1b;

Sl.corr(S2, method-pearson&#39;)&#xff0c; SI、S2 均为 Series,这种格式指定计算两个 Series 之间的相关系数。

实例&#xff1a;计算两个列向量的相关系数&#xff0c;釆用Spearman方法。

代码清单3-5&#xff0c;计算两个列向量的相关系数

# -*- coding:utf-8 -*-
# 釆用Spearman方法计算两个列向量的相关系数
import pandas as pdD &#61; pd.DataFrame ([range (1, 8) , range (2, 9) ] ) #生成样本D, —行为 1~7, —行为2~8
D.corr (method&#61; &#39;pearson&#39;) #计算相关系数矩阵
S1 &#61; D.loc[0] # 提取第一行
S2 &#61; D.loc[1] # 提取第二行
result&#61;S1.corr (S2, method&#61; &#39;pearson&#39;) #计算SI、S2的相关系数
print(result)

cov()

功能&#xff1a;计算数据样本的协方差矩阵。
使用格式&#xff1a;D.cov()

样本D可为DataFrame,返回协方差矩阵&#xff1b;
Sl.cov(S2)&#xff0c; SI、S2均为Series&#xff0c;这种格式指定计算两个Series之间的协方差。

实例&#xff1a;计算6x5随机矩阵的协方差矩阵。

代码清单3-6&#xff0c;计算6x5随机矩阵的协方差矩阵

# -*- coding:utf-8 -*-
# 计算6x5随机矩阵的协方差矩阵
import pandas as pd
import numpy as npD &#61; pd.DataFrame (np.random.randn(6, 5)) #产生6X5随机矩阵
D.cov() #计算协方差矩阵
result&#61;D[0].cov(D[1]) #计算第一列和第二列的协方差
print(result)

skew/kurt

功能&#xff1a;计算数据样本的偏度(三阶矩)/峰度(四阶矩)。
使用格式&#xff1a;D.skew() / D.kurt()

计算样本D的偏度(三阶矩)/峰度(四阶矩)。样本D可为DataFrame或Series。

实例&#xff1a;计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)。

代码清单3-7&#xff0c;计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)

# -*- coding:utf-8 -*-
# 计算6x5随机矩阵的偏度(三阶矩)/峰度(四阶矩)
import pandas as pd
import numpy as npD &#61; pd.DataFrame (np.random.randn(6,5)) #产生6x5随机矩阵
result1&#61;D.skew()
print(result1)
print(&#39;-&#39;*50)
result2&#61;D.kurt()
print(result2)

  • 结果

0 -0.108415
1 -0.607820
2 0.280084
3 2.217468
4 -0.629157
dtype: float64
--------------------------------------------------
0 -0.084542
1 -1.142215
2 0.906740
3 5.187245
4 0.397617
dtype: float64

3.3.2、拓展统计特征函数

除了上述基本的统计特征外&#xff0c;Pandas还提供了一些非常方便实用的计算统计特征的函数, 主要有累积计算(cum)和滚动计算(pd.rolling_),见表3-8和表3-9。

表3-9 Pandas累积统计特征函数

方法名函数功能所属库
cumsum()依次给出前1、2、…、n个数的和Pandas
cumprod()依次给出前1、2、…、n个数的积Pandas
cummax()依次给出前1、2、…、n个数的最大值Pandas
cummin()依次给出前1、2、…、n个数的最小值Pandas

表3-10 Pandas累积统计特征函数

方法名函数功能所属库
rolling_sum()计算数据样本的总和&#xff08;按列计算&#xff09;Pandas
rolling_mean()数据样本的算术平均数Pandas
rolling_var()计算数据样本的方差Pandas
rolling_std()计算数据样本的标准差Pandas
rolling_corr()计算数据样本的Spearman &#xff08;Pearson&#xff09;相关系数矩阵Pandas
rolling_cov()计算数据样本的协方差矩阵Pandas
rolling_skew()样本值的偏度&#xff08;三阶矩&#xff09;Pandas
rolling_kurt()样本值的峰度&#xff08;四阶矩&#xff09;Pandas

其中&#xff0c;cum系列函数是作为DataFrame或’Series对象的方法而出现的&#xff0c;因此命令格式为 D.cumsum(),而rolling_系列是pandas的函数&#xff0c;不是DataFrame或Series对象的方法&#xff0c;因此&#xff0c;它们的使用格式为pd.rolling_mean(D, k),意思是每k列计算一次均值&#xff0c;滚动计算。

实例&#xff1a;

D&#61;pd.Series (range (0, 20) ) #构造Series,内容为0~19共20个整数
D.cumsum () #给出前n项和pd.rolling_sum(D, 2) #依次对相邻两项求和

3.3.3、统计作图函数

通过统计作图函数绘制的图表可以直观地反映出数据及统计量的性质及其内在规律&#xff0c;如 盒图可以表示多个样本的均值&#xff0c;误差条形图能同时显示下限误差和上限误差&#xff0c;最小二乘拟合曲线图能分析两变量间的关系。
表3-11 Python主要统计作图函数

作图函数名作图函数功能所属工具箱
plot()绘制线性二维图&#xff0c;折线图Matplotlib/Pandas
pie()绘制饼型图Matplotlib/Pandas
hist()绘制二维条形直方图&#xff0c;可显示数据的分配情形Matplotlib/Pandas
boxplot()绘制样本数据的箱形图Pandas
plot(logy &#61; True)绘制y轴的对数图形Pandas
plot(yen &#61; error)绘制误差条形图Pandas

在作图之前&#xff0c;通常要加载以下代码。

import matplotlib.pyplot as plt #导入作图库
plt.rcParams [&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] #用来正常显示中文标签
plt.rcParams [&#39;axes.unicode_minus&#39; ] &#61; False #用来正常显示负号
plt.figure(figsize &#61; (7, 5)) #创建图像区域&#xff0c;指定比例

作图完成后&#xff0c;一般通过plt.show()来显示作图结果。

(1) plot

功能&#xff1a;绘制线性二维图、折线图。
使用格式&#xff1a;

  • plt.plot(x, y, S)

这是Matplotlib通用的绘图方式&#xff0c;绘制对于x (即以x为横轴的二维图形)&#xff0c;字符串参量S指定绘制时图形的类型、样式和颜色&#xff0c;常用的选项有&#xff1a;&#39;b’为蓝色、&#39;r’为红色、&#39;g’为绿色、‘o’为圆圈、’&#43;‘为加号标记、’-‘为实线、’–&#39;为虚线。当x、y均为实数同维向量时&#xff0c; 则描出点(x(i),y(f)),然后用直线依次相连。

  • D.plot(kind &#61; ‘box’)

这里使用的是DataFrame或Series对象内置的方法作图&#xff0c;默认以Index为横坐标&#xff0c;每列数据为纵坐标自动作图&#xff0c;通过kind参数指定作图类型&#xff0c;支持line(线)、bar(条形)、barh、hist(直方图)、box (箱线图)、kde (密度图)和area、pie (饼图)等&#xff0c;同时也能够接受plt.plot()中接受的参数。因此&#xff0c;如果数据已经被加载为Pandas中的对象&#xff0c;那么以这种方式作图是比较简 洁的。

实例&#xff1a;在区间(0&#61;

代码清单3-8&#xff0c;绘制一条蓝色的正弦虚线

# -*- coding:utf-8 -*-
# 在区间(0&#61;import numpy as np
import matplotlib.pyplot as plt #导入作图库plt.rcParams [&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] #用来正常显示中文标签
plt.rcParams [&#39;axes.unicode_minus&#39; ] &#61; False #用来正常显示负号
plt.figure(figsize &#61; (7, 5)) #创建图像区域&#xff0c;指定比例x &#61; np.linspace(0,2*np.pi, 50) #x坐标输入
y &#61; np.sin(x) #计算对应x的正弦值
plt.plot (x, y,&#39;bp--&#39;) #控制图形格式为蓝色带星虚线,&#xff0c;显示正弦曲线
plt.show()

绘制图形如图3-13所示。
3-13

(2) pie

功能&#xff1a;绘制饼型图。
使用格式&#xff1a;plt.pie(size)
使用Matplotlib绘制饼图&#xff0c;其中size是一个列表&#xff0c;记录各个扇形的比例。pie有丰富的参 数&#xff0c;详情请参考下面的实例。

实例&#xff1a;通过向量&#xff3b;15,30,45,10&#xff3d;画饼图&#xff0c;注上标签&#xff0c;并将第2部分分离出来。绘制结果

代码清单3-9&#xff0c;画饼图

# -*- coding:utf-8 -*-
# 通过向量&#xff3b;15,30,45,10&#xff3d;画饼图&#xff0c;注上标签&#xff0c;并将第2部分分离出来。
import matplotlib.pyplot as pit# The slices will be ordered and plotted counter-clockwise.
labels &#61; &#39;Frogs&#39;, &#39;Hogs&#39;, &#39;Dogs&#39;, &#39;Logs&#39; #定义标签
sizes &#61; [15, 30, 45, 10] # 每一块的比例
colors &#61; [&#39;yellowgreen&#39;,&#39;gold&#39;,&#39;lightskyblue&#39;,&#39;lightcoral&#39;] #每一块的颜色
explode &#61; (0, 0.1, 0, 0) #突出显示&#xff0c;这里仅仅突出显示第二块(即&#39;Hogs&#39;)
pit.pie(sizes, explode&#61;explode, labels&#61;labels, colors&#61;colors, autopct&#61;&#39;%1.1f%%&#39;,shadow&#61;True, startangle&#61;90)
pit.axis (&#39;equal&#39;) #显示为圆(避免比例压缩为椭圆)
pit.show()

3-9

(3) hist

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

实例&#xff1a;绘制二维条形直方图&#xff0c;随机生成有1000个元素的服从正态分布的数组&#xff0c;分成10组绘制直方图。绘制结果如图3-15所示。

代码清单3-10&#xff0c;二维条形直方图

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as npx &#61; np.random.randn(1000) #1000个服从正态分布的随机数
plt.hist (x, 10) #分成10组进行绘制直方图
plt.show()

3-15

(4) boxplot

功能&#xff1a;绘制样本数据的箱形图。
使用格式&#xff1a;D.boxplot() / D.plot(kind &#61; ‘box’)

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

实例&#xff1a;绘制样本数据的箱形图&#xff0c;样本由两组正态分布的随机数据组成。其中&#xff0c;一组数据均值为0,标准差为1,另一组数据均值为1,标准差为1。绘制结果如图3-16所示。

代码清单3-11&#xff0c;箱形图

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdx &#61; np.random.randn(1000) #1000个服从正态分布的随机数
D &#61; pd.DataFrame([x, x&#43;1]).T #构造两列的DataFrame
D.plot(kind &#61; &#39;box&#39;) #调用Series内置的作图方法画图&#xff0c;用kind参数指定箱形图box
plt.show()

3-16

(5) plot(logx &#61; True) / plot(logy &#61; True)

功能&#xff1a;绘制x或y轴的对数图形。
使用格式&#xff1a;D.plot(logx &#61; True) / D.plot(logy &#61; True)

对x轴(y轴)使用对数刻度(以10为底)&#xff0c;y轴(X轴)使用线性刻度&#xff0c;进行plot函数绘图&#xff0c;D 为 Pandas 的 DataFrame 或者 Series。

实例&#xff1a;构造指数函数数据使用plot(logy &#61; True)函数进行绘图&#xff0c;绘制结果如图3-17 所示。

代码清单3-12&#xff0c;指数函数plot图

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt #导入作图库plt.rcParams [&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] #用来正常显示中文标签
plt.rcParams [&#39;axes.unicode_minus&#39; ] &#61; False #用来正常显示负号import numpy as np
import pandas as pdx &#61; pd.Series(np.exp(np.arange(20))) #原始数据
x.plot(label &#61; &#39;原始数据图&#39;,legend &#61; True)
plt.show()
x.plot (logy &#61; True, label &#61; &#39;对数数据图&#39;,legend &#61; True)
plt.show()

3-17-1
3-17-2

(6)plot(yerr &#61; error)

功能&#xff1a;绘制误差条形图。
使用格式&#xff1a;D.plot(yerr &#61; error)

绘制误差条形图。D为Pandas的DataFrame或Series,代表着均值数据列&#xff0c;而error则 是误差列&#xff0c;此命令在y轴方向画出误差棒图&#xff1b;类似地&#xff0c;如果设置参数xerr &#61; error,则在x轴 方向画出误差棒图。

实例&#xff1a;绘制误差棒图。绘制结果如图3-18所示。

代码清单3-13&#xff0c;绘制误差棒图

# -*- coding:utf-8 -*-
import matplotlib.pyplot as plt #导入作图库plt.rcParams [&#39;font.sans-serif&#39;] &#61; [&#39;SimHei&#39;] #用来正常显示中文标签
plt.rcParams [&#39;axes.unicode_minus&#39; ] &#61; False #用来正常显示负号import numpy as np
import pandas as pderror &#61; np.random.randn (10) #定义误差列
y &#61; pd.Series(np.sin(np.arange(10))) #均值数据列
y.plot(yerr &#61; error) #绘制误差图
plt.show()

3-18

3.4、小结

本章从应用的角度出发&#xff0c;从数据质量分析和数据特征分析两个方面对数据进行探索分析&#xff0c;最后介绍了 Python常用的数据探索函数及用例。数据质量分析要求我们拿到数据后先检测是否存在缺失值和异常值&#xff1b;数据特征分析要求我们在数据挖掘建模前&#xff0c;通过频率分布分析、 对比分析、帕累托分析、周期性分析、相关性分析等方法&#xff0c;对采集的样本数据的特征规律进 行分析&#xff0c;以了解数据的规律和趋势&#xff0c;为数据挖掘的后续环节提供支持。


推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
author-avatar
mobiledu2502909027
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有