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

在这里插入图片描述

三.数据探索

数据质量分析

概念:检查原始数据中是否有脏数据。包括:缺失值,异常值,不一致的值,重复数据和特殊符号的数据(如#,*等)

缺失值分析

1.缺失值:数据记录的缺失与记录中某个字段信息的缺失,两者都会造成分析结构不正确。

2.产生原因:有些信息暂时无法获取或者获取的代价比较大;有些信息是被遗漏的;属性值不存在(如儿童的固定收入,未婚者配偶的姓名等)。

3.缺失值的影响:数据挖掘建模将丢失大量有用信息;数据挖掘模型所表现出来的不确定性增加,模型中蕴含的规律更难把握;包含空值的数据会使得建模过程陷入混乱,导致不可靠输出。

4.缺失值分析:简单的统计分析,得到缺失值属性的个数以及每个属性的未缺失数,缺失数与缺失率等。对于缺失值的处理,分三种,一是删除存在缺失值的记录,二是对可能的值进行插值,三是不处理。

异常值分析

1.异常值:样本中的个别明显偏离其他观测值的数据。

2.分析:

​ 简单的统计量分析:明显不合适的数据,不符合常理的数据等等。如年龄超过200岁。

​ 3σ 原则是在数据服从正态分布的时候用的比较多,在这种情况下,**异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。**在数据处理的时候,按照正态分布的性质,三个标准差以外的数据都可以被看作是错误的数据从而排除掉。

箱型图分析:分析比较客观,在识别异常值方面有一定的优越性。

例子:餐饮系统的销售量数据可能出现缺失值和异常值,用箱型图来分析数据。

import pandas as pd
sale = "D:\大学\大三\下学期\数据挖掘与分析\chapter3\demo\data\catering_sale.xls"
data = pd.read_excel(sale,index_col="日期")
print(data.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


#绘制箱型图
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()#"fliers":异常值标签
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.5 -0.8/(y[i]-y[i-1]), y[i]))
     else:
        plt.annotate(y[i], xy=(x[i],y[i]), xytext=(x[i]+0.5, y[i]))
        
plt.show()

》》》》》》》》结果

在这里插入图片描述

分析:

​ 【箱体部分从上到下依次是:上四分位,均值,中位数,下四分位】

​ 箱型图所对应的数据从上到下依次是 离群点【9106.44,6607.4,22.0,60.0,51.0】;上界【4060.3】;下界【2000】;最后可以把数据过滤规则定为400以下,5000以上为异常数据。
3.处理:

(1)缺失

设置为Null值;此类处理最简单,而且绝大多数情况下均使用此类处理;直接将异常值“干掉”,相当于没有该异常值。如果异常值不多时建议使用此类方法。

(2)填补

如果异常值非常多时,则可能需要进行填补设置,SPSSAU共提供平均值,中位数,众数和随机数、填补数字0共五种填补方式。

(3)不处理

一些异常值也可能同时包含有用的信息,是否需要剔除,应由分析人员自行判断。

一致性分析

数据不一致性是指数据的矛盾性,不相容性。在数据挖掘过程中,不一致数据主要发生在数据集成的过程中。

数据特征分析

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

1.分布分析

(1.)定量数据分布分析

对于定量数据而言,选择组数与组宽是做评率分布分析时最主要的问题,步骤如下:

​ -第一步:求极差【max-min】

​ -第二步:决定组距与组数【组距观察数据自己给出,一般组距都是左闭右开区间的;组数=极差/组距】

​ -第三步:决定分点【也就是分布区间表格】

​ -第四步:列出频率分布表

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

​ 原则:各组是相斥的,且包含了所有数据,各组的组宽最好相等

例子:菜品“捞起生鱼片”在2014年第二个季度的销售数据,绘制销售量的频率分布表,频率分布图,对该定量数据做出相应分析。

##加载查看数据
import pandas

data = pd.read_excel("D:\大学\大三\下学期\数据挖掘与分析\chapter3\demo\data\catering_fish_congee.xls")
print(data.max()-data.min())
》》》》》结果:

2014-04-01 00:00:00    89 days 00:00:00
420                                3915
dtype: object
'''
第一步:求极差  最大值-最小值=3915
第二步:分组 ,组距看实际情况可取为500    组数 = 极差/组距 = 3915/500 约等于8
第三步:决定分点
[0,500)  [500,1000) ... [3500,4000)
第四步:会制频率分布直方表

第五步:绘制频率分布直方图
#分析生鱼片第二季度的销售数据   每天的销售额为x轴,频率与组距之比为y轴'''

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_excel("catering_fish_congee.xls", names = ['date','sale'])

#print(data.head())
#print(data['sale'].max())
#print(data['sale'].min())
bins = [0,500,1000,1500,2000,2500,3000,3500,4000]#由销售量分布区间可知
labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)',
          '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)']

#在对数据进行分段分组时,可采用cut方法,用bins的方式实现。这种情况一般使用于,对于销售量,年龄、分数等数据。
data["sale分层"] = pd.cut(data.sale, bins = bins, labels = labels)

"""print(data["sale分层"].head())
print(data.head())
"""

aggResult = data.groupby(by = ['sale分层'])['sale'].agg(np.size)
#pandas引入了agg函数,它提供基于列的聚合操作,进行计算。
#groupby是分组操作,不进行计算,或者说index的聚合操作。这种索引操作所返回的对象是一个已分组的DataFrame(如果传入的是列表或数#组)或已分组的Series。
#np.size:统计个数

#s.groupby([1,1,2,2]).agg(['min','max']):加[],agg的func仅接受一个参数,等效于s.groupby([1,1,2,2]).min()

## 对data1,把min更名为a,max更名为b
#df.groupby(['key1'])['data1'].agg({'a':'min','b':'max'})#这里的'min' 'max'为两个函数名


#重要技巧: groupby之后直接.reset_index()可以得到一个没有多级索引的DataFrame
#之后可以通过df.rename({‘old_col1’:‘new_col1’,‘old_col2’:‘new_col2’,…})重命名
#df1= df.groupby(['date'])['price'].agg({'sum','count'}).reset_index()

#print(aggResult,type(aggResult))

paggResult = round(aggResult/aggResult.sum(), 2, ) * 100

#round(数值,保留小数位数),当保留小数位大于0时采用四舍五入的方法
#print(paggResult,type(paggResult))

plt.figure(figsize=(10,10))#设置图标框大小尺寸
paggResult.plot(kind = 'bar', width = 0.8, fontsize = 10)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("季度销售额频率分布直方图", fontsize = 20)
plt.show()

在这里插入图片描述
(2.)定性数据分布分析

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

#不同彩品在某段时间的销售量分布情况

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'


data = pd.read_excel("catering_dish_profit.xls")

#饼图
x = data['盈利']
labels = data['彩品名']
plt.figure(figuresize=(8,6))
plt.pie(x,labels = labels) 
plt.title("菜品销售量分布图")
plt.axis('equal')
plt.show()

#条形图
x = data['菜品名']
y = data['盈利']
plt.figure(figuresize=(8,6))
plt.bar(x,y)
plt.xlabel('菜品')
plt.ylabel('销量')
plt.title('菜品销量分布图')
plt.show()

在这里插入图片描述

在这里插入图片描述

2.对比分析

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

(1.)绝对数比较:比如排序好的条形图。上图。

(2.)相对数比较:由两个有联系的指标对比计算,用以反映客观现象之间数量联系程度的综合指标,其数量值表现为相对数。

  • 结构相对数:将同一总体内的部分数值与全部数值进行对比,求得比重,用以说明事物的性质,结构或者质量,如居民食品支出额占消费支出总额的比重,产品合格率等。

  • 比例相对数:将同意总体内不同部分的是数值进行比较,表明总体内各部分的比例关系,如人口性别比例,投资与消费比例。

  • 比较相对数:将同一时期两个性质相同的指标数值进行对比,说明同类现象在不同空间条件下的数量对比关系,如不同地区的商品价格对比,不同行业不同企业之间的某项指标对比等。

  • 强度相对数:将两个性质不同但有一定联系的总量指标进行对比,用以说明现象的强度,密度和普遍程度,如人均国内生产总值yong“元/人”表示,人口密度用“人/平方米”表示等。

  • 计划完成程度相对数:将同一时期实际完成数与计划数进行对比,用以说明计划完成程度。

  • 动态相对数:将同一现象在不同时期的指标数值进行对比,用以说明发展方向和变化速度,如发展速度,增长速度等。

    ​ 例子:以各菜品的销售数据为例,从时间维度上分析,可以看到A部门,B部门,C部门3个部门的销售金额随时间的变化趋势,可以了解在此期间哪个部门的销售金额较高,趋势比较平稳,也可以从单一部门(B部门)做分析,了解各年份的销售对比情况。

    #部门之间销售额对比  折线图
    
    import pandas as pd
    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = ['SimHei']#正常显示中文
    
    data = pd.read_excel("dish_sale.xls")
    plt.figure(figsize=(8,6))
    plt.plot(data['月份'], data['A部门'], color = 'green', label = 'A部门', marker = 'o')
    plt.plot(data['月份'], data['B部门'], color = 'red', label = 'B部门', marker = 's')
    plt.plot(data['月份'], data['C部门'], color = 'blue', label = 'C部门', marker = 'x')
    
    plt.legend() #显示图例
    plt.ylabel('销售额(万元)')
    plt.xlabel('月份')
    
    #B部门各年之间销售金额对比
    data1 = pd.read_excel("dish_sale_b.xls")
    plt.figure(figsize=(8,4))
    plt.plot(data1['月份'], data1['2012年'], color = 'red', label = '2012年', marker = 'o')
    plt.plot(data1['月份'], data1['2013年'], color = 'blue', label = '2013年', marker = 's')
    plt.plot(data1['月份'], data1['2014年'], color = 'blue', label = '2014年', marker = 'x')
    
    plt.legend()
    plt.ylabel('销售额(万元)')
    plt.xlabel('年份')
    plt.show()
    
    
    

    部门之间的销售额对比
    B部门各年对比

  • 总体来看,三个部门的销售额呈递减趋势;A部门和C部门的递减趋势比较平稳;B部门的销售额下降趋势比较明显,进一步分析造成该现象的原因可能是原材料不足。

3.统计量分析

(1.)集中趋势度量

	- 均值:所有数据的平均值【截断均值是去除高低极端值后的均值,极端值对均值的影响较大;加权均值反映均值中不同成分的重要程度】【算术平均数mean()】
	- 中位数:将一组观察值从小到大按序排列,位于中间的数。
	- 众数:数据集中出现最频繁的数。

(2.)离中趋势度量

- 极差:max-min
- 标准差:度量数据偏离均值的程度。
- 变异系数:度量标准差相对于均值的离中趋势。
- 四分位数间距:所有数值由小到大排列,分成四份,第一个分割点是下四分位,第二个分割点即中间位置是中位数,第三个分割位点是上四分位。上四分位数与下四分位数之差。
4.周期性分析

探索某个变量是否随着时间的变化而呈现出某种周期变化趋势。【年度,季度,月度,周度,天度,时度周期性趋势。】

例如:要对正常用户和窃电用户在2012年2月份与三月份日用电量进行预测,可以分布分析正常用户与窃电用户的日用电量时序图,直观的观察其电量变化趋势。

import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv()

plt.figure(figsize=(8,6))
plt.plot(data["Date"],data["Eletricity"])

plt.xlabel("日期")
#设置x轴刻度间隔
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)

plt.ylabel("每日用电量")
plt.title("正常用户用电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
#plt.axis('equal')

#窃电用户用电量分析

data1 = pd.read('')
plt.figure(figsize=(8,4))
plt.plot(data1['Date'],data1['Eletricity'])
plt.xlabel('日期')
plt.ylabel('日期')

#设置x轴刻度间隔
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)

plt.title('窃电用户每日用电量趋势')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

正常用户电量趋势

窃电用户如用电量

分析:总体来看,正常用户和窃电用户在2012年2月份与3月份日用电量呈现出周期性。以周为周期,由于周末不上班,所以用电量周末较低。工作日与非工作日的用电量比较平稳,没有太大波动。而窃电用户2012年2月份与3月份日用电量呈现出递减趋势,同样周末用电量最低。
5.贡献度分析

又称帕累托分析,原理是帕累托法则,又称20/80定律。同样的人放在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自20%的最畅销产品,而其它80%的产品只产生20%的利润。

例子:某月海鲜系列10个菜品的盈利额已按照从大到小排序。如图分析,利用帕累托法则,应该增加对菜品A1-A7的成本投入,减少对A8-A10的成本投入来获得更高的盈利额。

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_excel('catering_dish_profit.xls', index_col = '菜品名')
data = data['盈利'].copy()
data.sort_values(ascending = False)#按值排序从大到小
#直方图
plt.figure(figsize = (8,6))
data.plot(kind = 'bar')
plt.ylabel('盈利(元)')
#斜线
p = 1.0 * data.cumsum() / data.sum()
p.plot(color = 'skyblue', secondary_y = True, style = '-o', linewidth = 2)
plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))#添加注释,85%标记,指导箭头样式
plt.ylabel('盈利(比例)')
plt.show()

菜品盈利数据

6.相关性分析

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

  • 判断两个变量是否有线性相关的关系直接绘制散点图:正线性相关【点落在y = +kx周围】,完全正线性相关【y = +kx】;负线性相关【点落在y = -kx周围】,完全负线性相关【y = -kx】;非线性相关【弧线】,不相关。

  • 需要同时考察多个变量间的相关关系绘制散点图矩阵

  • 计算相关系数【三个相关性系数(Pearson、Spearman和Kendall)反映的都是两个变量之间变化趋势的方向以及程度,其值范围为-1到+1,0表示两个变量不相关,正值表示正相关,负值表示负相关,值越大表示相关性越强。】

    ​ 1)Pearson相关系数【皮尔森相关系数】

    ​ 2)Spearman秩相关系数【斯皮尔曼秩相关系数】

    ​ 3) Kendall相关系数【判定相关系数】

    例子:分析菜品日销量之间的相关性系数,为原料采购提供参考。

    import pandas as pd
    data = pd.read_cexcel('catering_sale_all.xls', index_col = '日期')
    
    print(data.corr()) #相关系数矩阵,给出了任意两个菜品之间的相关系数
    print(data.corr()['百合酱蒸凤爪']) #该菜和其它菜品的相关性
    
    print(data['百合酱蒸凤爪'].corr(data['翡翠蒸香茜饺']))#这两个菜之间的相关性
    
    》》》》》》》结果:
                 百合酱蒸凤爪    翡翠蒸香茜饺   金银蒜汁蒸排骨  ...     香煎韭菜饺     香煎罗卜糕    原汁原味菜心
      百合酱蒸凤爪   1.000000  0.009206  0.016799  ...  0.127448 -0.090276  0.428316
      翡翠蒸香茜饺   0.009206  1.000000  0.304434  ...  0.062344  0.270276  0.020462
      金银蒜汁蒸排骨  0.016799  0.304434  1.000000  ...  0.121543  0.077808  0.029074
      乐膳真味鸡    0.455638 -0.012279  0.035135  ... -0.068866 -0.030222  0.421878
      蜜汁焗餐包    0.098085  0.058745  0.096218  ...  0.155428  0.171005  0.527844
      生炒菜心     0.308496 -0.180446 -0.184290  ...  0.038233  0.049898  0.122988
      铁板酸菜豆腐   0.204898 -0.026908  0.187272  ...  0.095543  0.157958  0.567332
      香煎韭菜饺    0.127448  0.062344  0.121543  ...  1.000000  0.178336  0.049689
      香煎罗卜糕   -0.090276  0.270276  0.077808  ...  0.178336  1.000000  0.088980
      原汁原味菜心   0.428316  0.020462  0.029074  ...  0.049689  0.088980  1.000000
    
      [10 rows x 10 columns]
      百合酱蒸凤爪     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
    
      Process finished with exit code 0
    

Python主要数据探索函数【主要库是pandas统计特征与统计绘图,Matplotlib的绘图函数库】

  • 基本统计函数

    方法名函数功能所属库
    sum()计算数据样本的总和【按列计算】pandas
    mean()计算数据样本的算术平均数【按列计算】pandas
    var()计算数据样本的方差【按列计算】pandas
    std()计算样本的标准差【按列计算】pandas
    corr()计算数据样本的Sperman(Pearson)相关系数矩阵pandas
    cov()计算数据样本的协方差矩阵pandas
    skew()样本值的偏度(三阶矩)pandas
    kurt()样本值的峰度(四阶矩)pandas
    describe()给出样本基本统计描述【均值,标准差,最大最小,分位数】pandas
    # corr(method='pearson/kendall/spearman'):用于计算皮尔森,肯德尔,斯皮尔曼相关系数;d为DataFrame对象,返回相关系数矩阵,s1与s2是Series对象,算的是两个series对象之间的相关系数
    # 用法
    	# d.corr(method="spearman")
    	# ns1.corr(s2,method="pearson")
        
    ## 计算相关系数
    import pandas as pd
    df = pd.DataFrame([range(0,4), range(1,5)])
    print(df)
    print("------------------")
    print(df.corr(method="spearman"))
    s1 = df.loc[0]
    s2 = df.loc[1]
    print("------------------")
    print(s1.corr(s2,method="pearson"))
    
    ..........>>>>>
       0  1  2    3
    0  0  1  2  3.0
    1  2  3  4  NaN
    ------------------
         0    1    2   3
    0  1.0  1.0  1.0 NaN
    1  1.0  1.0  1.0 NaN
    2  1.0  1.0  1.0 NaN
    3  NaN  NaN  NaN NaN
    ------------------
    1.0
    
    Process finished with exit code 0
    
    ## 计算协方差矩阵
    # 用法同上
    import numpy as np
    import pandas as pd
    df1 = pd.DataFrame(np.random.randn(5,6))#生成5X6的随机矩阵
    print(df1)
    print("--------")
    print(df1.cov())
    print("--------")
    print(df1[0].cov(df1[1]))
    
    .......>>>>>>
              0         1         2         3         4         5
    0 -1.612165 -0.399937 -0.706673 -0.960382  0.130500 -0.268329
    1  1.161665 -0.538577 -1.165917 -1.354291  0.485865 -0.380286
    2 -0.161520 -0.240490  0.748768 -0.382483 -1.254675  0.092010
    3  0.873999  1.630397  0.763374 -2.714897  0.272341 -1.088010
    4  0.495306 -0.022903  0.956633 -0.754279  0.459501  1.674656
    --------
              0         1         2         3         4         5
    0  1.217284  0.351671  0.178661 -0.443910  0.252033 -0.037510
    1  0.351671  0.782462  0.475523 -0.668794  0.103338 -0.381204
    2  0.178661  0.475523  0.961551 -0.021880 -0.240460  0.367447
    3 -0.443910 -0.668794 -0.021880  0.809401 -0.318515  0.616312
    4  0.252033  0.103338 -0.240460 -0.318515  0.527716  0.034352
    5 -0.037510 -0.381204  0.367447  0.616312  0.034352  1.053286
    --------
    0.35167146777290775
    
    Process finished with exit code 0
    
    ## 计算数据样本的偏度[三阶矩,skew]\峰度[四阶矩,kurt]
    import numpy as np
    import pandas as pd
    df = pd.DataFrame(np.random.randn(5,6))
    print('三阶矩:',df.skew())
    print("四阶矩:",df.kurt())
    .......>>>>>>>>>
    三阶矩: 0   -0.298330
    1    1.829276
    2    0.867289
    3   -0.328855
    4    0.930303
    5    0.181911
    dtype: float64
    四阶矩: 0   -2.091564
    1    3.640028
    2    1.478186
    3   -2.061621
    4    0.201642
    5    0.379665
    dtype: float64
    
    Process finished with exit code 0
    
    • 拓展特征函数

      累积计算(cum),滚动计算(pd.rolling_)

      方法名函数功能所属库
      cumsum()依次给出前1,2,…,n个数的和pandas
      cumprod()… … … …的积
      cummax/min()… … … …的最大/最小值
      rolling_sum()计算数据样本的总和
      rolling_kurt()计算数据样本的峰度【四阶矩】

      cum系列是DataFrane或者Series对象的方法,用法:d/s.cumsum() ;rolling_…系列是pandas的方法,使用pandas.rolling__mean(d,k)【意思是每k列计算一次均值】。

      import pandas as pd
      import numpy as np
      d = pd.DataFrame(np.random.randn(2,4))
      print(d)
      print("--------")
      print(d.cumsum())
      print("--------")
      print(d.rolling(2).sum())#依次对相邻两项求和
      
      。。。。。。。》》》》》》
               0         1         2         3
      0  0.919216  0.572518  0.407163  1.044145
      1  0.228686  0.930887 -0.893210 -0.232685
      --------
                0         1         2         3
      0  0.919216  0.572518  0.407163  1.044145
      1  1.147901  1.503406 -0.486046  0.811460
      --------
                0         1         2        3
      0       NaN       NaN       NaN      NaN
      1  1.147901  1.503406 -0.486046  0.81146
      
    • 绘图统计函数

      函数名功能所属库
      plot()绘制线性二维图,折线图Matplotlib/pandas
      pie()饼图Matplotlib/pandas
      hist()二维线性直方图Matplotlib/pandas
      boxplot()箱型图pandas
      plot(logy=True)y轴对数图像pandas
      plt(yerr=error)误差条形图pandas
    #绘图导库
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    plt.rcParams['font.sans-serif'] = ['SimHei']#正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False #正常显示负号
    plt.figure(figsize=(7,5))#创建图像区域,指定比例
    
    #最后 plt.show()显示图像
    
    ## matplotlib绘图
    # plot:折线图   plt.plot(x,y,s)  s指定绘图的类型,颜色,样式【o-->圆圈,+-->加号标记,-为实线,--为虚线】
    plt.rcParams['font.sans-serif'] = ['SimHei']#正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False #正常显示负号
    plt.figure(figsize=(7,5))#创建图像区域,指定比例
    x = np.linspace(0,2*np.pi,50)  # x坐标输入
    y = np.sin(x)  # 计算对应x的正弦值
    plt.plot(x, y, 'bp--')  # 控制图形格式为蓝色带星虚线,显示正弦曲线
    plt.show()
    
    # pie:饼图  plt.pie(size) size是一个列表,记录扇形的面积;explode:是否突出;colors:颜色;labels:标签;shadow:影音;startangle:开始角度;autopct:控制显示百分数
    labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'  # 定义标签
    sizes = [15, 30, 45, 10]  # 每一块的比例
    colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']  # 每一块的颜色
    explode = (0, 0.1, 0, 0)  # 突出显示,这里仅仅突出显示第二块(即'Hogs')
    
    plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
    plt.axis('equal')  # 显示为圆(避免比例压缩为椭圆)
    plt.show()
    
    # hist:直方图
    ## plt.hist(x,y)  x--->一维数组;y--->表示均匀分为y组,参考定量数据的分布分析绘制的直方图
    
    ## DataFrame/Series对象内置的方法绘图
    #用法d.plot(kind='box/hist/kde/pie/bar/line....')[箱型图、直方图、密度图、饼图、条形,线……里面也可以写matplotlib折线图的参数s]
    #箱型图
    d.boxplot()
    d.plot(kind='box')
    
    # 绘制误差条形图  d.plot(yerr = error)
    error = np.random.randn(10)#定义误差列
    y = pd.series(np.sin(np.arange(10)))# 均值数据列
    y.plot(yerr=error)
    plt.show()
    
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值