Bootstrap

基于 Python 的 “近期手机数码产品国补热潮” 数据分析案例

目录

一、案例背景

二、代码实现

2.1 数据收集

2.2 数据探索性分析

2.3 数据清洗

2.4 数据分析

2.4.1 国补前后销售趋势分析

2.4.2 社交媒体讨论热度分析

2.4.3 产品关联分析

2.4.4 关键词分析

三、主要的代码难点解析

3.1 数据收集

3.2 数据清洗 - 文本处理

3.3 数据分析 - 关联规则挖掘

3.4 数据分析 - 关键词提取与关联分析

3.5 数据可视化

四、可能改进的代码

4.1 数据收集改进

4.2 数据清洗改进

4.3 数据分析改进


一、案例背景

近期,手机数码产品领域掀起一股国补热潮,成为大众关注的焦点。各地纷纷落地相关政策,如江西、重庆、福建等地,消费者购买手机、平板、智能手表等产品时,每人最高可省 1500 元 。这一举措旨在刺激消费,推动数码产品市场的发展,同时也反映了国家对数字经济和消费升级的支持。众多消费者受国补政策吸引,纷纷进入市场,各大电商平台和线下门店的数码产品销量明显提升。此外,这一热潮也促使数码产品制造商加快产品更新迭代,推出更多符合市场需求的产品。本案例将运用 Python 对相关数据进行收集、分析,以深入了解手机数码产品国补热潮的影响和趋势。

二、代码实现

import requests
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import json

2.1 数据收集

从电商平台 API、社交媒体平台、新闻媒体网站等渠道收集数据。这里以模拟从电商平台 API 和社交媒体 JSON 文件获取数据为例。

# 模拟从电商平台API获取手机数码产品销售数据
ecommerce_url = 'https://ecommerce_api.com/mobile_digital_sales'
ecommerce_headers = {
    'Authorization': 'Bearer your_ecommerce_api_token'
}
ecommerce_response = requests.get(ecommerce_url, headers=ecommerce_headers)
ecommerce_data = ecommerce_response.json()
ecommerce_df = pd.DataFrame(ecommerce_data['sales'])

# 从社交媒体获取手机数码产品相关话题讨论数据
with open('social_media_mobile_digital.json', 'r', encoding='utf-8') as f:
    social_data = json.load(f)
social_df = pd.DataFrame(social_data)

2.2 数据探索性分析

查看数据基本信息,了解数据类型、缺失值情况,统计销售数据中各产品的销量、销售额等,分析社交媒体讨论数据中热门话题和提及频率较高的产品。

# 查看电商销售数据基本信息
print(ecommerce_df.info())
# 查看社交媒体讨论数据前几行
print(social_df.head())

# 统计电商销售数据中各产品的销量和销售额
product_sales_summary = ecommerce_df.groupby('product_name').agg({'quantity':'sum','sales_amount':'sum'}).reset_index()
print(product_sales_summary)

# 统计社交媒体讨论数据中提及频率较高的关键词
from collections import Counter
social_text = ' '.join(social_df['text'])
words = social_text.split()
word_counter = Counter(words)
top_words = word_counter.most_common(10)
print(top_words)

2.3 数据清洗

处理电商销售数据中的缺失值,如对销量和销售额的缺失值进行填充;对社交媒体讨论数据的文本进行清洗,去除特殊字符、停用词等。

# 处理电商销售数据的缺失值,填充销量和销售额为0
ecommerce_df['quantity'] = ecommerce_df['quantity'].fillna(0)
ecommerce_df['sales_amount'] = ecommerce_df['sales_amount'].fillna(0)

# 处理社交媒体讨论数据的文本,去除特殊字符和停用词
import re
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
stop_words = set(stopwords.words('english'))

def clean_text(text):
    text = re.sub(r'[^a-zA-Z]', ' ', text)
    text = text.lower()
    words = text.split()
    filtered_words = [word for word in words if word not in stop_words]
    return ' '.join(filtered_words)

social_df['clean_text'] = social_df['text'].apply(clean_text)

2.4 数据分析

2.4.1 国补前后销售趋势分析

对比国补政策实施前后,手机数码产品的销量和销售额变化,以折线图展示趋势。

# 将销售日期列转换为日期时间类型
ecommerce_df['sale_date'] = pd.to_datetime(ecommerce_df['sale_date'])
ecommerce_df.set_index('sale_date', inplace=True)

# 按周统计国补前后的销量和销售额
weekly_sales = ecommerce_df.resample('W').agg({'quantity':'sum','sales_amount':'sum'})

# 假设国补政策实施日期为2025-03-01
subsidy_date = pd.to_datetime('2025-03-01')
pre_subsidy = weekly_sales[weekly_sales.index < subsi
;