数据可视化-课堂记录

2024-05-26 11:20:12 浏览数 (2)

week02

代码语言:javascript复制
# 数据可视化的发展历史 作用  格式塔原则
# 数据可视化的流程

# 数据分析 指标体系建设 确定一个行业 指标体系 实现报表(power bi  python matplotlib seaborn pyecharts echarts)
# 数据分析面试  
技术:sql excel python powerbi spss  
业务:理解一个行业,做日报周报月报外加临时取数,并进行指标异常分析

# 课程目标
完成一个BI报表:神策数据
懂业务 会一种BI技术 会指标体系构建 评价体系


# power bi快速实现了一个报表
代码语言:javascript复制
# matplotlib 2周  如何理解这个库   更好的使用
https://blog.csdn.net/m0_38139250/article/details/136796724
代码语言:javascript复制
# 6-8 周 seaborn库 如何理解这个库   更好的使用
https://blog.csdn.net/m0_38139250/article/details/137009691

机器学习的流程

有数据集 数据探索EDA 多少条 什么类型 有无缺失值 数据是文本or连续or离散 数据分布情况 特征之间和特征于标签之间的关系如何 数据特征工程预处理 缺失值填充删除不管 文本转换为数字onehot独热二进制序列编码 数字太大进行归一化 产生新的特征 数据模型选择 逻辑回归 模型评估 模型优化 交叉验证和模型融合

seabron

Seaborn是一个用Python制作统计图形的库。它构建在matplotlib之上,并与pandas数据结构紧密集成。 Seaborn帮助您探索和理解您的数据。它的绘图功能对包含整个数据集的数据框架和数组进行操作,并在内部执行必要的语义映射和统计聚合以生成信息丰富的绘图。它的面向数据集的声明性API让您可以专注于图表的不同元素的含义,而不是如何绘制它们的细节。 ax=sns.relplot(x=“total_bill”,y=“tip”,hue=“day”, col=“time”,row=“sex”,data=tips,kind=“line”)

seaborn是做什么的

帮助理解数据 完整数据 内部语义映射 面向数据集的声明式api 不需要关注如何实现,只要关注要做什么

seaborn模块设计思想

绘图函数 有两个级别 画布级FacetGrid(大多用这个) 子图级(如果要和matplotlib的子图一起做,就用这个)

relplot 分布 分类

双变量联合分布于单变量分布图 joinplot 画布 双变量分布图 pairplot

seaborn基本使用

代码语言:javascript复制
from matplotlib import pyplot as plt 
import matplotlib as mpl
import numpy as np 

x = np.linspace(0, 2, 100)

fig, ax = plt.subplots()  
ax.plot(x, x, label='linear')  
ax.plot(x, x**2, label='quadratic')  
ax.plot(x, x**3, label='cubic')  
ax.set_xlabel('x label') 
ax.set_ylabel('y label') 
ax.set_title("Simple Plot")  
ax.legend() 
plt.show()
代码语言:javascript复制
# Import seaborn
import seaborn as sns

# Apply the default theme
sns.set_theme()

# Load an example dataset 需要
# tips = sns.load_dataset("tips")
tips = sns.load_dataset("tips",cache=True,data_home=r'.seaborn-data')

# Create a visualization
sns.relplot(
    data=tips,
    x="total_bill", y="tip", col="time",
    hue="smoker", style="smoker", size="size",
)



# 画布级别 通过col和row绘制多个子图
ax=sns.relplot(x="total_bill",y="tip",hue="day",
            col="time",row="sex",data=tips,kind="line")
# ax.figure.set_size_inches(5,5)
plt.suptitle("7-指定col和row")

# 轴级别
fig,axes=plt.subplots(1,1)
ax = sns.scatterplot(x="total_bill", y="tip",hue="day",
 style="time",size='size',data=tips,ax=axes)

=============================

seaborn库使用

导入数据 绘图:画布级接口 子图级接口

关系:x和y都是连续或是x为多个离散值 分类:一个变量为分类的

人口普查的案例 说明了通过seaborn可以有效的帮我们理解数据 作业: seaborn怎么学习,掌握数据集 钻石 四重奏 介绍相关、分类、分布、回归、结构网格绘图的作用,并描述其中的画布级(图形级)别函数 和 轴级函数 是什么,有什么特点,并能说出5个常见的参数以及作用 餐馆案例,你是餐馆老板,上周收入10000块,这周8000块,怎么进行分析,指标拆解,这个数据的变动到底是哪一个细粒度数据应用,按照人货场, VIP 3000–1000 散客 1000-1000 外卖6000-6000得出是VIP用户消费少了,活动针对VIP, VIP用户怎么少了 男女 男1000-500 女2000-500 针对与女性VIP进行进一步的拆解

模型

考上研究生 100条 1条 Y 99 N N 99% 50人 姓名 age 住址 高数 概率论 英语1 2 3 4 计算机网络 体测 社团数量 竞赛 考研成绩 XX 20 河南 92 87 80 75 82 65 80 2 3 351

============================

Echarts

百度开源 apache基金会 能做什么 想做得都能做

canvas svg —》zrender 封装 —>echarts 对zrender 封装

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- <script src=""></script> -->
    <!-- 1.导入echarts.js  import -->
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.js"></script>
    <title>Document</title>
</head>
<body>
    <!-- 2. 提供一个具有 宽 和 高的 元素 div -->
    <div id="main" style="width: 600px;height: 600px;">  </div>
    <!-- 3. 提供一个script元素 写js代码 -->
    <script>
      // 4. 初始化元素为echarts对象
      var myid = document.getElementById("main");
      var myecharts = echarts.init(myid);


        //   5. 构建一个option
        var option = {
            // 6. 看官网
        }

        // 6. myecharts.setOption(option)
        myecharts.setOption(option)

    </script>
</body>
</html>

============================== 目标:前后端异步交互的可视化实现 项目目录

webapp.py templates/index.html static/js/echarts.js

1.写一个flask 接受 /index请求 返回 index.html页面

代码语言:javascript复制
@app.route('/index')
def index():
    return render_template('index.html')

2.前端 发送异步请求 fetch 发送给后端的一个请求request,后端web框架会接受 flask

代码语言:javascript复制
<script>
    fetch("http://127.0.0.1:5000/api_json2")
    .then(res => res.json())
    .then(function(data) {
        console.log(data);
        alert(data['data'][0]["name"]);
    })
</script>

2.flask 接受前端的请求 进行数据的读取,封装为json,返回给前端

代码语言:javascript复制
dict1 = {"result":"success", "data":[{"name":"北京","value":3245.896},{"name":"上海","value":2789.8}]}
@app.route('/api_json2')  # 127.0.0.1:5000/api_json1
def api_json1():
    return jsonify(dict1)

3.前端在异步请求中获取响应 response ,解析 把解析后的数据 放在option中的series中

代码语言:javascript复制
<script>
        // 4.绑定main 和  echarts
        div1 = document.getElementById("main2")
        myecharts2 = echarts.init(div1)
        
        // 5. 一个option
        var option3={
            xAxis:{
                type:'category',
                data:['a','b','c','d']
            },
            yAxis:{
                type:'value'
            },
            series:[
                {
                    data:[],
                    type:'scatter'
                },
                {
                    data:[],
                    type:'pie'
                }
            ]
        }
        // fetch 是 js内置的异步请求函数  请求json的接口
        fetch('http://127.0.0.1:5000/jsonify2')
            .then(function(response) {
                // 把请求到响应转换为json
                return response.json();
            })
            .then(function(myJson) {
                // 转换后的json数据  输出到控制台
                console.log(myJson);
                console.log(myJson);
                // 提取json数据中的key对应的value 并且把value赋值给option
                option3.series[0].data = myJson['c']
                option3.series[1].data = myJson['d']

                // 6.把option传递给myecharts
                myecharts2.setOption(option3)
            });

    </script>

==============================

echarts做一个前后端交互的可视化大屏 目的完成一个前后端交互的可视化==Echarts5.3.2可视化案例-交互篇 django flask fastapi 1.基于html和css实现页面布局,包括9个具有宽高的div 2.基于flask提供9个接口 /jsonbar 返回对应json数据 3.前端发生9个异步请求 请求对应的 /json 接口 获取json数据 4.前端针对获取到的json数据进行解析 5.把获取到的数据填入option的series的data中 fetch ajax 功能一样 都是异步刷新

==================================

报表设计与实现

指标体系 标签体系 评价体系

1.多个可视化大屏,每个可视化大屏是一个主题域 给销售人员(销售额 地区销售额 人员销售 销售订单 排名 销售目标) 给财务人员(收入 支出 固定成本 流水 …) 给供应链人员(待生产 现有库存 原材料的缺口 产品库的数据 …) 给生产人员 给决策人员 给安全风险人员 给质量检测人员

2.类似excel透视表的交互表格 fine report做后端

1.什么是flex 2.什么是rem flexable.js提供的一个可以随浏览器变化的单位

=========================================

课程目标:懂业务 会一种BI技术 会指标体系构建 评价体系

技术:matplotlib seaborn echarts 数据可视化绘图 应用: 数据分析报告和行业白皮书:matplotlib seaborn 特定pyecharts powerbi finebi https://www2.deloitte.com/content/dam/Deloitte/cn/Documents/consumer-business/deloitte-cn-consumer-coffee-industry-whitepaper-2021-210412.pdf

报表系统:WEB 数据开发 echarts 多个可视化大屏 https://cn.bing.com/images/search?q=神策数据&form=HDRSC2&first=1

知道什么样的图表达了什么信息,才能正确的使用图形 https://blog.csdn.net/m0_38139250/article/details/137217930

数据分析报告: 1.先把结论说明下 2.数据定义:关键指标 以及 指标定义 3.数据分析方法:对比和趋势 osm模型和象限模型,swot模型 4.分析过程:图文表的结合,要有明确结论 5.代码实现: 数据集加载 数据探索 数据处理 数据分析可视化 数据挖掘

0 人点赞