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

python pandas数据清洗

一、介绍:

2024金砖python样题中数据清洗部分代码实现

二、任务要求:

数据集中有购药时间、社保卡号、商品编码、商品名称、销售数
量、应收金额、实收金额几个字段,请你使用 NumPy 和 Pandas 按如
下要求对数据进行清洗:

1.购药时间就是销售时间,为了后续分析更好的理解字段,将"
购药时间"改为"销售时间";

2.任何一条数据中只要有一个缺失值就删除该条数据;

3.将销售数量、应收金额、实收金额三列的数据类型转换为float64;

4.销售时间中包含日期和星期几,要求数据最终只保留日期,并
把销售日期从字符串类型转换为日期数据类型;

5.转换日期过程中不符合日期格式的数值会被转换为空值,需要
删除列(销售时间,社保卡号)中为空的行;

6.按销售日期进行升序排列,排序后的索引已被打乱,需要修改
成从 0 到 N 按顺序的索引值;

7.将有异常值(如销售数量、应付金额、实付金额为负数)的数
据进行删除。

8.将清洗后的数据保存为 CSV 文件。
 

三、代码部分:

1.购药时间就是销售时间,为了后续分析更好的理解字段,将"
购药时间"改为"销售时间";

import pandas as pd# 打开数据集
df = pd.read_excel('药品销售数据集.xlsx', engine='openpyxl')headers = df.columns.tolist()
headers = ['销售时间' if header == '购药日期' else header for header in headers]
# 重命名列
df.rename(columns={'购药日期': '销售日期'}, inplace=True)

2.任何一条数据中只要有一个缺失值就删除该条数据;

# 删除包含任何缺失值的行
df = df.dropna()

3.将销售数量、应收金额、实收金额三列的数据类型转换为float64;


# 转换数据类型
df['销售数量'] = df['销售数量'].astype('float64')
df['应收金额'] = df['应收金额'].astype('float64')
df['实收金额'] = df['实收金额'].astype('float64')

4.销售时间中包含日期和星期几,要求数据最终只保留日期,并
把销售日期从字符串类型转换为日期数据类型;


# 提取日期部分并转换为日期数据类型
df['销售日期'] = pd.to_datetime(df['销售日期'].str.split(' ').str[0])

5.转换日期过程中不符合日期格式的数值会被转换为空值,需要
删除列(销售时间,社保卡号)中为空的行;


# 删除包含空值的行
df = df.dropna(subset=['销售日期', '社保卡号'])
print("处理后的数据:")
print(df)
print("\n销售日期的数据类型:", df['销售日期'].dtype)

6.按销售日期进行升序排列,排序后的索引已被打乱,需要修改
成从 0 到 N 按顺序的索引值;


# 按销售日期升序排列
df = df.sort_values(by='销售日期')
# 重置索引
df.reset_index(drop=True, inplace=True)
print("处理后的数据:")
print(df)
print("\n销售日期的数据类型:", df['销售日期'].dtype)

7.将有异常值(如销售数量、应付金额、实付金额为负数)的数
据进行删除。


# 删除异常值:销售数量、应收金额和实收金额为负值的行
df = df[(df['销售数量'] >= 0) & (df['应收金额'] >= 0) & (df['实收金额'] >= 0)]
# 按销售日期升序排列
df = df.sort_values(by='销售日期')
# 重置索引
df.reset_index(drop=True, inplace=True)
print("处理后的数据:")
print(df)

8.将清洗后的数据保存为 CSV 文件。


# 保存为 CSV 文件
df.to_csv('清洗后的数据.csv', index=False, encoding='utf-8-sig')
print("数据已保存为 '清洗后的数据.csv'")

完整代码:


import pandas as pd# 打开数据集
df = pd.read_excel('药品销售数据集.xlsx', engine='openpyxl')"""
1.购药时间就是销售时间,为了后续分析更好的理解字段,将"
购药时间"改为"销售时间";
"""
headers = df.columns.tolist()
headers = ['销售时间' if header == '购药日期' else header for header in headers]
# 重命名列
df.rename(columns={'购药日期': '销售日期'}, inplace=True)"""
2.任何一条数据中只要有一个缺失值就删除该条数据;
"""
# 删除包含任何缺失值的行
df = df.dropna()"""
3.将销售数量、应收金额、实收金额三列的数据类型转换为float64;
"""
# 转换数据类型
df['销售数量'] = df['销售数量'].astype('float64')
df['应收金额'] = df['应收金额'].astype('float64')
df['实收金额'] = df['实收金额'].astype('float64')"""
4.销售时间中包含日期和星期几,要求数据最终只保留日期,并
把销售日期从字符串类型转换为日期数据类型;
"""
# 提取日期部分并转换为日期数据类型
df['销售日期'] = pd.to_datetime(df['销售日期'].str.split(' ').str[0])"""
5.转换日期过程中不符合日期格式的数值会被转换为空值,需要
删除列(销售时间,社保卡号)中为空的行;
"""
# 删除包含空值的行
df = df.dropna(subset=['销售日期', '社保卡号'])
print("处理后的数据:")
print(df)
print("\n销售日期的数据类型:", df['销售日期'].dtype)"""
6.按销售日期进行升序排列,排序后的索引已被打乱,需要修改
成从 0 到 N 按顺序的索引值;
"""
# 按销售日期升序排列
df = df.sort_values(by='销售日期')
# 重置索引
df.reset_index(drop=True, inplace=True)
print("处理后的数据:")
print(df)
print("\n销售日期的数据类型:", df['销售日期'].dtype)"""
7.将有异常值(如销售数量、应付金额、实付金额为负数)的数
据进行删除。
"""
# 删除异常值:销售数量、应收金额和实收金额为负值的行
df = df[(df['销售数量'] >= 0) & (df['应收金额'] >= 0) & (df['实收金额'] >= 0)]
# 按销售日期升序排列
df = df.sort_values(by='销售日期')
# 重置索引
df.reset_index(drop=True, inplace=True)
print("处理后的数据:")
print(df)"""
8.将清洗后的数据保存为 CSV 文件。
"""
# 保存为 CSV 文件
df.to_csv('清洗后的数据.csv', index=False, encoding='utf-8-sig')
print("数据已保存为 '清洗后的数据.csv'")


 

http://www.lryc.cn/news/575463.html

相关文章:

  • 【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿
  • 解锁阿里云Datatransport:数据迁移的终极利器
  • 前端项目3-01:登录页面
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(4):2022年12月2023年12月
  • WPF中Converter基础用法
  • OceanBase SQL 引擎高级技术学习笔记(通俗篇)
  • 智能制造——58页智慧工厂解决方案【附全文阅读】
  • python中学物理实验模拟:斜面受力分析
  • Elasticsearch 中的精确搜索与模糊搜索
  • electron 如何配置 打开控制台
  • Android 开发 获取Debug 跟 Release 包的SHA1值
  • DeepSeek16-open-webui Pipelines开发填坑
  • C语言再出发:2025年AI时代的关键语言
  • 华为云Flexus+DeepSeek征文|基于华为云一键部署 Dify-LLM 平台,结合 MCP 工具与 DeepSeek 模型打造智能学习助手
  • 【stm32】HAL库开发——Cube配置基本定时器
  • 猴子爬山(华为OD)
  • 什么是回归测试?什么时候需要做回归测试?
  • bug复盘:MCP SSE Client 生命周期问题之context.Background() 的使用
  • B站视频下载技术揭秘:从浏览器抓包到FFmpeg音视频合成
  • 0 数学习题本
  • GraphQL注入 -- GPN CTF 2025 Real Christmas
  • 开发语言漫谈-R语言
  • Apache 支持 HTTPS
  • Hive3.1.3加载paimon-hive-connector-3.1-1.1.1.jar报错UnsatisfiedLinkError
  • C++ Programming Language —— 第3章:运算符
  • HDFS(Hadoop分布式文件系统)总结
  • 【unitrix】 4.7 库数字取反(not.rs)
  • 组织策略性陪伴顾问
  • Java后端中的并发控制:从锁机制到无锁编程的实现
  • 供应链管理:主要生产计划类型及其相关信息