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