背景
这是一个跨国数据集,其中包含2010年12月12日至2011年12月9日之间在英国注册的非商店在线零售的所有交易。该公司主要销售独特的全时礼品。许多客户该公司是批发商。
数据下载地址:https://www.kaggle.com/carrie1/ecommerce-data
要是直接点进去显示404,则可以直接去kaggle搜索‘E-Commerce Data’即可
字段含义:
数据形状:542k 行x 8列,8个字段分别为发票号,发票日期,商品码,商品描述,数量,单价,顾客ID,国家。
InvoiceNo: 订单编号,退货单号由字母’c’开头。
StockCode: 产品编号,每个不同的产品分配唯一的5位整数。
Description: 产品描述。
Quantity: 产品数量,每笔交易的每件产品的数量,有负号代表有退货。
InvoiceDate: 订单日期和时间。
UnitPrice: 单价(英镑),单位产品价格。
CustomerID:顾客号码,每个客户分配唯一的5位整数。
Country: 国家的名字,每个客户所在国家/地区的名称。
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import plotly as py
import seaborn as sns
import plotly.graph_objs as go #画图直接使用plotly函数比matplotlib方便一些
#下面两行是使用plotly画图时需要的
py.offline.init_notebook_mode()
pyplot = py.offline.iplot
#下面两行是解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
os.chdir('C:\\Users\\asus\\Desktop\\七天成为数据分析师\\数据集\\data') #os.chdir表示定位到需要的文件夹
data = pd.read_csv('data.csv', encoding = 'ISO-8859-1', dtype = {
'CustomerID': str})
"""
encoding我用uft-8和gbk都不好使,只有用ISO-8859-1才好使,ISO-8859-1称Latin-1或“西欧语言”,
是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,
加入96个字母及符号,藉以供使用附加符号的拉丁字母语言使用。实际上Windows-1252代码页包含了所有出现在ISO-8859-15中的字符。
ISO-8859-1对应的Windows代码页是Windows-28591。[4]然而,英文版的Windows 7、Windows10家庭中文版 系统上没有Windows-28591代码页。
"""
#理解数据
data.info() #查看数据(字段)的基本信息,看是否存在缺失值
data[data['InvoiceNo'].str[0] == 'C'] #查看是否有退货的
#数据清洗
data.apply(lambda x: sum(x.isnull())/