自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Python 命令行参数:从 sys.argv 到 argparse

命令行参数是程序启动时传入的外部数据,实现“无人值守”运行。通过shell与PATH机制,命令被解析后以字符串形式传递给Python,由sys.argv接收(全为字符串,需手动转换)。复杂场景下应使用argparse:支持位置参数与可选参数(带--),自动类型转换、默认值、帮助信息及错误校验,提升可读性与健壮性。掌握-h帮助文档解读技巧,理解[](可选)、|(或)、()(分组)等符号含义,可快速构建正确命令。核心:学会一套通用约定,即可理解各类命令行工具。

2026-10-02 18:26:45 138

原创 Python 二维数组的正确创建方式:别再被 [[]] * n 坑了

等价于:b = []b.append([]) # 每次都创建一个新的列表每次循环都会执行[],创建一个全新的列表对象。所以每个元素都是独立的。修改任意一个元素,其他元素不受影响!print(b)# [[1], [], [], [], []] ✅ 只变第一个维度[obj] * n复制的是什么引用(同一个对象)每次都创建新对象元素是否独立❌ 共享✅ 独立修改一个元素全部受影响只影响自己适用场景不可变对象(int, str, tuple)可变对象(list, dict, set)

2026-10-01 14:06:04 334

原创 python的装饰器-入门篇

高阶函数很好理解但闭包需要拆开来理解 分别是 闭 、包。

2026-07-06 14:23:30 190

原创 在 DRF 中,什么是 N+1 查询问题?

摘要:本文介绍了DRF中常见的N+1查询问题及其解决方案。N+1问题指在序列化外键或多对多关系时,每个对象都会触发额外查询,导致查询次数从1次变为1+N次。通过Django Debug Toolbar可以检测该问题。解决方法是使用select_related(优化外键查询)和prefetch_related(优化多对多查询)来减少数据库查询次数,示例中将7次查询优化为仅2次。这两种方法能有效提升DRF应用的性能表现。

2026-06-18 11:13:20 232

原创 DRF的过滤器讲解-入门篇 三个基础过滤器类讲解

在 DRF (Django REST Framework) 中,提供了强大的内置过滤器(Filter Backends),专门用于处理 API 的查询参数。DRF 原生内置了三个最常用的过滤类,分别对应和前期准备:需要一个引入drf 依赖的django项目。

2026-06-17 17:42:51 232

原创 DRF的分页讲解-代码篇 PageNumberPagination类的两种使用方式

本文介绍了Django REST Framework中PageNumberPagination分页器的两种使用方法。第一种是全局配置,通过在settings.py中设置DEFAULT_PAGINATION_CLASS和PAGE_SIZE参数,为所有继承GenericAPIView的视图自动提供分页功能,支持通过page和size参数控制分页。第二种是局部自定义,通过继承PageNumberPagination类创建特定分页器,在视图类中指定pagination_class属性,可灵活设置默认页大小、最大页大

2026-06-17 00:00:00 189

原创 DRF的分页讲解-入门篇 三个基础分页类介绍

本文介绍了三种常用的分页类:PageNumberPagination(页码分页)、LimitOffsetPagination(偏移量分页)和CursorPagination(游标分页)。PageNumberPagination最常用,适用于传统后台管理系统和PC端网页;LimitOffsetPagination适合移动端和小程序;CursorPagination则用于海量数据分页,如社交媒体信息流。三者在深分页性能、排序要求、跳页能力、数据一致性和安全性等方面各有特点。初学者应重点掌握前两种分页方式。

2026-06-16 00:00:00 255

原创 一文掌握在Flask使用SQLAlchemy(上)

本文介绍了使用Flask-SQLAlchemy进行MySQL数据库操作的基础知识。主要内容包括:1) 安装必要的依赖包(flask-sqlalchemy、pymysql)和配置数据库连接;2) 详细讲解SQLAlchemy常用字段类型及其对应的Python数据类型;3) 通过db.Column定义模型字段的方法和常见约束选项;4) 创建数据库表的两种方式(db.create_all)及表名命名规则(tablename)。文章为后续讲解增删改查和外键关联查询奠定了基础,适合具备Python和MySQL基础的开

2026-03-26 11:20:25 528

原创 一文教你如何创建Django项目

本文介绍了Django项目的创建和App配置方法。主要内容包括:1. 项目创建方式对比:带点命令(django-admin startproject mydjango2.)会将项目直接创建在当前目录,不带点命令会多一层项目文件夹。2. 创建App的两种场景:单App直接创建在项目根目录,多App建议统一放在apps目录下,并需要修改apps.py中的name属性为'apps.user'格式。3. 配置说明:需要在INSTALLED_APPS中添加App配置类路径,Django通过该路径和name属性来识别和

2026-03-23 16:19:27 485

原创 一文掌握Django模型——认识模型

本文介绍了Django模型的基础知识,主要包括:1)模型是Python类,对应数据库表;2)8个常用字段类型及通用选项;3)三种关系字段(外键、一对一、多对多)的使用方法;4)重点讲解了外键的on_delete参数设置。文章强调初学者应优先掌握核心概念,避免过度学习,并提供了字段设置的实用示例和注意事项。通过简明易懂的讲解,帮助开发者快速上手Django模型设计。

2026-03-20 17:10:27 440

原创 Python面向对象——类的魔法方法

魔法方法(Magic Methods)是 Python 类中以双下划线开头和结尾(如__init__)的特殊方法,由 Python 解释器在特定语法或操作触发时自动调用。它们定义了对象在语言层面的行为协议(Protocol),使得自定义类能够模拟内置类型(如intlistdict)的语义,从而支持运算符重载、容器行为、上下文管理、字符串表示等核心功能。看完这个定义,你肯定可以想到 __init__方法 没错这就是最常见的一个魔法方法,在类实例化时才会执行。

2026-03-19 16:34:15 417

原创 一文了解DRF——ModelSerializer

本文介绍了Django REST Framework中的ModelSerializer,它能自动根据Django模型生成序列化器字段,相比手动定义字段的Serializer更高效。主要内容包括:1. ModelSerializer的定义及与Serializer的对比;2. 使用步骤:定义模型、创建ModelSerializer、在视图中使用;3. 字段映射规则及null/blank参数的处理;4. Meta类的配置选项及read_only_fields/extra_kwargs的使用技巧。ModelSeri

2026-03-18 15:40:19 460

原创 一文了解Promise——承诺

Promise是表示异步操作结果的对象,具有pending、fulfilled和rejected三种状态(一旦确定不可更改)。通过new Promise()创建时需传入executor函数,该函数立即执行并接收resolve和reject两个参数,用于改变Promise状态。executor中抛出错误会自动触发reject,且其返回值会被忽略。Promise解决了回调地狱问题,是async/await的基础实现机制。当resolve另一个Promise时,当前Promise状态将跟随嵌套Promise变化。

2026-03-13 17:04:31 481

原创 深入理解 Serializer 的反序列化过程

本文深入分析了Django REST Framework序列化器的反序列化过程,重点解析了is_valid()方法的执行流程。文章首先梳理了序列化器类之间的继承关系(MobileLoginModelSerializer→Serializer→BaseSerializer→Field),然后详细拆解了is_valid()方法调用的关键步骤:run_validation()执行整体数据验证、to_internal_value()进行字段级解析和校验、run_validators()运行Meta验证器、以及自定义

2026-03-12 16:48:44 428

原创 深入理解 Django REST Framework 的 Serializer(上)

本文介绍了Django REST Framework中Serializer的核心概念和使用方法。Serializer主要实现数据序列化(对象→字典)和反序列化(字典→对象)两大功能。定义Serializer时需要继承serializers.Serializer类,设置字段参数,并可通过validate_xxx方法实现字段校验或validate方法实现整体校验。使用时需实例化序列化器,传入请求数据并调用is_valid()方法进行验证。整个过程包括定义字段、设置校验规则、实例化验证三个主要步骤,为API开发提

2026-03-11 20:42:33 506

原创 一文搞定 Django 中的 render() 函数

Django的render()函数是一个快捷工具,用于将模板渲染为HTML页面并返回HTTP响应。它封装了模板加载、上下文渲染和响应构建的过程,简化了视图代码。该函数必需request和template_name参数,可选context参数传递数据。相比手动操作,render()只需一行代码即可完成模板渲染,是返回动态网页的最常用方式。其模板查找路径由项目配置决定,支持全局和应用专属模板目录。

2026-01-28 09:05:06 462

原创 TopN的业务价值:为什么老板永远要看“每个品类前3名“

摘要: TopN分析是业务决策的核心工具,通过识别头部商品(20%贡献80%GMV),指导资源投放、优化商品策略及库存管理。它能揭示类目结构问题(如爆品依赖或供给不足),辅助上新、优化及清退决策,并通过跨渠道/时间对比发现增长机会(如达人带货或活动效果)。TopN不仅是销量排序,更是洞察业务健康度、制定策略的关键窗口,覆盖从资源分配到异常监测的全链路分析。

2025-11-27 11:03:51 841

原创 TopN + 分组聚合:求“每个品类销量前 3 的商品”

本文介绍了业务中常见的分组TopN查询场景,通过SQL窗口函数实现按品类筛选销量前N的商品。核心方法是:先分组统计商品销量,再用ROW_NUMBER()窗口函数按品类分组排序,最后筛选排名≤N的记录。对于需要包含并列排名的情况,建议使用DENSE_RANK()函数。这种写法能有效满足99%的业务需求,帮助运营识别各品类中的明星商品。

2025-11-26 11:41:09 685

原创 漏斗分析:从指标到业务洞察的全流程解析

漏斗分析是数据分析里的万金油,不论你是做产品、运营还是增长,几乎每天都会遇到。但很多同学只会算:访问 → 下单 → 支付今天我们从业务视角,把漏斗分析讲清楚。

2025-11-25 10:21:24 1402

原创 连续天数指标的业务价值:增长、留存与用户行为洞察

在用户增长、运营活动、产品分析中,"连续天数"是一个看似简单,却非常强大的指标。今天我们就从业务视角,聊聊连续类指标到底有哪些价值。

2025-11-23 11:24:23 834

原创 连续天数计算的通用SQL解法(登录 / 购买 / 打开都能用)

差值分组法用到三个 SQL 关键点:排序行号日期差所有连续题都能用同一个模板面试、业务、指标计算都离不开它。

2025-11-21 10:45:46 678

原创 业务实战:用户访问 → 下单 → 支付全流程转化率分析

这篇文章讲解了如何通过SQL计算的转化率指标来进行电商业务分析。主要内容包括:1)各环节转化率的业务意义,如访问-下单转化率反映用户购买意愿;2)结合具体案例数据分析转化率问题,如30%的访问-下单转化率说明需要优化商品详情页;3)建议通过分渠道、分时间分析获取业务洞察,比如抖音流量意向较弱、搜索流量更精准;4)强调SQL计算只是基础,关键是要解读数字背后的业务问题并提出优化建议,如优化支付体验、精准投放等。文章指导如何将数据指标转化为实际业务优化方案。

2025-11-19 10:41:34 965

原创 SQL 实战:用户访问 → 下单 → 支付全流程转化率分析

本文介绍了如何使用SQL计算电商场景下的用户转化率指标。文章首先定义了访问转下单率、下单转支付率和总体转化率三个核心指标,然后基于用户访问、下单和支付三张表,给出了分步统计各阶段人数并计算转化率的SQL实现方案,包括使用CTE组合计算结果。此外,还提供了进阶分析方法,如按渠道分组统计、按日期维度查看趋势以及支付后复购率等衍生指标的计算思路。文章强调SQL转化率分析的关键在于用SQL思维还原业务漏斗,而非追求语法复杂度。

2025-11-13 10:48:36 1218

原创 PERCENT_RANK():看清你在群体中的相对位置

要点说明函数范围0 ~ 1计算公式(RANK - 1) / (总行数 - 1)作用展示组内相对位置常见搭配ORDER BYRANK()

2025-11-12 09:00:00 989

原创 长尾效应在分析中的两种应对思路:贡献 vs 异常

数据分析中的"长尾"现象可分为两种类型:价值分布型长尾(如类目GMV贡献)和异常分布型长尾(如履约时长)。前者体现帕累托法则,需通过分层识别核心价值点;后者反映极端异常值,需采用截断或剔除等异常处理方法。两者的本质区别在于:价值型长尾需要聚焦高价值部分,而异常型长尾则需清除干扰数据。正确处理这两类长尾对数据分析至关重要,一个解决资源集中问题,一个解决质量偏差问题。

2025-11-11 10:02:36 1038

原创 XLOOKUP:集 VLOOKUP 与 INDEX+MATCH 于一身的终极查找函数

XLOOKUP是Excel新一代查找函数,解决了VLOOKUP的三大痛点:无需数列号、支持左向查找、插列不影响公式。其语法简洁,=XLOOKUP(查找值,查找区域,返回区域),可替代VLOOKUP和INDEX+MATCH组合。进阶功能包括:自定义错误提示、区间匹配、反向查找最新数据、多条件查询等。相比VLOOKUP,XLOOKUP具备向左查找、自动扩展、简洁易读等优势,但仅适用于Excel2021/365版本,是更强大的数据查询工具。

2025-11-08 20:49:05 2006

原创 Excel INDEX函数详解:比VLOOKUP更灵活的查找神器

摘要:本文系统介绍了Excel中INDEX函数的核心功能与使用方法。作为灵活的数据提取函数,INDEX通过坐标定位方式可实现一维数组、二维表格的精准取值,并能与MATCH函数组合实现动态查找。文章详细解析了INDEX语法、基础应用、双向取值技巧,对比了其与VLOOKUP的优势,并展示了返回整行/列、动态区域引用等进阶用法。INDEX+MATCH组合凭借任意方向查找、不受列插入影响等特点,成为比VLOOKUP更强大的数据查询方案,是Excel高效数据处理的重要工具。

2025-11-07 14:22:11 3148

原创 Excel MATCH函数详解:教你高效查找位置的隐藏技巧

这篇文章系统讲解了Excel中MATCH函数的使用方法。MATCH函数是Excel查找功能的底层逻辑,它不返回值而是返回查找项在数据区域中的位置。文章详细介绍了MATCH函数的语法、参数含义和三种匹配方式(精确匹配0、近似上限1、近似下限-1),并通过查找姓名位置、结合INDEX实现双向查找、分数区间匹配三个实战案例展示了MATCH的应用场景。特别强调了MATCH比VLOOKUP更灵活,支持任意方向查找且不受插入列影响。最后总结了MATCH函数的常见错误及解决方法,指出它是Excel查找体系的"定

2025-11-06 14:15:50 2295

原创 GMV 的“时间错位假象”——当数据看起来在骗人

摘要: Olist平台2017年11-12月GMV数据出现剧烈波动(11月+55%,12月-27%),经分析发现是"时间错位假象"导致。通过对比"下单GMV"和"交付GMV"两个统计口径,揭示实际业务并未崩盘,而是由于交付周期延迟造成统计失真。该案例表明:1)指标口径需匹配业务流程;2)不同口径反映不同业务维度;3)数据异常需考虑统计方式影响。

2025-11-02 15:25:55 667

原创 数据字典是什么?从理解到实战创建,一篇搞懂!

数据字典是解决数据分析中字段不清晰、指标定义不一致等问题的关键工具。它作为数据的"说明书",详细记录表、字段、指标的含义和计算逻辑,包含表级信息、字段说明、指标定义和维护记录等核心内容。可通过SQL自动生成或Excel手动维护两种方式创建。以电商GMV分析为例,明确订单表各字段用途,确保团队对数据的统一理解。数据字典能提升协作效率、统一口径,并为数据治理奠定基础,是数据团队必不可少的协作工具。

2025-10-30 18:45:27 3482

原创 SQL86 各个部门实际平均薪资和男女员工实际平均薪资

通过 SQL86 这道题,让我们对AVG()函数在处理NULL值时的行为有了更深刻的理解,并学会了如何结合IF()与IFNULL()进行灵活的数据计算与结果修饰。关键知识回顾函数作用NULL 值处理机制本题应用AVG()求平均值自动忽略NULL值,只对非空数据计算平均分别计算部门、男女员工平均薪资IF()条件判断函数根据条件返回不同结果,可用于“条件聚合”仅在性别为 male/female 时参与计算IFNULL()空值替换函数若值为NULL,则返回指定默认值当部门无某性别员工时输出。

2025-10-29 14:22:52 1124

原创 NTILE() 函数:如何分组分档(四等分、十分位分析)

NTILE() 是SQL中的一个窗口函数,用于将结果集平均分成指定数量的组(桶)。参数含义n要划分的组数(如 4 表示四等分)按哪个字段排序后再分组(从高到低或低到高)函数会按照顺序尽量平均地把行分配到每个组中。表示:把成绩降序排列的学生,平均分成4档要点说明函数作用把数据平均分成 N 桶语法常见场景RFM 用户分层、业绩分档、分位分析优势简洁、高效、易扩展。

2025-10-28 11:09:35 1260

原创 SQL 执行顺序详解:从面试原理到实战验证

SQL执行顺序是理解SQL查询的关键,其逻辑顺序为:FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT。这个顺序解释了为什么WHERE不能使用聚合函数(因为它先于GROUP BY执行),而HAVING可以(它作用于分组后)。SELECT阶段的别名只能在后续步骤(如ORDER BY)使用。掌握执行顺序有助于避免常见错误,也是区分"会写SQL"和"懂SQL"的重要分水岭。可以通过口诀"从外群哈色欧立"来记忆

2025-10-27 20:45:00 1047

原创 SQL 窗口函数系列(3)——RANK / DENSE_RANK:SQL 排名的三兄弟

本文介绍了SQL窗口函数中的三个排名函数:ROW_NUMBER()、RANK()和DENSE_RANK(),重点分析了它们的区别和应用场景。ROW_NUMBER()生成唯一编号(无并列),RANK()允许并列但会跳号,DENSE_RANK()允许并列且不跳号。文章通过实例演示了它们的差异,并给出了典型应用场景,如取每组TopN、查询第N名记录等。最后预告下一篇将介绍NTILE()函数的分组分档功能。掌握这些排名函数是从基础SQL到进阶应用的重要一步。

2025-10-27 13:44:20 1361

原创 SQL63网易云音乐推荐 GROUP BY实现去重

SQL题目解析:查询用户1未喜欢但关注者喜欢的音乐 摘要:本题考察SQL查询技巧,重点是NOT IN与!=的区别,以及GROUP BY替代DISTINCT实现去重的应用。题目要求查询用户1关注者喜欢但用户1未喜欢的音乐,并按ID升序输出不重复结果。关键点:1)使用NOT IN排除用户1已喜欢的音乐,避免!=可能导致的NULL值问题;2)采用GROUP BY而非DISTINCT实现去重,因为DISTINCT与ORDER BY混用可能报错;3)通过JOIN关联多表获取完整音乐信息。解决方案包含三个步骤:过滤用户

2025-10-25 16:55:32 1333

原创 SQL41 最长连续登录问题详解:日期减排序法原来这么好用!

本文介绍了使用SQL计算用户最长连续登录天数的方法,重点讲解了"日期减排序法"的核心思路。该方法通过窗口函数ROW_NUMBER()为日期排序,再利用DATE_SUB将日期减去排序序号进行分组,最后统计每组天数取最大值。文章详细解析了解题步骤和易错点,并提供了完整SQL代码。同时还讨论了该方法的面试延申应用,包括连续签到奖励、连续购买等场景,以及优化建议。这种方法巧妙利用了连续日期的数学特性,是解决此类问题的经典思路。

2025-10-23 11:01:05 1134

原创 SQL 窗口函数系列(2)——LAG / LEAD:如何取上下行数据?

函数含义示例用途LAG()上一行上月对比、上次登录LEAD()下一行下期预测、下一站信息用LAG()做"环比"用LEAD()做"趋势"结合PARTITION BY 做分组对比本篇重点内容如下表,下一篇我们将《RANK / DENSE_RANK:SQL 排名的三兄弟》,带你彻底搞懂“并列排名”背后的逻辑差异。重点说明LAG()获取上一行的值LEAD()获取下一行的值常见用途环比、留存、连续分析、变化计算搭配使用与分组配合,适用于时间序列分析t=P7R7t=P7R7。

2025-10-20 13:09:16 1346

原创 SQL 窗口函数系列(1)——深入理解 ROW_NUMBER()

窗口函数其实并没有很复杂!!!以下表格为复习内容,可对应提问自己是否掌握重点说明定义给每行唯一序号用法结合子查询 / CTE 实现分组取 TopN、去重、最新记录区别RANK()和处理并列情况不同应用用户最近下单、Top3、去重、日志分析等下一篇:《LAG / LEAD 函数:如何取上下行数据?t=P7R7t=P7R7每个月Top3的周杰伦歌曲https://www.nowcoder.com/practice/4ab6d198ea8447fe9b6a1cad1f671503。

2025-10-19 10:58:21 1723

原创 【SQL50 题详解】查询连续登陆的用户—— 窗口函数经典应用

这篇SQL题解主要讲解如何查询连续登录不少于3天的新注册用户。题目考察窗口函数LEAD和日期函数DATEDIFF的使用,核心思路是通过LEAD获取后两行登录时间,用DATEDIFF判断是否连续3天登录。解题步骤包括:1)使用LEAD获取后续登录时间;2)筛选连续3天登录的用户;3)关联注册表确认新用户。文章还分析了易错点,并延伸讨论该方法的适用场景和优化思路,适用于连续登录、下单等时间序列分析问题。

2025-10-16 18:59:35 1356

原创 【SQL40题详解】每个月 Top3 的周杰伦歌曲 —— 窗口函数经典应用

本文讲解如何通过SQL窗口函数按月统计周杰伦歌曲播放量Top3。首先筛选18-25岁用户在2022年的播放记录,关联歌曲表获取周杰伦歌曲,按月分组统计播放量。核心使用ROW_NUMBER()窗口函数,按月份分区并按播放量降序排序,最后筛选排名≤3的记录。重点掌握:窗口函数分组取TopN的写法、日期函数提取月份、多表关联查询。该模板适用于各类分组统计TopN场景,如商品销量排行等。

2025-10-14 11:48:48 1137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除