当前位置: 首页 > 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 记录了园林景观的植物排布情况,具有以下特性: 每行中,每棵植物的右侧相邻植物不矮于该植物; 每列中,每棵植物的下侧相邻植物不矮于该…...

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

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

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...