Python CSV 数据分析:问题排查与解决全记录

Python CSV 数据分析:问题排查与解决全记录

前段时间,我接到一个任务,需要对公司的销售数据进行分析。这些数据存储在 CSV 文件里,本想着用 Python 处理起来会很轻松,结果却状况百出。下面,就跟大家讲讲我是如何一步步解决这些问题的。

数据读取时的编码问题

我打算用pandas库来处理 CSV 文件,代码如下:

import pandas as pdtry:data = pd.read_csv('sales_data.csv')
except FileNotFoundError:print("文件不存在")
except UnicodeDecodeError:print("编码错误")

运行代码后,程序报错UnicodeDecodeError。我意识到,可能是 CSV 文件的编码格式有问题。CSV 文件常用的编码格式有utf - 8、gbk等。我通过查阅资料得知,pandas默认以utf - 8编码读取文件。于是,我猜测文件可能是gbk编码,修改代码如下:

import pandas as pdtry:data = pd.read_csv('sales_data.csv')
except FileNotFoundError:print("文件不存在")
except UnicodeDecodeError:print("编码错误")

这次,成功读取了数据。

数据清洗时的异常值问题

读取数据后,我查看数据概况,发现 “销售额” 这一列存在一些异常值,比如负数。我需要将这些异常值筛选出来并处理掉,代码如下:

import pandas as pddata = pd.read_csv('sales_data.csv', encoding='gbk')
invalid_data = data[data['销售额'] < 0]
print(invalid_data)

运行代码,能看到具体的异常数据。为了修正这些数据,我跟业务部门沟通后得知,这些负数是录入错误导致的,应该为 0。于是,我修改代码进行数据修正:

import pandas as pddata = pd.read_csv('sales_data.csv', encoding='gbk')
data['销售额'] = data['销售额'].apply(lambda x: 0 if x < 0 else x)

数据分组统计时的类型问题

接下来,我想按 “销售地区” 对销售额进行分组统计,代码如下:

import pandas as pddata = pd.read_csv('sales_data.csv', encoding='gbk')
data['销售额'] = data['销售额'].apply(lambda x: 0 if x < 0 else x)
grouped = data.groupby('销售地区')['销售额'].sum()
print(grouped)

结果运行后,发现统计结果不对。经过排查,我发现 “销售地区” 这一列的数据类型是浮点数,而不是字符串,这导致分组统计出现错误。我通过以下代码修正数据类型:

import pandas as pddata = pd.read_csv('sales_data.csv', encoding='gbk')
data['销售额'] = data['销售额'].apply(lambda x: 0 if x < 0 else x)
data['销售地区'] = data['销售地区'].astype(str)
grouped = data.groupby('销售地区')['销售额'].sum()
print(grouped)

这次,成功得到了正确的统计结果。

通过这次项目,我深切体会到,在数据分析过程中,遇到问题不可怕,只要掌握正确的排查方法,不断尝试,就能顺利解决问题,完成任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些常用开发软件下载地址

1. Matlab官方下载地址 MATLAB Runtime 是运行由 MATLAB 编译的应用程序&#xff08;如 .exe、.jar 或 .dll&#xff09;所必需的组件&#xff0c;无需安装完整 MATLAB。 &#x1f517; MathWorks 官方下载页面&#xff1a; https://www.mathworks.com/products/compiler/mat…

06-SpringBoot3入门-常见注解(简介)

1、Controller ResponseBody Controller是Spring MVC 中的注解&#xff0c;负责处理 HTTP 请求。 ResponseBody是Spring MVC 中的注解&#xff0c;用于直接将方法的返回值作为 HTTP 响应体。 2、RestController RestController Controller ResponseBody 3、RequestMappin…

ubuntu24.04.2 NVIDIA GeForce RTX 4060笔记本安装驱动

https://www.nvidia.cn/drivers/details/242281/ 上面是下载地址 sudo chmod x NVIDIA-Linux-x86_64-570.133.07.run # 赋予执行权限把下载的驱动复制到家目录下&#xff0c;基本工具准备&#xff0c;如下 sudo apt update sudo apt install build-essential libglvnd-dev …

【数据库相关MySql、Redis、MongoDB】

一、三种数据库的对比 MongoDB、MySQL 和 Redis 是三种不同类型的数据库系统&#xff0c;它们在数据模型、存储方式、性能特点、适用场景等方面存在显著区别。以下是它们的详细对比&#xff1a; 1. 数据模型 MySQL 类型&#xff1a;RDBMS&#xff08;关系型数据库&#xff0…

《Express:Node.js 里的 “闪电侠”》

“你就坐在我身边&#xff0c;好不好” 什么是Express 官方给出的概念&#xff1a;Express 是基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架。 通俗的理解&#xff1a;Express 的作用和 Node.js 内置的 http 模块类似&#xff0c;是专门用来创建 Web 服务器…

vue遗漏的知识点(动态组件.组件库的操作使用)

----动态组件&#xff08;vue2vue3通用&#xff09; <component :is"..."> 的作用 <component> 是 Vue 的内置组件&#xff0c;用于动态渲染其他组件。:is 属性 用于指定要渲染的组件。它的值可以是&#xff1a; 组件的名称&#xff08;字符串&#xf…

vue 项目启动报错可以让 cursor启动

vue 项目启动报错可以让 cursor启动

SQL EXISTS 与 NOT EXISTS 运算符

EXISTS 和 NOT EXISTS 是 SQL 中的逻辑运算符&#xff0c;用于检查子查询是否返回任何行。它们通常用在 WHERE 子句中&#xff0c;与子查询一起使用。 EXISTS 运算符 EXISTS 运算符用于检查子查询是否返回至少一行数据。如果子查询返回任何行&#xff0c;EXISTS 返回 TRUE&…

Android设计模式之模板方法模式

一、定义&#xff1a; 定义一个操作中的算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、结构&#xff1a; AbstractClass抽象类&#xff1a;定义算法的骨架&#xff0c;包含模板方法和若干…

Vue3当中el-tree树形控件使用

tree悬停tooltip效果 文本过长超出展示省略号 如果文本超出悬停显示tooltip效果 反之不显示 这里直接控制固定宽度限制 试了监听宽度没效果<template><el-treeshow-checkbox:check-strictly"true":data"data"node-key"id":props"…

QScreen 捕获屏幕(截图)

一、QScreen核心能力解析 硬件信息获取 // 获取主屏幕对象 QScreen* primaryScreen QGuiApplication::primaryScreen();// 输出屏幕参数 qDebug() << "分辨率:" << primaryScreen->size(); qDebug() << "物理尺寸:" << primar…

PDF处理控件Aspose.PDF教程:通过C#、Java 和 Python删除 PDF中的水印

Aspose.PDF 是一个功能强大的库&#xff0c;旨在以编程方式处理 PDF 文档&#xff0c;提供创建、编辑、转换和操作的广泛功能。它支持 C#、Java 和 Python 等多种编程语言&#xff0c;使开发人员能够精确高效地自动处理 PDF。 对于开发人员来说&#xff0c;由于自动化和定制化…

基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)

摘 要 随着我国经济的飞速发展&#xff0c;促使各种能源使用入不敷出&#xff0c;尤其是最主要的能源&#xff0c;煤炭石油资源不断消耗与短缺&#xff0c;因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点&#xff0c;且分布范围广&…

【硬件测试】基于FPGA的16QAM+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR

目录 1.算法硬件测试效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法硬件测试效果 本文是之前写的文章: 《基于FPGA的16QAM帧同步系统verilog开发,包含testb…

多路径 TCP 调度的另一面

参考前面的文章 一个原教旨的多路径 TCP 和 MP-BBR 公平性推演&#xff0c;一直都破而不立&#xff0c;不能光说怎样不好&#xff0c;还得说说现状情况下&#xff0c;该如何是好。 如果 receiver 乱序重排的能力有限(拜 TCP 所赐)&#xff0c;如果非要在多路径上传输 TCP&…

大数据学习(92)-spark详解

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

RAG - 五大文档切分策略深度解析

文章目录 切分策略1. 固定大小分割&#xff08;Fixed-Size Chunking&#xff09;2. 滑动窗口分割&#xff08;Sliding Window Chunking&#xff09;3. 自然语言单元分割&#xff08;Sentence/Paragraph Segmentation&#xff09;4. 语义感知分割&#xff08;Semantic-Aware Seg…

微信小程序引入TDesign组件后报错一直提示路径不对(Component is not found in path)的解决方法

最近在做微信小程序的项目&#xff0c;创建好项目后&#xff0c;按官方方式引入TDesign组件&#xff0c;但还是一直提示报错&#xff08;Component is not found in path "miniprogram_npm/tdesign-miniprogram/button/button" (using by "pages/login/login&qu…

拦截器和过滤器详解

在 Java Web 开发中&#xff0c;拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;是两种常见的请求处理机制&#xff0c;它们用于对请求和响应进行预处理和后处理 1. 过滤器&#xff08;Filter&#xff09; 1.1 作用 Filter 主要用于对 请求…

【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】

【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 目录 【机械视觉】C#VisionPro联合编程———【六、visionPro连接工业相机设备】 前言&#xff1a; 连接步骤说明 一. 硬件连接 支持的相机接口类型&#xff1a; 连接步骤 2. 软件配置 Visio…