python画直方图,刻画数据分布

news2024/11/15 17:43:17
  • 先展示效果

在这里插入图片描述

  • 准备一维数据 n 个数据元素
  • 计算最大值,最小值、均值、标准差、以及直方图分组
import numpy as np
data = list()
for i in range(640):
    data.append(np.random.normal(1))
print(data)

z = np.histogram(data, bins=64)
print(list(z[0])) ### 对应 x 轴数据
z1 = list(z[1])
z1 = [round(x,3) for x in z1]
print(z1)  ### 对应 y 轴数据
print(np.min(z[1]))
print(np.max(z[1]))
print(np.mean(z[1]))
print(np.std(z[1]))
  • 把得到的数据填写到下面程序中
<!DOCTYPE HTML>
<html>
    <head>
        <style type="text/css">
            #main {
                height: 500px;
                border: 1px red solid;
                width: 100%;
            }

            #main1 {
                height: 500px;
                border: 1px red solid;
                width: 100%;
            }

            #main2 {
                height: 500px;
                border: 1px red solid;
                width: 100%;
            }

            #box1 {
                border: 1px #E8E8E8 solid;
                overflow: hidden;
                float: left;
                width: 99%;

            }

            #box2 {
                border: 1px #E8E8E8 solid;
                overflow: hidden;
                float: right;
                width: 49%;

            }

            #box4 {
                border: 1px #E8E8E8 solid;
                height: 550px;
            }

            .child {
                height: 330px;
                width: 49%;
                border: 1px #778899 solid;
                float: left;
            }

            .child1 {
                height: 330px;
                width: 49%;
                border: 1px #778899 solid;
                float: right;
            }

            .top {
                width: 99%;
                text-align: center;
                margin-top: 20px;
                float: left;
            }

            .mid {
                border: 1px black solid;
                float: left;
                margin-top: 10px;
                width: 100%;
            }
        </style>
        <script src="https://cdn.bootcss.com/jquery/1.12.0/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/echarts/3.0.2/echarts.min.js"></script>

        <script type="text/javascript">
            function fun(x, u, a) {
                return (1 / Math.sqrt(2 * Math.PI) * a) * Math.exp(-1 * ((x - u) * (x - u)) / (2 * a * a));
            }

            function addParam(arr, target) {
                //是否是等于
                var flag = false;
                var target = parseFloat(target);
                //最小
                if (target < parseFloat(arr[0])) {
                    arr.unshift(target.toString());
                    return arr;
                }

                //最大
                if (target > parseFloat(arr[arr.length - 1])) {
                    arr.push(target.toString());
                    return arr;
                }

                //中间
                for (var i = 0; i < arr.length; i++) {
                    if (parseFloat(arr[i]) > target) {
                        if (arr[i - 1] == target)
                            flag = true;
                        break;
                    }
                }
                if (flag) {
                    return arr;
                } else {
                    arr.splice(i, 0, target.toString());
                    return arr;
                }
            }

            function getTop(arr) {
                var maxIndex = 0;
                for (var i = 0; i < arr.length; i++) {
                    maxIndex = parseFloat(arr[i]) > parseFloat(arr[maxIndex]) ? i : maxIndex;
                }
                return parseFloat(arr[maxIndex]);

            }

            function getParam(low, mean, up, top) {
                var res = {};
                res['low'] = low;
                res['mean'] = mean;
                res['up'] = up;
                res['top'] = top;

                return res;

            }

            $(function() {
                var myChart1 = echarts.init(document.getElementById('box1'));

                //    debugger
                var datas = [{
                    "data": {
                        "boxplot": {
                            "q1": "0.28",
                            "q3": "0.88",
                            "median": "0.8",    
                            "mean": "0.859",
                            "lower": "0",
                            "upper": "0.9188"
                        },
                        "stdplot": {
                            "xaxis": "-2.387, -2.287, -2.187, -2.087, -1.986, -1.886, -1.786, -1.685, -1.585, -1.485, -1.384, -1.284, -1.184, -1.083, -0.983, -0.883, -0.782, -0.682, -0.582, -0.481, -0.381, -0.281, -0.18, -0.08, 0.02, 0.121, 0.221, 0.321, 0.422, 0.522, 0.622, 0.723, 0.823, 0.923, 1.024, 1.124, 1.224, 1.325, 1.425, 1.525, 1.625, 1.726, 1.826, 1.926, 2.027, 2.127, 2.227, 2.328, 2.428, 2.528, 2.629, 2.729, 2.829, 2.93, 3.03, 3.13, 3.231, 3.331, 3.431, 3.532, 3.632, 3.732, 3.833, 3.933, 4.033",
                            "mean": "0.8228 ",
                            "lower": "-2.387",
                            "upper": "4.0332",
                            "yaxis": "1, 0, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0, 2, 5, 7, 8, 7, 12, 5, 13, 9, 7, 13, 15, 14, 16, 17, 29, 17, 30, 28, 29, 27, 20, 22, 28, 29, 23, 27, 24, 16, 19, 13, 18, 12, 14, 11, 13, 3, 7, 7, 3, 0, 4, 2, 0, 0, 3, 0, 1, 1, 1, 2, 1",
                            "stdev": "0.822"
                        }
                    },
                    "idx": 1
                },];
                for (var i = 0; i < datas.length; i++) {
                    $("#box1").append("<div class='mid'></div>")
                    $("#box1").append("<div class='top' id='" + "top" + i + "'><h2>簇_" + datas[i].idx + "</h2></div>")
                    $("#box1").append("<div class='child' id='" + "child" + i + "'></div>")
                    var myChart = echarts.init(document.getElementById("child" + i));
                    var testData = [];
                    var data = [];
                    data.push(datas[i].data.boxplot.lower);
                    data.push(datas[i].data.boxplot.q1);
                    data.push(datas[i].data.boxplot.median);
                    data.push(datas[i].data.boxplot.q3);
                    data.push(datas[i].data.boxplot.upper);
                    testData.push(data);
                    var xdata = [datas[i].idx];

                    var option = {
                        title: [{
                            text: 'upper: Q3 + 1.5 * IRQ \nlower: Q1 - 1.5 * IRQ',
                            borderColor: '#999',
                            borderWidth: 1,
                            textStyle: {
                                fontSize: 14
                            },
                            left: '10%',
                            top: '85%'
                        }],
                        tooltip: {
                            trigger: 'item', //触发类型,数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
                            axisPointer: { //指示器类型。
                                type: 'shadow'
                            }
                        },
                        grid: { //直角坐标系网格。
                            //show: true,//default: false
                            left: '15%',
                            right: '15%',
                            bottom: '23%',
                            //borderWidth: 1,
                            //borderColor: '#000',    
                        },
                        xAxis: { //X轴
                            type: 'category', //'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
                            //data: data.axisData,
                            data: xdata,
                            boundaryGap: true, //类目轴中 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
                            nameGap: 30, //坐标轴名称与轴线之间的距离。
                            splitArea: { //坐标轴在 grid 区域中的分隔区域,默认不显示。
                                //show: true, //是否显示分隔区域
                                //interval: 'auto', //坐标轴分隔区域的显示间隔,在类目轴中有效
                            },
                            axisLabel: { //坐标轴刻度标签的相关设置。
                                //formatter: 'expr {value}',  // 使用字符串模板,模板变量为刻度默认标签 {value}                        
                                show: true, //是否显示刻度标签。
                                //interval: 'auto', //坐标轴刻度标签的显示间隔,在类目轴中有效。
                                color: 'black',

                            },
                            splitLine: { //坐标轴在 grid 区域中的分隔线。
                                show: true, //是否显示分隔线。默认数值轴显示,类目轴不显示。
                                lineStyle: { //分隔线样式
                                    type: 'dashed', //分隔线线的类型。                                
                                },
                            },
                            axisLine: { //坐标轴轴线相关设置。
                                show: true, //是否显示坐标轴轴线。
                                //onZero:false,//X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。
                                //symbol:'arrow', //轴线两边的箭头, 默认不显示箭头,即 'none'
                                lineStyle: { //轴线样式
                                    width: 2,
                                    color: 'black',
                                    //opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                                },
                            },
                            axisTick: { //坐标轴刻度相关设置。
                                show: true, //是否显示坐标轴刻度。
                                //alignWithLabel: true,//类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐,default: false                            

                            }
                        },
                        yAxis: { //y轴
                            type: 'value',
                            splitArea: { //坐标轴在 grid 区域中的分隔区域,默认不显示。
                                //show: true
                            },
                            axisLabel: { //坐标轴刻度标签的相关设置。
                                //formatter: 'expr {value}',  // 使用字符串模板,模板变量为刻度默认标签 {value}                        
                                show: true, //是否显示刻度标签。
                                //interval: 'auto', //坐标轴刻度标签的显示间隔,在类目轴中有效。
                                color: 'black',
                            },
                            splitLine: {
                                show: true,
                                lineStyle: {
                                    type: 'dashed'
                                },
                            },
                            axisLine: {
                                show: true, //是否显示坐标轴轴线。
                                //onZero:false,//X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。
                                //symbol:'arrow', //轴线两边的箭头
                                lineStyle: {
                                    width: 2,
                                    color: 'black',
                                },
                            },
                        },
                        series: [{
                            name: 'boxplot', //箱形图
                            type: 'boxplot',
                            //legendHoverLink: true, //是否启用图例 hover 时的联动高亮。
                            //hoverAnimation: false, //是否开启 hover 在 box 上的动画效果。
                            itemStyle: { //盒须图样式。
                                //color: '#fff', //boxplot图形的颜色。 默认从全局调色盘 option.color 获取颜色
                                borderColor: 'blue', //boxplot图形的描边颜色。支持的颜色格式同 color,不支持回调函数。
                            },
                            data: testData,
                            tooltip: { //注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。
                                formatter: function(param) {
                                    return [
                                        '簇名: ' + param.name,
                                        '上边缘: ' + param.data[5],
                                        '上四分位数: ' + param.data[4],
                                        '中位数: ' + param.data[3],
                                        '下四分位数: ' + param.data[2],
                                        '下边缘: ' + param.data[1]
                                    ].join('<br/>')
                                }
                            }
                        }]
                    };
                    myChart.setOption(option);


                    $("#box1").append("<div class='child1' id='" + "child1" + i + "'></div>")
                    var myChart = echarts.init(document.getElementById("child1" + i));
                    var yArr = [];
                    var xArr = [];

                    //debugger 0.04,0.13,0.35,0.7,0.35,0.13,0.04
                    var mean = parseFloat(datas[i].data.stdplot.mean);
                    var stdev = parseFloat(datas[i].data.stdplot.stdev);
                    var x = datas[i].data.stdplot.xaxis.split(',');
                    var y = datas[i].data.stdplot.yaxis.split(',')

                    var low = mean - 3 * stdev;
                    var up = mean + 3 * stdev;

                    x = addParam(x, low.toFixed(0).toString());
                    x = addParam(x, mean.toFixed(0).toString());
                    x = addParam(x, up.toFixed(0).toString());

                    //var top = getTop(y);
                    var top = (1 / Math.sqrt(2 * Math.PI) * stdev);
                    var mar = getParam(low.toFixed(0).toString(), mean.toFixed(0).toString(), up.toFixed(0).toString(), top);
                    //y.push(parseInt(top))
                    //var myParam = [low.toFixed(0).toString(),mean.toFixed(0).toString(),up.toFixed(0).toString()];
                    //debugger

                    //var mar = {'t':'6920'}
                    //debugger

                    for (var j = 0; j < x.length; j++) {
                        var res = fun(x[j], mean, stdev).toFixed(2);
                        yArr.push(res);

                    }
                    //    debugger
                    var colors = ['#7CCD7C', '#d14a61', '#675bba'];
                    var option = {
                        color: colors,

                        tooltip: {
                            trigger: 'axis',
                            axisPointer: {
                                type: 'cross'
                            }
                        },
                        grid: {
                            right: '20%'
                        },
                        toolbox: {
                            feature: {
                                dataView: {
                                    show: true,
                                    readOnly: false
                                },
                                restore: {
                                    show: true
                                },
                                saveAsImage: {
                                    show: true
                                }
                            }
                        },
                        legend: {
                            data: ['原数据频率', '正态分布']
                        },
                        xAxis: [{
                            type: 'category',
                            axisTick: {
                                alignWithLabel: true
                            },
                            data: x
                        }],
                        yAxis: [{
                                type: 'value',
                                name: '频率',
                                position: 'right',
                                axisLine: {
                                    lineStyle: {
                                        color: colors[1]
                                    }
                                },
                                axisLabel: {
                                    formatter: '{value}'
                                }
                            },
                            {
                                type: 'value',
                                position: 'left',
                                axisLine: {
                                    lineStyle: {
                                        color: colors[0]
                                    }
                                },
                                axisLabel: {
                                    formatter: '{value}'
                                }
                            }
                        ],
                        series: [{
                                name: '原数据频率',
                                type: 'bar',
                                yAxisIndex: 1,
                                data: y
                            },
                            {
                                name: '正态分布',
                                type: 'line',
                                smooth: true,
                                yAxisIndex: 0,
                                data: yArr
                            },
                            {
                                name: '平行于y轴的趋势线',
                                type: 'line',
                                //data:[0],
                                markLine: {
                                    itemStyle: { //盒须图样式。
                                        color: '#000', //boxplot图形的颜色。 默认从全局调色盘 option.color 获取颜色
                                        //borderColor: 'blue', //boxplot图形的描边颜色。支持的颜色格式同 color,不支持回调函数。
                                        //    type: 'solid',
                                        normal: {
                                            lineStyle: {
                                                width: 1,
                                                type: 'solid', //'dotted'虚线 'solid'实线
                                            },
                                            label: {
                                                show: false,
                                                position: 'end',
                                                color: 'black',
                                                formatter: function(params) {
                                                    str = "-3μ";
                                                    return str
                                                },

                                            }

                                        }

                                    },
                                    name: 'aa',
                                    //symbol:'none',//去掉箭头
                                    data: [
                                        [{
                                                coord: [mar.low, 0]
                                            },
                                            {
                                                coord: [mar.low, mar.top]
                                            } //如何获取grid上侧最大值,目前是写死的
                                        ]
                                    ]
                                }
                            },

                            {
                                name: '平行于y轴的趋势线',
                                type: 'line',
                                //data:[0],
                                markLine: {
                                    itemStyle: { //盒须图样式。
                                        color: '#000', //boxplot图形的颜色。 默认从全局调色盘 option.color 获取颜色
                                        //borderColor: 'blue', //boxplot图形的描边颜色。支持的颜色格式同 color,不支持回调函数。
                                        //    type: 'solid',
                                        normal: {
                                            lineStyle: {
                                                width: 2,
                                                type: 'solid', //'dotted'虚线 'solid'实线
                                            },
                                            label: {
                                                show: true,
                                                position: 'end',
                                                color: 'black',
                                                formatter: function(params) {
                                                    str = "MEAN";
                                                    return str
                                                },

                                            }
                                        }

                                    },
                                    name: 'bb',
                                    // symbol:'none',//去掉箭头
                                    data: [
                                        [{
                                                coord: [mar.mean, 0]
                                            },
                                            {
                                                coord: [mar.mean, mar.top]
                                            } //如何获取grid上侧最大值,目前是写死的
                                        ]
                                    ]
                                }
                            },
                            {
                                name: '平行于y轴的趋势线',
                                type: 'line',

                                //data:[0],
                                markLine: {
                                    itemStyle: { //盒须图样式。
                                        color: '#000', //boxplot图形的颜色。 默认从全局调色盘 option.color 获取颜色
                                        //borderColor: 'blue', //boxplot图形的描边颜色。支持的颜色格式同 color,不支持回调函数。
                                        //    type: 'solid',
                                        normal: {
                                            lineStyle: {
                                                width: 2,
                                                type: 'solid', //'dotted'虚线 'solid'实线
                                            },
                                            label: {
                                                show: true,
                                                position: 'end',
                                                color: 'black',
                                                formatter: function(params) {
                                                    str = "3μ";
                                                    return str
                                                },

                                            }

                                        }

                                    },
                                    name: 'cc',
                                    yAxisIndex: 0,
                                    // symbol:'none',//去掉箭头
                                    data: [
                                        [{
                                                coord: [mar.up, 0]
                                            },
                                            {
                                                coord: [mar.up, mar.top]
                                            } //如何获取grid上侧最大值,目前是写死的
                                        ]
                                    ]
                                }
                            },

                        ]
                    };
                    myChart.setOption(option);
                }

            });
        </script>
    </head>


    <body>
        <div>
            <div id="box1"></div>
        </div>
    </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】LeetCode 27. 移除元素 的n种解法

文章目录题目描述解法一 快慢下标解法二 数组移位题目描述 OJ链接&#xff1a;27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(…

帮助100w人成功入职的软件测试面试常见问题以及答案

测试面试题怎么来设计测试方案根据测试需求&#xff08;包括功能需求和非功能性需求&#xff09;&#xff0c;识别测试要点&#xff0c;识别测试环境要求&#xff0c;安排测试轮次&#xff0c;根据项目计划和开发计划做整体的测试安排。被测试的特性&#xff1a;通过对需求规格…

MyBatis - 10 - 处理多对一映射关系 + MyBatis延时加载

文章目录1.准备工作1.1 建表1.2 创建Maven项目1.2.1 在pom文件中&#xff0c;修改打包方式为jar包&#xff0c;导入依赖1.2.2 创建日志配置文件和jdbc.properties1.2.3 创建Mybatis核心配置文件1.2.4 创建实体类以及实体类之间的关系1.2.5 创建SqlSession工具类2.为什么要单独处…

Ubuntu配置静态IP的方法

Ubuntu配置静态IP的方法前言一、查看虚机分配的网卡IP二、查看网卡的网关IP三、配置静态IP1.配置IPv4地址2.执行netplan apply使改动生效3.配置的网卡未生效&#xff0c;修改50-cloud-init.yaml文件解决4.测试vlan网络通信总结前言 Ubuntu18.04 欧拉环境 vlan网络支持ipv6场景…

树状数组讲解

树状数组 文章目录树状数组引入例题AcWing241.楼兰图腾思路代码AcWing 242. 一个简单的整数问题思路代码AcWing 244. 谜一样的牛思路代码总结引入 树状数组主要维护的是这样一个数据结构&#xff1a; tr[x]表示以x为终点的长度为lowbit(x)的前缀和 对于树状数组主要就两种操作 …

机器学习系统架构的10个要素

这是一个AI赋能的时代&#xff0c;而机器学习则是实现AI的一种重要技术手段。那么&#xff0c;是否存在一个通用的通用的机器学习系统架构呢&#xff1f;在老码农的认知范围内&#xff0c;Anything is nothing&#xff0c;对系统架构而言尤其如此。但是&#xff0c;如果适用于大…

风力发电机组浪涌保护器安全防护方案

风机的庞大与危险高空作业注定了其在基建和维护中不易操作&#xff0c;风机设备的主电源、过程控制、网络与通讯、现场设备需要高等级的防雷浪涌保护器冲击保护&#xff0c;提高系统及设备的可靠性和可用性。风电场的主要发电设备风力发电机组“大风车”是风电场的主要发电设备…

【数据分析】缺失数据如何处理?pandas

本文目录1. 基础概念1.1. 缺失值分类1.2. 缺失值处理方法2. 缺失观测及其类型2.1. 了解缺失信息2.2. 三种缺失符号2.3. Nullable类型与NA符号2.4. NA的特性2.5. convert_dtypes方法3. 缺失数据的运算与分组 3.1. 加号与乘号规则3.2. groupby方法中的缺失值4. 填充与剔除4.1. fi…

什么是让ChatGPT爆火的大语言模型(LLM)

什么是让ChatGPT爆火的大语言模型(LLM) 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录什么是让ChatGPT爆火的大语言模型(LLM)大型语言模型有什么用&#xff1f;大型语言模型如何工作&#xff1f;大型语言模型的热门应用在哪里可以找到大型语言…

王道操作系统课代表 - 考研计算机 第一章 计算机概述 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “计算机概述” 章节知识点总结的十分全面&#xff0c;涵括了《操作系统》课程里的全…

(五十七)插入数据时到底是如何维护好不同索引的B+树的?

之前我们已经给大家彻底分析清楚了MySQL数据库的索引结构了&#xff0c;大家都知道不同索引的结构是如何的&#xff0c;大致是如何建立的&#xff0c;然后搜索的时候是如何根据不同的索引去查找数据的。 那么今天我们来给大家彻底讲清楚&#xff0c;你在插入数据的时候&#x…

JavaSE学习笔记day17

零、 复习昨日 File: 通过路径代表一个文件或目录 方法: 创建型,查找类,判断类,其他 IO 输入& 输出字节&字符 try-catch代码 一、作业 给定路径删除该文件夹 public static void main(String[] args) {deleteDir(new File("E:\\A"));}// 删除文件夹public s…

openjdk:8镜像中安装工具命令的方法

文章目录前言一、获取openjdk:8环境1.下载并运行openjdk:82.获取当前镜像的基础环境信息3.更换源并安装软件二、更新Dockerfile1.增加命令2.尝试构建3.测试镜像是否可用总结前言 记录一下openjdk:8镜像安装命令的方法 同事使用openjdk:8作为基础镜像构建业务镜像&#xff0c;但…

蚂蚁CTO线五年测试开发,年后被优化,跟大家唠几句

夙兴夜寐&#xff0c;回顾从毕业出来到现在的这五年&#xff0c;也是在这里给大家抛砖引玉了。先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入蚂蚁金服&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一…

软件测试的主要工作内容是什么

平时说起程序员印象中大都是做Java、做前端、做后端&#xff0c;用着非常晦涩难懂的语言。在电脑前哐哐哐&#xff0c;没一会满屏代码显现出来。然而程序员并不全是印象中这样&#xff0c;还有一部分&#xff1a;他们不常写代码&#xff0c;主要去检查代码&#xff0c;是不是出…

人工智能前置研究-神经元/离子通道

专栏目录: 高质量文章导航_GZVIMMY的博客-CSDN博客 前言: 《生命是什么》:来自有序中的有序,非周期性晶体!有机体内在生命及其外部世界的相互作用,都能被精确的定律所概述,但前提是它自身必须有一个巨大结构,分子数目太少的话,定律也就不准确了。 《神秘的量子生命…

基于RT-Thread完整版搭建的极简Bootloader

项目背景Agile Upgrade: 用于快速构建 bootloader 的中间件。example 文件夹提供 PC 上的示例特性适配 RT-Thread 官方固件打包工具 (图形化工具及命令行工具)使用纯 C 开发&#xff0c;不涉及任何硬件接口&#xff0c;可在任何形式的硬件上直接使用加密、压缩支持如下&#xf…

Python抓取数据具体流程

之前看了一段有关爬虫的网课深有启发&#xff0c;于是自己也尝试着如如何过去爬虫百科“python”词条等相关页面的整个过程记录下来&#xff0c;方便后期其他人一起来学习。 抓取策略 确定目标&#xff1a;重要的是先确定需要抓取的网站具体的那些部分&#xff0c;下面实例是…

MySQL Buffer Pool 详解

1. Buffer Pool 概述 Buffer Pool 到底是什么&#xff1f;从字面上看是缓存池的意思&#xff0c;没错&#xff0c;它其实也就是缓存池的意思。它是MySQL当中至关重要的一个组件&#xff0c;可以这么说&#xff0c;MySQL的所有的增删改的操作都是在 Buffer Pool 中执行的。 但…

90%的人都不算会爬虫,这才是真正的技术,从0到高手的进阶

很多人以为学会了urlib模块和xpath等几个解析库&#xff0c;学了Selenium就会算精通爬虫了&#xff0c;但到外面想靠爬虫技术接点私活&#xff0c;才发现寸步难行。 龙叔我做了近20年的程序员&#xff0c;今天就告诉你&#xff0c;真正的爬虫高手应该学哪些东西&#xff0c;就…