7.电商数据分析:数据类型的底层基础与处理方法

开篇:为什么数据类型是电商数据分析的底层基础

我入行第一年,遇到过一件很尴尬的事。运营同事发给我一份“用户评价”Excel文件,让我统计一下“好评率”。我打开一看,评价内容全是中文长文本,我直接用了Excel的COUNT函数,结果完全不对——因为每条评价不是数字,没法直接统计。后来我才知道,这是“非结构化数据”,需要用文本处理的方法,而不是用数字统计的方法。

在电商数据分析里,数据不是“一张规整的表格”那么简单。你会遇到:

  • 结构化数据:订单表、用户表,行是记录,列是字段,规规整整

  • 半结构化数据:JSON格式的埋点日志、API返回的嵌套数据

  • 非结构化数据:用户评价文本、商品主图、客服聊天记录

搞不清这三种数据类型的区别和处理方法,你就会像我当年一样,拿着错误的方法去处理错误的数据,得出错误的结论。

这一章帮你搞清楚:这三种数据长什么样、在电商场景里出现在哪里、该用什么工具处理、有哪些坑要避开。

学习前准备:下载1份电商订单数据(Excel格式)、1份用户评价数据(文本格式)、1份商品详情页数据(可包含图片),用于后续对照理解。

电商场景下数据类型分类的核心逻辑

分类标准:数据的“规整程度”

数据类型的分类型,本质上是按照数据的结构化程度来划分的:

  • 结构化数据:有固定的行和列,每列的数据类型一致,可以用二维表存储

  • 半结构化数据:有一定结构(如键值对),但不同记录的长度和字段可能不一致

  • 非结构化数据:没有固定结构,无法直接放入二维表

掌握这个知识点对后续工作的核心作用

  • 决定处理方法:结构化数据用SQL/Excel,半结构化数据用JSON解析工具,非结构化数据用NLP或图像识别

  • 决定工具选择:MySQL适合存结构化数据,MongoDB适合存半结构化数据,专用引擎适合处理非结构化数据

  • 避免方法错误:不会把文本当数字去求平均值,也不会把图片当成表格去筛选

我的踩坑经历:我曾经试图用Excel处理半结构化的JSON日志,手动拆分了几百行,效率极低。后来学了Python的json库,几行代码就解析完。从那以后,我明白了:用对工具比用功更重要,而选对工具的前提是认清数据类型。

结构化数据详解

核心定义

结构化数据是指格式规整、可以用关系型数据库二维表存储的数据。每行是一条记录,每列是一个属性,列的数据类型一致(如数字、文本、日期)。

电商场景下的常见数据类型

数据类型 电商示例 特征
订单数据 订单号、用户ID、金额、下单时间 每行一笔订单,列固定
用户画像 用户ID、性别、年龄、省份 每行一个用户
商品信息 商品ID、标题、价格、库存 每行一个商品
流量数据 用户ID、访问页面、停留时长 每行一次访问记录

特征与处理方法

  • 特征:固定列数、固定数据类型、可索引、可关联(如订单表通过用户ID关联用户表)

  • 处理方法

    • 存储:MySQL、PostgreSQL、Hive

    • 查询:SQL(SELECT、JOIN、GROUP BY)

    • 分析:Excel数据透视表、Python Pandas

  • 清洗重点:缺失值填充、重复值删除、数据类型转换(如文本日期转日期类型)

工具选择

数据量级 推荐工具 原因
小(万行以内) Excel / WPS 快速上手,透视表和函数够用
中(百万行以内) MySQL / SQLite SQL查询高效,支持索引
大(千万行以上) Hive / Spark SQL 分布式计算,处理海量数据

电商场景实操案例

场景:订单表orders(结构化)需要计算每个店铺的GMV。


SELECT shop_name, SUM(amount) AS gmv
FROM orders
WHERE order_status = '已支付'
GROUP BY shop_name;

处理步骤

  1. 识别数据格式:订单表是典型的二维表,属于结构化数据

  2. 选择工具:百万行以内用MySQL,用SQL聚合

  3. 清洗:过滤订单状态(只算已支付),确保金额列是数字类型

  4. 输出:店铺GMV排行

避坑提醒

  • 结构化数据最容易忽略的是数据类型一致性。比如金额列混入了文本“¥299”,SQL的SUM会报错或跳过。清洗时一定要先统一类型。

  • 不要在Excel里打开百万行的结构化数据,会卡死。应该先用SQL聚合,再导出小结果集。

半结构化数据详解

核心定义

半结构化数据是介于结构化和非结构化之间的数据,它有标签和键值对,但不同记录的字段数量和类型可能不一致。常见的格式有JSON、XML、YAML。

电商场景下的常见数据类型

数据类型 电商示例 特征
埋点日志 用户行为JSON:{"user_id":"123","action":"click","item_id":"456","timestamp":...} 每条记录字段可能不同
API返回数据 淘宝开放平台返回的订单详情JSON,嵌套商品列表 多层嵌套,字段动态
配置数据 店铺装修配置XML、优惠券规则JSON 结构灵活,但有一定规范
商品属性 不同类目商品的属性不同(如“手机”有内存字段,“衣服”有尺码字段) 属性列表不固定

特征与处理方法

  • 特征:自描述(字段名和值一起存储)、可嵌套(对象里有对象)、结构灵活

  • 处理方法

    • 存储:MongoDB、Elasticsearch(文档型数据库)

    • 解析:Python的json模块、pandas.json_normalize()、SQL的JSON函数(MySQL 5.7+、PostgreSQL)

    • 分析:将半结构化数据“拍平”成结构化表后再分析

工具选择

工具 适用场景
Python + Pandas 少量JSON文件,需要清洗后分析
MongoDB 大量半结构化数据,需要灵活查询
MySQL 8.0 已有MySQL环境,偶尔处理JSON字段
大数据平台(Spark) 海量JSON日志分析

电商场景实操案例

场景:用户行为日志以JSON格式存储,每行一个JSON,需要统计每个商品的点击量。


import pandas as pd
import json

# 读取JSON Lines文件(每行一个JSON)
data = []
with open('user_behavior.json', 'r') as f:
    for line in f:
        data.append(json.loads(line))

# 转换为DataFrame
df = pd.json_normalize(data)

# 筛选点击行为,统计点击量
clicks = df[df['action'] == 'click'].groupby('item_id').size()
print(clicks)

处理步骤

  1. 识别格式:JSON Lines,每行是一个独立的JSON对象

  2. 选择工具:Python + Pandas

  3. 解析:用json.loads读取每行,或用pd.read_json直接读(如果文件格式标准)

  4. 清洗:过滤出action='click'的记录

  5. 聚合:按商品ID分组计数

避坑提醒

  • JSON数据可能多层嵌套,直接用pd.read_json可能得到嵌套列(如user.id)。可以用json_normalize或手动展开。

  • 半结构化数据不适合用Excel处理。Excel对JSON支持很差,建议用Python。

  • 解析大型JSON文件时,不要一次性用json.load()加载整个文件,会内存爆炸。应该逐行读取(JSON Lines格式)或用流式解析器。

我的踩坑经历:有一次分析App埋点日志,JSON文件有5GB,我直接用json.load(),电脑内存爆了。后来改用逐行读取,才顺利处理完。教训:处理大数据时,要考虑内存,不要一次性加载

非结构化数据详解

核心定义

非结构化数据是没有固定结构、无法用二维表表示的数据。常见形式:文本、图片、音频、视频。

电商场景下的常见数据类型

数据类型 电商示例 特征
文本数据 用户评价、客服聊天记录、商品标题和详情描述 长度不一,无固定字段
图片数据 商品主图、详情页图片、用户晒图 像素矩阵,无结构化属性
视频数据 商品介绍视频、直播回放 时间序列帧
音频数据 客服通话录音 声波数据

特征与处理方法

  • 特征:没有预定义的数据模型,不适合直接存入关系型数据库

  • 处理方法

    • 存储:对象存储(OSS、S3)、文件系统、NoSQL数据库(如MongoDB的GridFS)

    • 分析:文本分析(NLP)、图像识别(CV)、语音转文字(ASR)

    • 元数据抽取:从非结构化数据中提取结构化元数据(如图片的拍摄时间、尺寸)

工具选择

任务 工具 说明
文本分类/情感分析 Python(NLTK、snownlp、Transformers) 判断用户评价是好评还是差评
关键词提取 Python(jieba、TF-IDF) 从评价中提取高频词
图像识别 云服务(阿里云图像识别、百度AI)或Python(OpenCV、PaddleOCR) 识别商品图片中的标签、违规内容
语音转文字 云服务(阿里云语音识别、腾讯云ASR) 客服录音转文字后分析

电商场景实操案例

场景:分析用户评价文本,判断好评率和提取关键词。


import pandas as pd
import jieba
from snownlp import SnowNLP

# 读取评价数据
df = pd.read_csv('user_reviews.csv')

# 用SnowNLP做情感分析(返回0-1之间,>0.5为正面)
df['sentiment_score'] = df['review_text'].apply(lambda x: SnowNLP(x).sentiments)
df['sentiment'] = df['sentiment_score'].apply(lambda x: '正面' if x > 0.5 else '负面')

# 统计好评率
positive_rate = (df['sentiment'] == '正面').mean()
print(f"好评率:{positive_rate:.2%}")

# 提取关键词(以正面评价为例)
positive_texts = ' '.join(df[df['sentiment'] == '正面']['review_text'])
words = jieba.lcut(positive_texts)
word_freq = pd.Series(words).value_counts().head(10)
print("正面评价高频词:", word_freq)

处理步骤

  1. 识别数据类型:用户评价是文本,属于非结构化数据

  2. 选择方法:情感分析(判断正负面)+ 分词(提取关键词)

  3. 执行:用SnowNLP和jieba库处理

  4. 输出:好评率和高频词,供运营优化商品

避坑提醒

  • 不要试图把非结构化数据强行塞进SQL表。比如把整段用户评价存为一个文本字段是可以的,但不要试图在SQL里对文本做复杂分析(如情感计算),应该用专业NLP工具。

  • 非结构化数据分析需要领域知识。比如“面料很舒服”在服装类目是正面词,在电子产品类目可能无关。要结合业务理解调整模型。

  • 成本问题:图像识别、语音转文字等API通常按次收费,大规模处理前要评估预算。

📌 电商数据合规提示:处理用户评价文本时,如果涉及用户ID、昵称等,在分析前应脱敏(如用随机ID代替)。不要将原始评价文本随意导出或分享。对于客服录音等涉及用户隐私的非结构化数据,必须严格遵守公司数据安全规定,未经用户同意不得用于分析。

综合实操案例:电商店铺全渠道数据分类梳理

案例背景

某天猫店铺在日常运营中收集了以下数据,需要你梳理数据类型,并为每种数据匹配合适的处理方法和工具。

数据清单:

  • 订单明细表(orders.csv):订单号、用户ID、金额、下单时间、订单状态

  • 用户行为日志(behavior.json):每行一个JSON,记录用户点击、加购、收藏等行为

  • 用户评价(reviews.txt):每行一条评价文本

  • 商品主图(product_images/文件夹):JPG图片,文件名对应商品ID

分步操作

步骤1:逐项判断数据类型

数据 数据类型 判断依据
订单明细表 结构化 规整的二维表,行列固定,可用SQL
用户行为日志 半结构化 JSON格式,有嵌套字段,但有一定结构
用户评价 非结构化(文本) 纯文本,无固定格式
商品主图 非结构化(图片) 图像数据,无法直接放入表格
步骤2:匹配合适的处理方法和工具
数据 处理方法 推荐工具 分析目标示例
订单明细表 SQL聚合、Excel透视 MySQL / Excel 计算各店铺GMV
用户行为日志 JSON解析,展开为表 Python (pandas) 统计各商品点击量
用户评价 情感分析、关键词提取 Python (SnowNLP, jieba) 计算好评率,提取高频问题
商品主图 图像识别(可选) 阿里云图像识别 检测主图是否违规(如牛皮癣)
步骤3:编写处理脚本框架(以用户评价为例)

# 伪代码,仅示意
import pandas as pd
from snownlp import SnowNLP

# 读取评价文本
with open('reviews.txt', 'r', encoding='utf-8') as f:
    reviews = f.readlines()

# 情感分析
sentiments = [SnowNLP(text).sentiments for text in reviews]
df_sentiment = pd.DataFrame({'text': reviews, 'score': sentiments})
df_sentiment['sentiment'] = df_sentiment['score'].apply(lambda x: 'positive' if x > 0.5 else 'negative')

# 输出统计
print(df_sentiment['sentiment'].value_counts(normalize=True))

步骤4:产出数据分类对照表

数据名称 数据类型 存储方式 分析工具 输出成果
订单明细 结构化 MySQL SQL 每日GMV报表
行为日志 半结构化 MongoDB / S3 Python 用户行为漏斗
用户评价 非结构化 文件系统 Python NLP 好评率、词云
商品主图 非结构化 OSS 云API 违规检测报告

案例小结

通过这个练习,你应该能快速识别电商日常工作中遇到的不同数据类型,并知道该用什么工具和方法处理。核心原则:结构化数据用SQL/Excel,半结构化用JSON解析,非结构化用专门的分析工具(NLP、CV)

本章踩坑清单与合规总结

新手常见踩坑

错误认知 后果 正确做法
所有数据都能放Excel Excel打不开大JSON,无法处理图片 用专业工具处理不同类型数据
用SQL处理非结构化文本 SQL不适合复杂文本分析 用NLP库或云服务
忽略半结构化数据的嵌套 解析错误,数据丢失 json_normalize展开嵌套
非结构化数据不脱敏 用户隐私泄露 分析前脱敏,只保留必要信息

电商数据合规提示

  • 用户评价文本:虽然是非结构化数据,但其中可能包含用户昵称、联系方式等个人信息。在导出或分析前,应用正则表达式过滤手机号、邮箱等。

  • 客服录音:属于高度敏感数据,使用前必须获得用户授权,且只能在公司内部加密环境中分析,严禁下载到个人设备。

  • 商品图片:如果用于违规检测,不要将图片转发给第三方服务,除非该服务已签署数据保密协议。

结语

数据类型分类是电商数据分析的底层基础。搞不清结构化、半结构化、非结构化的区别,你就会用错工具、走错方向。希望这一章帮你建立起清晰的数据分类认知,为后续的清洗、分析、可视化打下坚实基础。

有问题的评论区留言,我看到会回复。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐