Python代码示例:数据清洗、表合并和分组计算销售额

简介: Python代码示例:数据清洗、表合并和分组计算销售额

Python代码示例:数据清洗、表合并和分组计算销售额

在数据分析和处理过程中,数据清洗、表合并和分组计算销售额是常见的任务。本文将使用Python编程语言演示如何进行这些操作。

首先,我们需要生成模拟的销售数据和商品详情数据。我们创建了一个包含订单编号、产品名称和数量的销售数据表,以及一个包含产品名称、类别和单价的商品详情表。我们使用随机数生成器来填充这些数据,并将它们保存为CSV文件。

import pandas as pd
import random
# 创建商品池子
product_pool = ['苹果', '香蕉', '橙子', '牛奶', '面包', '洗发水', '牙刷', '洗衣液']
# 生成销售数据表
sales_data = pd.DataFrame({
    '订单编号': [f'订单{i}' for i in range(1, 11)],
    '产品名称': [random.choice(product_pool) for _ in range(10)],
    '数量': [random.randint(1, 10) for _ in range(10)]
})
# 添加价格列
sales_data['价格'] = [random.randint(10, 100) for _ in range(10)]
# 打印销售数据表
print("销售数据表:")
print(sales_data.to_string(index=False))
# 生成商品详情表
product_data = pd.DataFrame({
    '产品名称': product_pool,
    '类别': ['水果', '水果', '水果', '乳制品', '面包', '洗护用品', '洗护用品', '洗涤用品'],
    '品牌': ['品牌A', '品牌A', '品牌B', '品牌B', '品牌C', '品牌C', '品牌D', '品牌D']
})
# 添加单价列
product_data['单价'] = [random.randint(1, 10) for _ in range(len(product_pool))]
# 打印商品详情表
print("\n商品详情表:")
print(product_data.to_string(index=False))
# 将销售数据表保存为CSV文件
sales_data.to_csv('sales_data.csv', index=False)
# 将商品详情表保存为CSV文件
product_data.to_csv('product_data.csv', index=False)

接下来,我们将读取这两个CSV文件,并进行数据清洗和表合并。我们使用pd.read_csv()函数读取CSV文件,然后使用dropna()函数去除销售数据表中的空值行。使用pd.merge()函数按照产品名称进行左连接合并销售数据表和商品详情表。

import pandas as pd
# 读取销售数据表和商品详情表
sales_data = pd.read_csv('sales_data.csv')
product_data = pd.read_csv('product_data.csv')
# 数据清洗
# 去除销售数据表中的空值行
sales_data = sales_data.dropna()
# 合并销售数据表和商品详情表
merged_data = pd.merge(sales_data, product_data, on='产品名称', how='left')
# 打印合并后的数据
print("合并后的数据:")
print(merged_data.to_string(index=False))

最后,我们对合并后的数据进行合理的分组,并计算销售额。我们使用groupby()函数按照类别进行分组,并使用agg()函数计算总数量和总价格。然后,我们计算销售额,并将其添加到分组后的数据中。

# 按类别分组,并计算销售额
grouped_data = merged_data.groupby('类别').agg({'数量': 'sum', '价格': 'sum'})
# 打印按类别分组的销售数据
print("\n按类别分组的销售数据:")
print(grouped_data.to_string())
# 计算销售额
grouped_data['销售额'] = grouped_data['数量'] * grouped_data['价格']
# 打印按类别分组的销售额
print("\n按类别分组的销售额:")
print(grouped_data.to_string())

完整代码

数据生成代码

import pandas as pd
import random
# 创建商品池子
product_pool = ['苹果', '香蕉', '橙子', '牛奶', '面包', '洗发水', '牙刷', '洗衣液']
# 生成销售数据表
sales_data = pd.DataFrame({
    '订单编号': [f'订单{i}' for i in range(1, 11)],
    '产品名称': [random.choice(product_pool) for _ in range(10)],
    '数量': [random.randint(1, 10) for _ in range(10)]
})
# 添加价格列
sales_data['价格'] = [random.randint(10, 100) for _ in range(10)]
# 打印销售数据表
print("销售数据表:")
print(sales_data.to_string(index=False))
# 生成商品详情表
product_data = pd.DataFrame({
    '产品名称': product_pool,
    '类别': ['水果', '水果', '水果', '乳制品', '面包', '洗护用品', '洗护用品', '洗涤用品'],
    '品牌': ['品牌A', '品牌A', '品牌B', '品牌B', '品牌C', '品牌C', '品牌D', '品牌D']
})
# 添加单价列
product_data['单价'] = [random.randint(1, 10) for _ in range(len(product_pool))]
# 打印商品详情表
print("\n商品详情表:")
print(product_data.to_string(index=False))
# 将销售数据表保存为CSV文件
sales_data.to_csv('sales_data.csv', index=False)
# 将商品详情表保存为CSV文件
product_data.to_csv('product_data.csv', index=False)

数据操作代码

import pandas as pd
# 读取销售数据表和商品详情表
sales_data = pd.read_csv('sales_data.csv')
product_data = pd.read_csv('product_data.csv')
# 数据清洗
# 去除销售数据表中的空值行
sales_data = sales_data.dropna()
# 合并销售数据表和商品详情表
merged_data = pd.merge(sales_data, product_data, on='产品名称', how='left')
# 按类别分组,并计算销售额
grouped_data = merged_data.groupby('类别').agg({'数量': 'sum', '价格': 'sum'})
# 打印合并后的数据和计算结果
print("合并后的数据:")
print(merged_data.to_string(index=False))
print("\n按类别分组的销售数据:")
print(grouped_data.to_string())
# 计算销售额
grouped_data['销售额'] = grouped_data['数量'] * grouped_data['价格']
print("\n按类别分组的销售额:")
print(grouped_data.to_string())
相关文章
|
1天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
2天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
2天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
14 5
|
2天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
12 4
|
4天前
|
缓存 开发者 Python
探索Python中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
2天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
11 2
|
4天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
26 3
|
2天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
14 4
|
2天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
4天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
15 5
下一篇
无影云桌面