当前位置: 首页 > news >正文

Python从入门到精通秘籍十九

一、Python之union 联合类型注释

当谈论Python中的联合类型注释时,通常会提到Union类型。Uniontyping模块中定义的一个泛型类,用于表示多个可能的类型。

Union的语法如下:

Union[type1, type2, ...]

其中type1type2, … 是要组成联合类型的具体类型。

为了更好地理解,以下是一个示例代码,展示了如何使用Union进行类型注释:

from typing import Uniondef process_data(data: Union[str, int, float]) -> None:if isinstance(data, str):# 处理字符串类型的数据print("处理字符串:", data.upper())elif isinstance(data, int):# 处理整数类型的数据print("处理整数:", data * 2)elif isinstance(data, float):# 处理浮点数类型的数据print("处理浮点数:", data * 1.5)# 测试代码
process_data("hello")       # 输出:处理字符串: HELLO
process_data(10)            # 输出:处理整数: 20
process_data(3.14)          # 输出:处理浮点数: 4.71

在上面的例子中,process_data()函数接受一个参数data,可以是strint或者float类型。通过使用Union类型注释,我们明确了这个参数可以接受多种类型的值。

注意,Union并不限制参数的取值范围,而是指定了参数可以是多个类型中的任意一个。在函数内部,我们使用isinstance()函数来判断参数的具体类型,并采取相应的操作。

总结起来,Union联合类型注释允许我们在类型注释中指定多个可能的类型,使代码更加灵活和易读。

二、Python之多态

在Python中,多态是面向对象编程的一个重要概念。它允许不同类型的对象对相同的方法做出不同的响应。通过使用多态,我们可以编写更加灵活和可扩展的代码。

下面是一个示例代码,展示了如何使用多态实现不同形状的计算面积:

class Shape:def area(self):passclass Rectangle(Shape):def __init__(self, width, height):self.width = widthself.height = heightdef area(self):return self.width * self.heightclass Circle(Shape):def __init__(self, radius):self.radius = radiusdef area(self):return 3.14 * self.radius ** 2def calculate_area(shape):return shape.area()# 创建不同的形状对象
rectangle = Rectangle(5, 10)
circle = Circle(7)# 调用calculate_area函数并传入不同的形状对象
print(calculate_area(rectangle))  # 输出: 50
print(calculate_area(circle))     # 输出: 153.86

在上面的示例中,我们定义了一个抽象基类Shape,它有一个抽象方法area()。然后,我们创建了两个具体子类RectangleCircle,它们分别实现了area()方法以计算矩形和圆的面积。

接下来,我们定义了一个calculate_area()函数,它接受一个Shape类型的参数,并调用其area()方法来计算面积。

通过调用calculate_area()并传入不同的形状对象,我们可以看到多态的效果。无论是矩形还是圆,它们都能根据自己的特性正确计算出面积。

这就是多态的好处:尽管我们在calculate_area()函数中并没有指定具体的类型,但它能够根据传入的对象动态地调用适当的方法。这种灵活性使得代码更具可扩展性和复用性。

总结起来,Python中的多态通过允许不同类型的对象对相同的方法做出不同的响应,提供了灵活和可扩展的编程方式。它是面向对象编程中重要且强大的特性之一。

三、Python之电商数据分析案例

电商数据分析案例可以涉及多个方面,例如用户行为分析、销售趋势分析、产品推荐等。以下是一个简单的示例,展示了如何使用Python进行电商数据分析。

假设我们有一个名为ecommerce.csv的数据文件,包含了一家电商公司的订单数据,其中包括订单ID、购买日期、购买金额、产品类别等信息。

首先,导入所需的库:

import pandas as pd
import matplotlib.pyplot as plt

接下来,读取数据文件并加载数据:

data = pd.read_csv('ecommerce.csv')

然后,我们可以查看数据的前几行以了解数据结构:

print(data.head())

接着,我们可以使用一些统计方法来了解数据的概述:

print(data.describe())

针对电商数据分析,我们可以从不同角度进行分析。以下是几个常见的分析示例:

  1. 用户行为分析

    我们可以分析用户的购买行为,例如购买次数、购买金额等。下面是计算每个用户的购买次数和总购买金额的示例:

    purchase_count = data.groupby('UserID').size().reset_index(name='PurchaseCount')
    purchase_amount = data.groupby('UserID')['Amount'].sum().reset_index(name='TotalAmount')
    user_analysis = purchase_count.merge(purchase_amount, on='UserID')
    print(user_analysis)
    
  2. 销售趋势分析

    我们可以分析销售额和订单量随时间的变化趋势,以了解销售的季节性和趋势。下面是绘制每月销售额和订单量的示例:

    data['PurchaseDate'] = pd.to_datetime(data['PurchaseDate'])
    monthly_sales = data.groupby(data['PurchaseDate'].dt.to_period('M')).sum().reset_index()plt.figure(figsize=(10, 6))
    plt.plot(monthly_sales['PurchaseDate'], monthly_sales['Amount'], label='Sales')
    plt.plot(monthly_sales['PurchaseDate'], monthly_sales['OrderID'], label='Orders')
    plt.xlabel('Month')
    plt.ylabel('Value')
    plt.title('Monthly Sales and Orders')
    plt.legend()
    plt.show()
    
  3. 产品类别分析

    我们可以分析不同产品类别的销售情况,以了解热门产品和销售趋势。下面是计算每个产品类别的总销售额和平均销售额的示例:

    category_sales = data.groupby('Category')['Amount'].agg(['sum', 'mean']).reset_index()
    print(category_sales)
    

以上是电商数据分析的简单示例,实际上可能会涉及到更复杂的数据处理、可视化和高级分析技术。根据具体需求,你可以进一步探索或扩展这些代码来进行更深入的电商数据分析。

相关文章:

Python从入门到精通秘籍十九

一、Python之union 联合类型注释 当谈论Python中的联合类型注释时,通常会提到Union类型。Union是typing模块中定义的一个泛型类,用于表示多个可能的类型。 Union的语法如下: Union[type1, type2, ...]其中type1, type2, … 是要组成联合类…...

解决:您还有0天的时间继续使用internet download manager

通过修改注册表来白嫖的IDM方法 1、新建txt文件复制代码(命名为idm.reg) 2、代码如下 Windows Registry Editor Version 5.00[-HKEY_CURRENT_USER\Software\Classes\CLSID\{7B8E9164-324D-4A2E-A46D-0165FB2000EC}] [-HKEY_CURRENT_USER\Software\Clas…...

操作系统目录

北航操作系统 chapter 1 北航操作系统 chapter3-1 内存管理 北航操作系统chapter3-2 内存管理 北航操作系统chapter3-3 页式管理 北航操作系统chapter3-4 段式管理 北航操作系统chapter3-5 虚拟内存管理 操作系统chapter4-1 进程与线程 北航操作系统-chapter4.2 同步与互斥…...

常用的Node.js命令集锦

当使用Node.js开发时,以下是一些常用的Node.js命令集锦: npm init 用于初始化一个新的Node.js项目,并创建一个package.json文件来管理项目的依赖和元数据。 npm install [package-name] 用于安装指定的Node.js包,可以通过--save选…...

2021年XX省赛职业院校技能大赛”高职组 计算机网络应用赛项 网络构建模块竞赛真题

“2021年XX省赛职业院校技能大赛”高职组 计算机网络应用赛项 网络构建模块竞赛真题 目录 一.考试说明 1 二.模块B网络构建 2 (一)任务描述 2 (二)任务清单 9 一.考试说明 本模块比赛时间为…...

80386 ATT汇编语法

文章目录 gcc的预处理,不进行编译、汇编或链接预处理编译汇编 8.8.2 AT&T语法与英特尔语法8.8.3操作码命名8.8.4寄存器命名8.8.5操作码前缀8.8.6内存引用8.8.7跳转指令的处理8.8.8浮点8.8.9写入16位代码8.8.10笔记 gcc的预处理,不进行编译、汇编或链…...

如何在Linux系统使用宝塔面板搭建Inis博客并发布至公网【内网穿透】

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…...

【漏洞复现】netgear路由器 boarddataww 存在RCE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…...

什么是原型链

1、原型链的本质 是一个链表,当使用一个构造函数时,就会返回一个实例,在这个实例上找某个属性未找到时,则会顺着proto属性指向它的原型,去原型上找,如果原型也没有的话,则会顺着原型的原型找&a…...

什么是虚拟线程?

1、典型回答 Java 中的虚拟线程,也叫做协程或“轻量级线程”,它诞生于JDK 19(预览 API),正式发布于 JDK 21,它是一种在 Java 虚拟机(JVM)层面实现的逻辑线程,不直接和操作系统的物理线程一一对应,因此它可…...

node.js是什么怎么用常用方法

什么是node.js Node.js是一个基于Chrome V8 JavaScript引擎的服务器端运行环境。它允许使用JavaScript来开发高性能的网络应用程序。Node.js采用事件驱动、非阻塞式I/O模型,使其能够处理大量并发请求而不会出现阻塞。 Node.js最初是由Ryan Dahl于2009年创建的&…...

pikachu靶场第十四关——XSS(跨站脚本)之js输出(附代码审计)

源代码: //这里讲输入动态的生成到了js中,形成xss //javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义//讲这个例子主要是为了让你明白,输出点在js中的xss问题,应该怎么修? //这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后…...

AD实用设置教程

目录 一、“多边形敷铜” 设置 “最小间隔” 二、放置的 “过孔” 敷铜 “全连接”...

webpack为什么要使用loader,如何手写loader

webpack是一个打包工具,即webpack会将一切文件视为模块,但是webpack在打包的时候只是认识JS文件或者JSON文件,并不认识CSS文件,png图片等,如果想让webpack能够在打包的时候识别其他文件,就必须要使用loader…...

【银河商学】大蓝短视频学习04——找对标账号

为什么要找对标账号? 标准答案,少走弯路秒上热搜,快速起号预知变现,扬长避短 找什么样的对标账号? 成熟 粉丝量 > 50万持续更新,多年屹立不倒 举例账号 三百者也 模仿 二百者也 易做 简单可量产 有潜…...

Java练手游戏--俄罗斯方块

Java基础小练手游戏项目:俄罗斯方块简单版 使用Java实现俄罗斯方块大概思路: 界面设计: 使用Java Swing或JavaFX创建游戏窗口和用户界面。创建一个主窗口类(如GameFrame.java),负责设置窗口大小、标题等属…...

基础篇Redis

基础篇Redis 1.Redis简单介绍 Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型NoSql 其中键值型,是指Redis中存储的数据都是以key.value对的形式存储,而value的形式多种多样,可以是字符串.数值.甚至json…...

透视变换详解

透视变换(Perspective Transformation)是一种用于在图像处理中对图像进行几何变换的技术,它可以用来校正图像的透视形变或者改变图像的视角。透视变换通常涉及到一个原始图像和一个目标图像之间的转换,其中原始图像可能是一个投影…...

leetcode LCR121.寻找目标值-二维数组

目录 问题描述示例具体思路思路一思路二 代码实现 问题描述 m*n 的二维数组 plants 记录了园林景观的植物排布情况,具有以下特性: 每行中,每棵植物的右侧相邻植物不矮于该植物; 每列中,每棵植物的下侧相邻植物不矮于该…...

成都百洲文化传媒有限公司引领电商服务新潮流

在当今数字化时代,电商行业日新月异,竞争激烈。然而,在这个浪潮中,成都百洲文化传媒有限公司凭借其专业的电商服务,脱颖而出,成为了行业中的新领军者。今天,我们就来探讨一下这家公司如何在这个…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...