JavaSE 短视频开发 Linux软件安装 string razor bitmap react router xampp electron cocos2d html5 ACE vue的钩子函数 管理后台框架 在线考试系统代码 bootstrap日历插件 linux查看mysql进程 collection框架的结构 oracle删除表字段 配置tomcat环境变量 Navicat python逻辑运算符 python参考手册 python中open 配置python环境 python函数的调用 java连接mysql java基础入门 java获取当前年 java的泛型 java的集合 魔之符咒 idea重命名快捷键 maxtoc4d mssql 视频相册制作软件 源计划艾克 findall ps反向选择的快捷键 一键换肤大师 backtrack4
当前位置: 首页 > 学习教程  > 编程语言

Python应用1:初中统计学常见图表基于MatPlotLib的展示

2021/1/13 19:22:17 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Python应用1:初中统计学常见图表基于MatPlotLib的展示 1 本文研究的价值 熟悉python及pyCharm的配置和使用(参考作者其他文章)特殊时期响应国家号召,推广网络教学(中年码农充电,为后续给娃讲课做准备&…

Python应用1:初中统计学常见图表基于MatPlotLib的展示

1 本文研究的价值

  • 熟悉python及pyCharm的配置和使用(参考作者其他文章)
  • 特殊时期响应国家号召,推广网络教学(中年码农充电,为后续给娃讲课做准备)
  • 应用【输出是最好的输入】理念,将原来无趣的、不熟悉的统计学用目前人工智能比较火热的工具来做展示
  • 为机器学习做好基础

2 初中统计学概念

  • 统计学的入门应用:数据调查(常见问卷调查)
    • 全面调查,数据覆盖率全、后期分析精确、收集难度和成本都很大
    • 抽样调查,只要样本选择合适,还是能尽量贴近全面调查,难度和成本都有降低
      • 可考虑简单随机抽样等方式
    • 调查步骤:
      • 收集数据(问卷调查,收回后用“正”字法统计等方式)
      • 整理数据(录入excel,整理出二维表等形势)
      • 描述数据(用excel或其他工具出具合适图表)
      • 分析数据(出具分析报告)
  • 补充:频数分布直方图的常规处理过程
    • 找出最大、最小值
    • 决定组距、组数(根据经验、需求,比较玄学,可以做几个不同的来对比选取)
    • 列出频数分布表
    • 画出频数分布图

3 初中统计学图形展示(python code view)

  • 目标:展示样本数据,采用饼图、条形图、折线图及直方图做展示

  • 工具:

    • python、pycharm:开发环境
    • matplotlib:图形库
    • pandans:excel数据抽取
  • 实际效果展示

    image-20210113152029402

  • 参考代码实现

# -*- codeing = utf-8 -*- 
# @Time :2021/1/13/0013 10:40:25
# @Author: Steve Lin
# @File : pv2.py
# @Software: PyCharm

import pandas as pd
import matplotlib.pyplot as plt

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

df = pd.read_excel("pvData.xlsx");  # , delimiter="\t", encoding='gbk')


# 饼状图
def pie(tt):
    plt.title("饼图:" + tt + "人数分布图")
    labels = df['节目']
    x = df[tt]

    explode = [0, 0, 0, 0.05, 0]  # 各部分突出值

    plt.pie(x, explode=explode, labels=labels, autopct='%1.1f%%')
    plt.axis("equal")
    plt.show()


# 折线图
def plot(tt):
    plt.title("折线图" + tt + "人数分布图")
    x1 = df['节目']
    y1 = df[tt]
    plt.plot(x1, y1, label='分布图', linewidth=3, color='r', marker='o',
             markerfacecolor='blue', markersize=5)
    plt.xlabel('节目')
    plt.ylabel('人数')
    plt.legend()
    label = 'weight changes'
    # 设置数字标签
    for a, b in zip(x1, y1):
        plt.text(a, b, b, ha='center', va='bottom', fontsize=20)

    plt.show()


# 水平条形图
def bar(tt):
    plt.title("柱状图" + tt + "人数分布图")
    x = df['节目']
    y1 = df[tt]
    rects1 = plt.barh(x, y1, label='分布图')  # 换bar 垂直条形图
    plt.xlabel('节目')
    plt.ylabel('粉丝')
    plt.legend()

    # # 垂直条形图上面贴数字
    # for rect in rects1:
    #     height = rect.get_height()
    #     plt.text(rect.get_x() + rect.get_width() / 2, height - 1, str(height), ha="center", va="bottom")

    # 水平条形图上面贴数字
    for rect in rects1:
        width = rect.get_width()
        plt.text(width - 0.5, rect.get_y() + 0.3, str(width), ha="center", va="bottom")

    plt.show()
    # 注:条形图还可以做多维度的并行、叠加显示,可参考这个实现:https://blog.csdn.net/hohaizx/article/details/79101322


def hist(tt):
    plt.hist(df[tt], bins=10, facecolor="blue", edgecolor="black", alpha=0.7)
    # 显示横轴标签
    plt.xlabel("区间")
    # 显示纵轴标签
    plt.ylabel("频数/频率")
    # 显示图标题
    plt.title("频数/频率分布直方图")
    plt.show()


if __name__ == "__main__":
    # pie("粉丝")
    # plot("粉丝")
    # bar("粉丝")
    hist("粉丝")

= 参考资料

  • 国家中小学网络云平台 (eduyun.cn)

pie(“粉丝”)

# plot("粉丝")
# bar("粉丝")
hist("粉丝")

# = 参考资料

- [国家中小学网络云平台 (eduyun.cn)](http://ykt.eduyun.cn/)
- [多维度条形图的并行、叠加显示](https://blog.csdn.net/hohaizx/article/details/79101322)

本文链接: http://www.dtmao.cc/news_show_600045.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?