精华内容
下载资源
问答
  • The charts below compare the age structure of the ... (199 words, band 9) 2016年雅思写作小作文柱状图解析及范文:年龄结构.doc 下载Word文档到电脑,方便收藏和打印[全文共877字] 编辑推荐: 下载Word文档

    93b728478fdab8b036eaf6733cd54d11.png

    The charts below compare the age structure of the populations of France and India in 1984.

    The two charts compare the populations of France and India in terms of age distribution by gender in the year 1984.

    It is clear that the population of India was younger than that of France in 1984, with a noticeably larger proportion of people aged under 20. France, on the other hand, had a significantly larger percentage of elderly inhabitants.

    In India, close to 14% of people were aged 5 or under, and each five-year age bracket above this contained an increasingly smaller proportion of the population. France’s population, by contrast, was more evenly distributed across the age ranges, with similar figures (around 7% to 8% of all people) for each five-year cohort between the ages of 0 and 40. Somewhere between 10% and 15% of all French people were aged 70 or older, but the equivalent figure for India was only 2%.

    Looking more closely at gender, there was a noticeably higher proportion of French women than men in every cohort from age 50 upwards. For example, almost 3% of French 70- to 75-year-olds were women, while just under 2% were men. No significant gender differences can be seen on the Indian population chart.

    (199 words, band 9)

    2829f2ca24f0d0090cbba57f30759f23.png

    2016年雅思写作小作文柱状图解析及范文:年龄结构.doc

    下载Word文档到电脑,方便收藏和打印[全文共877字]

    编辑推荐:

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    下载Word文档

    展开全文
  • 柱状图直方图、饼图

    千次阅读 2019-04-15 15:12:25
    matplotlib能够绘制**折线图、柱状图、饼图、直方图、**散点图、热力图、K线图等,但是,我们需要知道不同的统计图到底能够表示出什么,以此来决定选择哪种统计图来更直观的呈现我们的数据 一、常见图形种类及意义 ...

    柱状图

    学习目标

    • 目标
      • 应用bar实现柱状图的绘制
      • 知道柱状图的应用场景
    • 应用
      • 电影票房收入绘制

    matplotlib能够绘制**折线图、柱状图、饼图、直方图、**散点图、热力图、K线图等,但是,我们需要知道不同的统计图到底能够表示出什么,以此来决定选择哪种统计图来更直观的呈现我们的数据

    一、常见图形种类及意义

    在这里插入图片描述

    • 折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

      特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

    • 直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。

      特点:绘制,连续性的数据展示一组或者多组数据的分布状况(统计)

    • 柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。

      特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)

    • 散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

      特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

    折线图:plot

    • figure, plot,show
    • xticks,yticks:设置刻度,中文
    • xlabel,ylabel:设置坐标轴标题
    • lengend:添加图例
    • plt.subplots实现多个坐标系的图绘制

    柱状图:bar

    • 画出条形图:pyplot.bar(x, width, align=‘center’, **kwargs)
    • 直方图:hist
    • 组数:数据按照不同的范围分成几个组
    • 组距:每一组两个端点的差
    • pyplot.hist(x, bins=None, normed=None, kwargs)
    • plt.grid(True, linestyle=’–’, alpha=0.5)

    饼图:pie

    • 应用场景:表示不同分类的占比情况
    • API:plt.pie
    • 绘制:注意显示正 圆形 plt.axis(“equal”)
    • “%1.1f%%”:后一个位置的数字表示显示小数的位数

    二、柱状图图绘制

    在这里插入图片描述

    需求:每部电影的票房收入对比?

    1、画出每部电影的票房收入对比,效果如下:

    在这里插入图片描述
    电影数据如下图所示:
    在这里插入图片描述

    ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它']
    [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
    

    2、绘制

    • matplotlib.pyplot.bar(x, width, align=‘center’, **kwargs)

    绘制柱状图

    
    Parameters:	
    x : sequence of scalars.
    
    width : scalar or array-like, optional
    柱状图的宽度
    
    align : {‘center’, ‘edge’}, optional, default: ‘center’
    Alignment of the bars to the x coordinates:
    ‘center’: Center the base on the x positions.
    ‘edge’: Align the left edges of the bars with the x positions.
    每个柱状图的位置对齐方式
    
    **kwargs :
    color:选择柱状图的颜色
    
    Returns:	
    `.BarContainer`
    Container with all the bars and optionally errorbars.
    

    代码:

    import matplotlib.pyplot as plt
     
    # 设置条形图的大小、清晰度
    plt.figure(figsize=(12, 6), dpi=80)
     
    # 电影名称
    movies_name = ['雷神3:诸神黄昏', '正义联盟', '东方快车谋杀案', '寻梦环游记', '全球风暴', '降魔传', '追捕', '七十七天', '密战', '狂兽', '其它']
    # 电影票房数
    y = [73853, 57767, 22354, 15969, 14839, 8725, 8716, 8318, 7916, 6764, 52222]
     
    # 放进横坐标的数字列表
    x = range(len(movies_name))
    y_ticks = range(80000)
     
    # 画出条形图  !!!!!!注意:plot和bar的x参数必须是数字!!!!!
    # width是柱状图的宽度, color表示每部电影对应的颜色
    plt.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'y'])
     
    # 修改刻度名称
    plt.xticks(x, movies_name)
    plt.yticks(y_ticks[::10000])
     
    # 增加标题、x轴、y轴描述信息
    plt.title("11月份电影票房对比")
    plt.xlabel("电影名称")
    plt.ylabel("票房数")
     
    # 保存图像
    plt.savefig("./movies.png")
    # 显示图像
    plt.show()
    

    如何对比电影票房收入才更能加有说服力?

    3、比较相同天数的票房

    有时候为了公平起见,我们需要对比不同电影首日和首周的票房

    3.1数据如下

    movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']
    
    first_day = [10587.6,10062.5,1275.7]
    first_weekend=[36224.9,34479.6,11830]
    
    数据来源: https://piaofang.maoyan.com/?ver=normal
    

    效果如下:
    在这里插入图片描述

    3.2 分析

    • 添加首日首周两部分的柱状图
    • x轴中文坐标位置调整

    代码:

    import matplotlib.pyplot as plt
     
    # 设置条形图的大小、清晰度
    plt.figure(figsize=(12, 6), dpi=80)
     
    # 电影名称
    movies_name = ['雷神3:诸神黄昏', '正义联盟', '寻梦环游记']
    # 首日首周票房数
    first_day = [10587.6, 10062.5, 1275.7]
    first_weekend = [36224.9, 34479.6, 11830]
     
    # 放进横坐标的数字列表
    x = range(len(movies_name))
    y_ticks = range(40000)
     
    # 画出条形图
    # plt.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'y'])
    plt.bar(x, first_day, width=0.2, label="首日票房")
    # 首周柱状图显示的位置在首日的位置右边
    plt.bar([i + 0.2 for i in x], first_weekend, width=0.2, label="首周票房")
     
    # 显示X轴中文,固定在首日和首周的中间位置
    plt.xticks([i + 0.1 for i in x], movies_name)
    plt.yticks(y_ticks[::5000])
     
    # 增加标题、x轴、y轴描述信息
    plt.title("11月份电影票房对比")
    plt.xlabel("电影名称")
    plt.ylabel("票房数")
    # 显示图例
    plt.legend(loc=0)
     
    # 保存图像
    plt.savefig("./movies.png")
    # 显示图像
    plt.show()
    

    三、柱状图应用场景

    适合用在分类数据对比场景上

    • 数量统计
    • 用户数量对比分析

    直方图

    学习目标

    • 目标

      • 应用hist实现直方图的绘制
      • 知道直方图图的应用场景
    • 应用

      电影时长分布

    一、直方图(Histogram)介绍

    直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。 在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图。

    相关概念:

    • 组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数
    • 组距:每一组两个端点的差
      在这里插入图片描述

    二、电影时长分布绘制

    现有250部电影的时长,希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?

    数据:

    time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
    

    效果:
    在这里插入图片描述

    1、matplotlib.pyplot.hist(x, bins=None, normed=None, **kwargs)

    直方图绘制

    Parameters:	
    x : (n,) array or sequence of (n,) arrays ,x参数就是数据
    
    bins : integer or sequence or ‘auto’, optional
    组距,bins参数表示组数
    
    normed : bool, optional
    纵坐标的频率显示或者以頻数显示,默认頻数,值1为频率 , =1时纵坐标总频率为1
    

    2、分析

    • 设置组距
    • 设置组数(通常对于数据较少的情况,分为5~12组,数据较多,更换图形显示方式)
      • 通常设置组数会有相应公式:组数 = 极差/组距= (max-min)/bins

    代码:

    import matplotlib.pyplot as plt
     
    # 展现不同电影的时长分布状态
    plt.figure(figsize=(10, 6), dpi=100)
     
    # 准备时长数据
    time = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130,
            124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111, 78, 132, 124, 113, 150, 110,
            117, 86, 95, 144, 105, 126, 130, 126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136, 123, 117, 119,
            105, 137, 123, 128, 125, 104, 109, 134, 125, 127, 105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120,
            114, 105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134, 156, 106, 117, 127, 144, 139, 139, 119,
            140, 83, 110, 102, 123, 107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133, 112, 114, 122, 109,
            106, 123, 116, 131, 127, 115, 118, 112, 135, 115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,
            136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141, 120, 117, 106, 149, 122, 122, 110, 118, 127,
            121, 114, 125, 126, 114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92, 121, 112, 146, 97, 137, 105,
            98, 117, 112, 81, 97, 139, 113, 134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110, 105, 129, 137,
            112, 120, 113, 133, 112, 83, 94, 146, 133, 101, 131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,
            111, 133, 150]
    # 定义一个间隔大小
    a = 2
     
    # 得出组数,必须是整数   极差除以间隔
    bins = int((max(time) - min(time)) / a)
     
    # 画出直方图
    plt.hist(time, bins, normed=1)
     
    # 指定刻度的范围,以及步长
    plt.xticks(list(range(min(time), max(time)))[::2])
    # 增加标题、x轴、y轴描述信息
    plt.title("不同电影的时长分布状态")
    plt.xlabel("电影时长大小")
    plt.ylabel("电影的数据量")
    # 增加网格显示
    plt.grid(True, linestyle='--', alpha=0.5)
     
    # 保存图像
    plt.savefig("./movies.png")
    # 显示图像
    plt.show()
    

    在这里插入图片描述

    3、增加网格显示

    为了更好将图形对应到

    # 添加位置也是在show之前
    plt.grid(True, linestyle='--', alpha=0.5)
    

    在这里插入图片描述

    三、直方图的场景

    • 用于表示分布情况
    • 通过直方图还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处

    例如:用户年龄分布,商品价格分布

    四、直方图与其他图表的对比

    • 柱状图是以矩形的长度表示每一组的频数或数量,其宽度(表示类别)则是固定的,利于较小的数据集分析
    • 直方图是以矩形的长度表示每一组的频数或数量,宽度则表示各组的组距,因此其高度与宽度均有意义,利于展示大量数据集的统计结果
    • 由于分组数据具有连续性,直方图的各矩形通常是连续排列,而柱状图则是分开排列

    饼图

    学习目标

    • 目标
      • 应用hist实现直方图的绘制
      • 知道直方图图的应用场景
    • 应用
      • 电影时长分布

    一、饼图(Pie)介绍

    饼图广泛得应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧)表示该分类占总体的比例大小,所有区块(圆弧)的加和等于 100%。
    在这里插入图片描述

    二、饼图绘制

    1、如果需要显示不同的电影的排片占比

    1.1电影排片:

    在这里插入图片描述

    1.2数据:

    movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
    
    place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]
    

    1.3效果

    在这里插入图片描述

    3、分析

    • 注意显示的百分比的位数
    • plt.pie(x, labels=,autopct=,colors)
      • x:数量,自动算百分比
      • labels:每部分名称
      • autopct:占比显示指定%1.2f%%
      • colors:每部分颜色

    代码

    # 展现每部电影的排片的占比
    plt.figure(figsize=(20, 8), dpi=100)
    
    # 准备每部电影的名字,电影的排片场次
    movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
    
    place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]
    
    # 通过pie
    plt.pie(place_count, labels=movie_name, autopct='%1.2f%%', colors=['b','r','g','y','c','m','y','k','c','g','g'])
    
    # 指定显示的pie是正圆
    plt.axis('equal')
    
    plt.legend(loc='best')
    
    plt.title("排片占比示意图")
    plt.show()
    

    在这里插入图片描述

    4、添加axis

    为了让显示的饼图保持圆形,需要添加axis保证长宽一样,就可以显示正圆了

    plt.axis('equal')
    

    在这里插入图片描述

    三、饼图应用场景

    • 分类的占比情况(不超过9个分类)

    例如:班级男女分布占比,公司销售额占比


    展开全文
  • 直方图能帮助迅速了解数据的分布形态,将观测数据分组,并以柱状条表示各分组中观测数据的个数。简单而有效的可视化方法,可检测数据是否有问题,也可看出数据是否遵从某种已知分布。本次案例通过生成...

    直方图能帮助迅速了解数据的分布形态,将观测数据分组,并以柱状条表示各分组中观测数据的个数。简单而有效的可视化方法,可检测数据是否有问题,也可看出数据是否遵从某种已知分布。

    本次案例通过生成深圳市疫情个案数据集中所有患者的年龄参数直方图。

    分别使用Matplotlib、Pandas、Seaborn模块可视化Histogram

    其中,Matplotlib和Pandas样式简单,看上去吸引力不大。Seaborn可往单变量直方图上添加很多东西,更美观,pandas可成组生成直方图。

    导入库/数据

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    import datetime
    import time
    df=pd.read_excel(r"szdata.xls")
    df.head(5)
    

    Matplotlib模块

    ##注意原始数据集不能存在缺失值,绘制前必须对缺失数据删除或替换,否则无法绘制成功.
    ##检查年龄是否有缺失
    any(df.年龄.isnull()) #False
    ##删除含有缺失年龄的数据
    df.dropna(subset=["年龄"],inplace=True)
    ##绘制直方图
    plt.rcParams["font.sans-serif"]='SimHei'
    plt.rcParams['axes.unicode_minus']=False
    %config InlineBackend.figure_format='svg'
    
    plt.hist(x=df.年龄,bins=20,
            color="steelblue",
            edgecolor="black")
    
    #添加x轴和y轴标签
    plt.xlabel("年龄")
    plt.ylabel("病例数")
    
    #添加标题
    plt.title("患者年龄分布")
    
    #显示图形
    plt.show()
    

    Pandas模块

    #注意直方图上添加核密度图,必须将直方图频数更改为频率,即normed参数设置成True
    #直方图
    df.年龄.plot(kind="hist",bins=20,color="steelblue",edgecolor="black",normed=True,label="直方图")
    
    #加核密度图
    df.年龄.plot(kind="kde",color="red",label="核密度图")
    
    #添加x轴和y轴标签
    plt.xlabel("年龄")
    plt.ylabel("核密度值")
    
    #添加标题
    plt.title("患者年龄分布")
    
    #显示图例
    plt.legend()
    
    #显示图形
    plt.show()
    

    # pandas.cut() 也同样是一个方便的方法,用来将数据进行强制的分箱
    # 将一系列数值分成若干份
    #cut()方法,参数bin指明切分区间,左开右闭区间。
    import numpy as np
    from pandas import Series,DataFrame
    ages=list(df.年龄)
    bins=[0,29,39,49,50,np.inf]  #范围
    labels=["少年","青年组","中青年组","中年组","中老年组"]
    groups=pd.cut(ages,bins=bins,labels=labels)
    data=groups.value_counts()
    #qcut()方法,不需要事先指明切分区间,只需要指明切分个数。
    # pd.qcut(ages,6).value_counts()
    df1=DataFrame(data,columns=["病例数"])
    
    plt.subplot(1,1,1)
    x=labels
    y=df1["病例数"].values
    plt.bar(x,y,width=0.5,align="center")
    plt.title("深圳市患者按年龄分组",loc="center")
    for a,b in zip(x,y):   
         plt.text(a,b,b,ha="center",va="bottom",fontsize=12)#添加数据标签
    plt.ylim(0,140)
    plt.xlabel('分组',labelpad=10)
    plt.ylabel('病例数')
    plt.savefig(r"bar.jpg")
    
    # 条形图
    # 将柱形图x轴和y轴调换,barh方法
    # plt.barh(y,width,height,align,color,edgecolor)
    

    pandas也提供了一个方便的.value_counts() 方法,用来计算一个非空值的直方图,并将之转变成一个pandas的series结构:df.年龄.value_counts()

    Seaborn模块

    # 上面表达了所有患者的年龄分布,如果按性别分组,
    # 研究不同性别下年龄分布的差异,该如何实现叻?针对这个问题,推荐使用Seaborn模块中的distplot函数
    #取出男性年龄
    Age_Male=df.年龄[df.性别=="男性"]
    #取出女性年龄
    Age_Female=df.年龄[df.性别=="女性"]
    
    #绘制男女患者年龄的直方图
    sns.distplot(Age_Male,bins=20,kde=False,hist_kws={"color":"steelblue"},label="男性")
    
    #绘制男女患者年龄的直方图
    sns.distplot(Age_Female,bins=20,kde=False,hist_kws={"color":"purple"},label="女性")
    #添加标题
    plt.title("不同性别患者年龄分布直方图")
    
    #显示图例
    plt.legend()
    
    #显示图形
    plt.show()
    

    #绘制核密度函图
    #绘制男女患者年龄的直方图
    sns.distplot(Age_Male,hist=False,kde_kws={"color":"red","linestyle":"-"},norm_hist=True,label="男性")
    
    #绘制男女患者年龄的直方图
    sns.distplot(Age_Female,hist=False,kde_kws={"color":"blue","linestyle":"--"},norm_hist=True,label="女性")
    #添加标题
    plt.title("不同性别患者年龄核密度图")
    
    #显示图例
    plt.legend()
    
    #显示图形
    plt.show()
    

    Python实现histogram方法

    #生成直方图
    # count_elements() 返回了一个字典,字典里的键值对:所有数值出现的频率次数。
    # hist[i] = hist.get(i, 0) + 1 实现了每个数值次数的累积
    a = tuple(df.年龄)
    def count_elements(seq) -> dict:
        hist = {}
        for i in seq:
            hist[i] = hist.get(i, 0) + 1
        return hist
    counted = count_elements(a)
    counted
    #或通过collection.Counter类库实现
    # from collections import Counter
    # counted = Counter(a)
    # counted
    
    #利用输出格式format来实现直方图的展示
    def histogram(seq) -> None:
        counted = count_elements(seq)
        for k in sorted(counted):
            print('{0:5d} {1}'.format(k, '@' * counted[k]))
    histogram(a)
    

                       

    附函数语法及参数含义

    Matplotlib模块中hist函数

    Plt.hist(x,bins=10,range=None,normed=False,weights=None,cumulative=False,bottom=None,histtype=’bar’,align=’mid’,orientation=’vertical’,rwidth=None,log=False,color=None,edgecolor=None,label=None,stacked=False)
    1)、x:指定要绘制直方图的数据。
    2)、bins:指定直方图条形的个数。
    3)、range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值。
    4)、normed:是否将直方图的频数转换成频率。
    5)、weights:该参数可为每一个数据节点设置权重。
    6)、cumulative:是否需要计算累积频数或频率。
    7)、bottom:可以为直方图的每个条形添加基准线,默认为0.
    8)、histtype:指定直方图的类型,默认bar,其他八日stacked、step和stepfilled。
    9)、align:设置条形边界的对齐方式,默认mid,另外left和right。
    10)、orientation:设置直方图的摆放方向,默认vertical垂直方向。
    11)、rwidth:设置直方图条形的宽度。
    12)、log:是否需要对绘图数据进行log变换。
    13)、color:设置直方图的填充色。
    14)、edgecolor:设置直方图边框色。
    15)、label:设置直方图的标签,可通过legend展示图例。
    16)、stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放。

    Seaborn模块

    Sns.distplot(x,bins=None,hist=True,kde=True,rug=False,fit=None,hist_kws=None,kde_kws=None,rug_kws=None,fit_kws=None,color=None,vertical=False,norm_hist=False,axlabel=None,label=None,ax=None)

    1)、x:指定绘图数据,可以是序列、一维数组或列表。
    2)、bins:指定直方图条形的个数。
    3)、hist:bool类型的参数,是否绘制直方图,默认True。
    4)、kde:bool类型的参数,是否绘制核密度图,默认True。
    5)、rug:bool类型的参数,是否绘制须图,(如果数据比较密集,该参数比较有用)默认False。
    6)、fit:指定一个随机分布对象,需调用scipy模块中随机分布函数,用于绘制随机分布概率密度曲线。
    7)、hist_kws:以字典形式传递直方图的其他修饰属性,如填充色、边框色、宽度等。
    8)、kde_kws:以字典形式传递核密度图的其他修饰属性,如线的颜色、线的类型等。

    9)、rug_kws:以字典形式传递须图的其他修饰属性,如线的颜色、线的宽度等。
    10)、fit_kws:以字典形式传递须图的其他修饰属性,如线的颜色、线的宽度等。
    11)、color:指定图颜色,除了随机分布曲线的颜色。
    12)、vertical:是否将图形垂直显示,默认True。
    13)、norm_hist:是否将频数更改为频率,默认False。
    14)、axlabel:用于显示轴标签。
    15)、label:指定图形图例,需要结合plt.legend()一起使用。
    16)、ax:指定子图的位置。

    Python新手成长之路案例集锦,长按关注:

    展开全文
  • 对数据集“捞起生鱼片”做定量分析 穿插pandas的cut,groupby,agg方法 定量数据分布分析 对于定量数据而言,选择组数与...​ -第五步:绘制频率分布直方图 ​ 原则:各组是相斥的,且包含了所有数据,各组的组宽

    对数据集“捞起生鱼片”做定量分析

    穿插pandas的cut,groupby,agg方法

    定量数据分布分析

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

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

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

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

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

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

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

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

    • #加载查看数据
    import pandas
    
    data = pd.read_excel(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)

    • 第四步:绘制频率分布直方表
      Excel操作

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

    #分析生鱼片第二季度的销售数据   每天的销售额为x轴,频率与组距之比为y轴
    
    import pandas as pd
    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())
    
    
    >>>>>>结果:
    >
    D:\Tool\Anaconda\python.exe "D:/python/数据挖掘与分析/第三章 数据探索/定量数据频率分布直方图.py"
    0     [500,1000)
    1    [1000,1500)
    2        [0,500)
    3    [1500,2000)
    4    [1000,1500)
    Name: sale分层, dtype: category
    Categories (8, object): ['[0,500)' < '[500,1000)' < '[1000,1500)' < '[1500,2000)' < '[2000,2500)' <
                             '[2500,3000)' < '[3000,3500)' < '[3500,4000)']
            date  sale       sale分层
    0 2014-04-02   900   [500,1000)
    1 2014-04-03  1290  [1000,1500)
    2 2014-04-04   420      [0,500)
    3 2014-04-05  1710  [1500,2000)
    4 2014-04-06  1290  [1000,1500)
    
    Process finished with exit code 0
    
    

    1.pandas.cut():一般常用于对数据进行分段分组,比如销售量,年龄等。具体可以参照上面代码

    2.data.head():查看数据,默认前五行,可以自己指定查看多少行;相反的,data.tail()默认是查看数据最后五行的。
    3.原始数据只有date与sale两列,并且列名是自己加上去的。

    
    aggResult = data.groupby(by = ['sale分层'])['sale'].agg(np.size)
    print(aggResult,type(aggResult))
    paggResult = round(aggResult/aggResult.sum(), 2, ) * 100
    #round(数值,保留小数位数),当保留小数位大于0时采用四舍五入的方法
    print(paggResult,type(paggResult))
    
    》》》》》》》》结果:
    sale分层
    [0,500)        28
    [500,1000)     20
    [1000,1500)    12
    [1500,2000)    12
    [2000,2500)     8
    [2500,3000)     3
    [3000,3500)     4
    [3500,4000)     3
    Name: sale, dtype: int64 <class 'pandas.core.series.Series'>
    sale分层
    [0,500)        31.0
    [500,1000)     22.0
    [1000,1500)    13.0
    [1500,2000)    13.0
    [2000,2500)     9.0
    [2500,3000)     3.0
    [3000,3500)     4.0
    [3500,4000)     3.0
    Name: sale, dtype: float64 <class 'pandas.core.series.Series'>
    
    Process finished with exit code 0
    
    

    1.groupy():分组操作,不计算,返回已分组的DataFrame或者Series。
    2.agg(func):聚合操作,计算,接收函数,如max(),min(),size()等。
    3.round():语法 round(数值,保留小数位数),当保留小数位大于0时采用四舍五入的方法

    #pandas引入了agg函数,它提供基于列的聚合操作,进行计算。
    #groupby是分组操作,不进行计算,或者说index的聚合操作。这种索引操作所返回的对象是一个已分组的DataFrame(如果传入的是列表或数组)或已分组的Series。
    #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()可以得到一个没有多级索引的DataFram,之后可以通过df.rename({‘old_col1’:‘new_col1’,‘old_col2’:‘new_col2’,…})重命名

    #df1= df.groupby([‘date’])[‘price’].agg({‘sum’,‘count’}).reset_index()

    参考了该博主的文章

    https://blog.csdn.net/u013317445/article/details/85268877

    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()
    

    在这里插入图片描述

    展开全文
  • 文章目录pandas中的绘图函数内容概要线形图柱状图直方图随机百分比密度图散布图机器学习使用的比较多的一种图形散布图可以描述数据的分布...
  • 使用图形目的:更加清晰的展现数据内容 所使用的图形:水平条,堆叠条,并排图,树状图,圆视图,并排圆,盒须图,气泡图。 这些图形是在上一例的基础上...如果我们想在柱状图上面加入柱状图大小怎么办呢,点击...
  • 镝摘  虽然直方图柱状图的一种(毕竟乍眼看都是很多柱子的样子),但是其实它俩一个喜欢数多少,一个喜欢比大小。...简单来说,直方图描述的是一组数据的频次分布,例如把年龄分成“0-5,5-10,……,80-85”17...
  • 柱状图也叫直方图,由一系列高度不等的纵向条纹表示图表数据分布的情况。 下面是一组研究血压状态和冠心病各临床型发生情况调查数据。 我们通过表格数据来绘制柱状图柱状图是以组为单位的形式来体现数据...
  • matplotlib可以绘制折线图、散点图、柱状图直方图、饼图 1.3.1 常见图形种类及意义 折线图:以折线的上升或下降来表示统计量的增减变化的统计图 特点:可以显示数据的变化趋势,反映事物变化情况。(变化) ...
  • 文章目录pandas中的绘图函数内容概要线形图柱状图直方图随机百分比密度图散布图机器学习使用的比较多的一种图形散布图可以描述数据的分布状态和数据的增长趋势以及x和y轴的关系汽车排放量越小,行驶的距离就越远 ...
  • 一、Matplotlib之HelloWorld 1. 什么是Matplotlib: 专门用于开发2D图表(包括3D图表) 使用起来及其简单 以渐进、交互式方式实现数据可视化 2. matplotlib的效果: ...例如下面两个为数字展示和图形展示...
  • 直方图

    2018-09-19 00:33:00
    直方图 数值型数据可视化的一种方式。...作用:展示数据分布的一种常用方式,通过直方图可观察数据分布的大致形状,能看分布是否对称、快速判断数据是否近似服从正态分布。 import matplotlib.pyplot as p...
  • 掌握散点图、直方图、箱线图等图像绘制方法 In [1]: # 导入一些需要用到的包 import pandas as pd import numpy as np import matplotlib as mpl import ...
  • Matplotlib绘制直方图

    2021-06-12 09:03:20
    Matplotlib绘制直方图 ...案例一:乘客年龄分布频数直方图 # 导入第三方库 import pandas as pd import matplotlib.pyplot as plt # 设置中文 plt.rcParams['font.sans-serif'] = ['SimHei'] # 创建图形 plt.fi
  • 直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。其次,由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。...
  • 直方图一般用来观察数据的分布形态,横坐标代表数值的均匀分段,纵坐标代表每个段内的观测数量(频数)。一般直方图都会与核密度图搭配使用,目的是更加清晰地掌握数据的分布特征,下面将详细介绍该类型图形的绘制。...
  • 直方图直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱。大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图。本篇博主将要总结一下使用...
  • 阅读本文需要 10 分钟直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱。大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图。本篇博主将要...
  • 在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图。 相关概念: 组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数...
  • 作者:xiaoyu微信公众号:Python数据科学直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱。大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的...
  • 直方图直方图是一个可以快速展示数据概率分布的工具,直观易于理解,并深受数据爱好者的喜爱。大家平时可能见到最多就是 matplotlib,seaborn 等高级封装的库包,类似以下这样的绘图。本篇博主将要总结一下使用...
  • 摘要 在本文中给出了最佳直方图单元格宽度的公式,该公式渐近地使积分均方误差最小化。...关键词:频率分布 直方图 非参数密度估计 最佳箱宽 1. 全文简介 直方图是经典的非参数密度估计量可以追溯到1...
  • 直方图更多的应用场景: 用户年龄分布状态; 一段时间内用户的点击数分布状态; 用户活跃时间的分布状态; 哪些数据可以绘制直方图? 连续的数据; 没有统计过的数据; 原始数据; 案例1: 250部电影的时长, 电影时...
  • 】假设你想投资某一个城市的房地产,你肯定需要对这个城市的人口分布、增长潜力做一个调查,这时我们就需要做一个直方图(histogram plot)。实例:假设我们有一份C城市的人口年龄的数据,我们为方便起见,在这里只...
  • python绘图:柱状图绘制详解

    万次阅读 2019-01-08 15:53:20
    柱状图用于反映数值变量的集中趋势,用误差线估计变量的差值统计。理解误差线有助于我们准确的获取柱状图反映的信息,因此打算先介绍一下误差线方面的内容,然后介绍一下利用seaborn库绘制柱状图。 1.误差线的理解 ...
  • https://github.com/sofiathefirst/matlabdemo 源码和数据文件见上述链接。 本文数据提取自深圳市2019年某次公租房申请公示名单,移除了非身份证的数据。 data = load('D:/year.txt'); year= data(:,2);......
  • 手把手教做Excel直方图 2017-10-05 作者:ExcelHome 阅读:71968次 ...直方图是用于展示数据的分组分布状态的...今天就和大家一起分享一下,使用直方图来分析员工年龄分布情况。先来看数据和最终效果:在图中可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,850
精华内容 1,540
关键字:

年龄分布柱状图