1001系列之案例0001如何从淘宝销售数据集中挖掘有效信息

本文详述了如何从淘宝销售数据中挖掘信息,重点包括数据类型的优化以减少内存占用,以及对数值型和文本型变量的深入分析。通过变量间关系的描述性统计和方差分析,揭示了价格与成交量的关系。最后,利用透视表解决了关于成交量、卖家、宝贝和商家成交额的实际问题。
摘要由CSDN通过智能技术生成

本案例重点有二:
重点一在于如何修改数据类型以降低内存占用,这对大数据非常重要;
重点二在于分析变量之间的关系,单变量分布,双变量相关或方差分析,多变量回归或分类;

一、数据基本信息

#导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
#指定工作路径以导入数据或者存入数据
import os
os.chdir("D:\Data\File")
#可视化的必要设置
%matplotlib inline
plt.rcParams["font.sans-serif"] = ["KAITI"]
plt.rcParams["axes.unicode_minus"] = False

1.1 数据集查看

#导入数据并查看前两行
df = pd.read_csv("taobao_data.txt")
df.head(5)
宝贝 价格 成交量 卖家 位置
0 新款中老年女装春装雪纺打底衫妈妈装夏装中袖宽松上衣中年人t恤 99.0 16647 夏奈凤凰旗舰店 江苏
1 中老年女装清凉两件套妈妈装夏装大码短袖T恤上衣雪纺衫裙裤套装 286.0 14045 夏洛特的文艺 上海
2 母亲节衣服夏季妈妈装夏装套装短袖中年人40-50岁中老年女装T恤 298.0 13458 云新旗舰店 江苏
3 母亲节衣服中老年人春装女40岁50中年妈妈装套装夏装奶奶装两件套 279.0 13340 韶妃旗舰店 浙江
4 中老年女装春夏装裤大码 中年妇女40-50岁妈妈装夏装套装七分裤 59.0 12939 千百奈旗舰店 江苏

1.2 修改数据类型以节省空间

# 查看数据集的数据类型、数量和内存空间
df.info(memory_usage="deep")     #memory_usage参数可以查看数据集导入内存需要占用多少内存,这在导入大型数据集时非常有用
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   宝贝      100 non-null    object 
 1   价格      100 non-null    float64
 2   成交量     100 non-null    int64  
 3   卖家      100 non-null    object 
 4   位置      100 non-null    object 
dtypes: float64(1), int64(1), object(3)
memory usage: 33.4 KB
df.memory_usage()
Index    128
宝贝       800
价格       200
成交量      200
卖家       800
位置       464
销售额      400
dtype: int64
df.memory_usage().sum()
2992

以上可知有五个变量,一个整型,一个浮点型,三个对象型,数据集大小是33.4KB,长度为100行;

#找出卖家这一列中名字最长的店的长度
df["卖家"].apply(lambda x:len(x)).max()
15
#查看各个变量的数据的最大值,以确定是否更改数据类型以减少占用内存
#“宝贝”这一变量的数据类型是Object,它的内容是文字,既不能转换为数值,也不能转换为类别型,只能保留其数据类型
#价格的数据类型为浮点型,最大值为698.00,保留两位小数,numpy中float有float16(半精度),float32,float64三种,半精度可以表示的最大数为65504,最小数6.104×10^(-5),所以一般情况float316就够用了
#成交量的数据类型是整型,最大值为16647,最小值为3956,所以可以转换为uint16(无符号整数(0 to 65535)
#卖家的数据类型是Object,有85个唯一值,而且长度最长有15个汉字,占30个字节,如果转换成类别型数据比Object节省空间
#位置是省级行政区,可以转换为类别型数据
df["价格"] = df["价格"].astype("float16")
df.info(memory_usage="deep")  #可以看到内存减少了0.6KB
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   宝贝      100 non-null    object 
 1   价格      100 non-null    float16
 2   成交量     100 non-null    int64  
 3   卖家      100 non-null    object 
 4   位置      100 non-null    object 
dtypes: float16(1), int64(1), object(3)
memory usage: 32.8 KB
df["成交量"] = df["成交量"].astype("uint16")
df.info(memory_usage="deep")  #可以看到内存又减少了0.6KB
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   宝贝      100 non-null    object 
 1   价格      100 non-null    float16
 2   成交量     100 non-null    uint16 
 3   卖家      100 non-null    object 
 4   位置      100 non-null    object 
dtypes: float16(1), object(3), uint16(1)
memory usage: 32.2 KB
df["位置"] = df["位置"].astype("category")
df.info(memory_usage="deep")  #可以看到内存减少了7.3KB,减少的最多
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype   
---  ------  --------------  -----   
 0   宝贝      100 non-null    object  
 1   价格      100 non-null    float16 
 2   成交量     100 non-null    uint16  
 3   卖家      100 non-null    object  
 4   位置      100 non-null    category
dtypes: category(1), float16(1), object(2), uint16(1)
memory usage: 24.9 KB
df["卖家"] = df["卖家"].astype("category")
df.info(memory_usage="deep")  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值