1.7电商数据分析:数据类型的底层基础与处理方法
电商数据分析中的数据类型处理要点 摘要:电商数据分析涉及结构化、半结构化和非结构化三种数据类型。结构化数据(如订单表)适合用SQL/Excel处理;半结构化数据(如JSON日志)需要文档型数据库或Python解析;非结构化数据(如用户评价)需借助NLP或图像识别技术。处理时需注意:1)结构化数据要确保类型一致性;2)半结构化数据避免直接使用Excel;3)非结构化大数据要分块处理。正确识别数据类型
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;
处理步骤:
-
识别数据格式:订单表是典型的二维表,属于结构化数据
-
选择工具:百万行以内用MySQL,用SQL聚合
-
清洗:过滤订单状态(只算已支付),确保金额列是数字类型
-
输出:店铺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)
处理步骤:
-
识别格式:JSON Lines,每行是一个独立的JSON对象
-
选择工具:Python + Pandas
-
解析:用
json.loads读取每行,或用pd.read_json直接读(如果文件格式标准) -
清洗:过滤出
action='click'的记录 -
聚合:按商品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)
处理步骤:
-
识别数据类型:用户评价是文本,属于非结构化数据
-
选择方法:情感分析(判断正负面)+ 分词(提取关键词)
-
执行:用SnowNLP和jieba库处理
-
输出:好评率和高频词,供运营优化商品
避坑提醒
-
不要试图把非结构化数据强行塞进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展开嵌套 |
| 非结构化数据不脱敏 | 用户隐私泄露 | 分析前脱敏,只保留必要信息 |
电商数据合规提示
-
用户评价文本:虽然是非结构化数据,但其中可能包含用户昵称、联系方式等个人信息。在导出或分析前,应用正则表达式过滤手机号、邮箱等。
-
客服录音:属于高度敏感数据,使用前必须获得用户授权,且只能在公司内部加密环境中分析,严禁下载到个人设备。
-
商品图片:如果用于违规检测,不要将图片转发给第三方服务,除非该服务已签署数据保密协议。
结语
数据类型分类是电商数据分析的底层基础。搞不清结构化、半结构化、非结构化的区别,你就会用错工具、走错方向。希望这一章帮你建立起清晰的数据分类认知,为后续的清洗、分析、可视化打下坚实基础。
有问题的评论区留言,我看到会回复。
更多推荐

所有评论(0)