项目:评估和清理英国电商公司销售数据
分析目标
此数据分析的目的是,根据市场销售数据,挖掘畅销产品,以便制定更有效的市场策略来提升营收。本实战项目的目的在于练习评估数据干净和整洁度,并且基于评估结果,对数据进行清洗,从而得到可供下一步分析的数据。
简介
原始数据集记录了一家英国在线零售公司在2010年12月1日至2011年12月9日期间的所有交易情况,涵盖了该公司在全球不同国家和地区的业务数据。该公司主要销售覆盖各个场景的礼品,包括但不限于生日礼品、结婚纪念品、圣诞礼品等等。该公司的客户群体主要包括批发商和个人消费者,其中批发商占据了相当大的比例。
数据每列的含义如下:
InvoiceNo
: 发票号码。6位数,作为交易的唯一标识符。如果这个代码以字母“c”开头,表示这笔交易被取消。StockCode
: 产品代码。5位数,作为产品的唯一标识符。Description
: 产品名称。Quantity
: 产品在交易中的数量。InvoiceDate
: 发票日期和时间。交易发生的日期和时间。UnitPrice
: 单价。价格单位为英镑(£)。CustomerID
: 客户编号。5位数,作为客户的唯一标识符。Country
: 国家名称。客户所居住的国家的名称。
读取数据
导入数据分析所需要的库,并通过Pandas的read_csv函数将原始数据文件"e_commerce.csv"里的数据内容解析为DataFrame,并赋值给变量original_data
import pandas as pd
original_data = pd.read_csv("e_commerce.csv")
评估数据
在这一部分将对上一部分建立的original_data这个DataFrame所包含的数据进行评估
评估主要从两个方面进行:结构和内容,即整齐度和干净度数据的结构性问题指不符合“每列是一个变量每行是一个观察值,每个单元格是一个值”这三个标准数据的内容性问题包括存在丢失数据,重复数据无效数据等
评估数据整齐度
original_data.sample(10)
从抽样的10行数据来看,数据符合"每列是一个变量,每行是一个观察值,每个单元格是一个值",具体来看每行是关于某商家的一次交易每列是交易相关的各个变量因此不存在结构性问题
评估数据干净度
origianl_data.info()
根据info信息可以看出一共有541909行数据,description和customerID非空缺数量是小于总行数的,所以这两个变量存在缺失值。并且invoiceData是指发票时间,则类型也应该是日期时间而不是字符串。customerID是用户编号,类型应该是字符串而不是浮点数
评估缺失数据
在了解Description存在缺失值后 根据条件提取出缺失观察值
original_data[original_data["Description"].isnull()]
有1454条交易数据缺失description变量值
从输出结果来看 这些缺失Description的交易数据,UnitPrice都为0.为了验证猜想,我们增加筛选条件看是否存在Description变量缺失且UnitPrice不为0的数据
original_data[(original_data["Description"].isnull()) & (original_data["UnitPrice"] !=