热门标签 | 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;为数据挖掘的后续环节提供支持。


推荐阅读
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
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社区 版权所有