🎓 作者:计算机毕设小月哥 | 软件开发专家】
🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。
🛠️ 专业服务 🛠️
需求定制化开发
源码提供与讲解
技术文档撰写(指导计算机毕设选题【新颖+创新】、任务书、开题报告、文献综述、外文翻译等)
项目答辩演示PPT制作
🌟 欢迎:点赞 👍 收藏 ⭐ 评论 📝
👇🏻 精选专栏推荐 👇🏻 欢迎订阅关注!
🍅 ↓↓主页获取源码联系↓↓🍅
基于大数据的小红书达人领域数据分析可视化系统-功能介绍
《基于大数据的小红书达人领域数据分析可视化系统》是一个专为计算机专业毕业设计打造的实战项目,它巧妙地融合了Python后端开发、大数据分布式计算以及基础的机器学习算法,旨在解决一个真实且热门的商业分析场景。整个系统从原始的小红书达人CSV数据集出发,首先通过Python脚本对数据进行精细化的预处理,包括清洗地域、性别等字段的不规范数据、填充缺失值、拆分复合标签,为后续分析奠定坚实的数据基础。随后,系统利用Hadoop的HDFS作为分布式文件系统,存储处理后的洁净数据。项目的核心计算引擎是Apache Spark,我们通过PySpark编写分析逻辑,对达人的总体特征(如性别地域分布、粉丝量级构成)、商业价值(如不同量级达人的平均报价、互动性价比)以及内容领域(如热门标签、各领域商业化程度)等多个维度进行深度聚合与统计分析。特别地,系统还引入了K-Means聚类算法,从多维度特征(如粉丝数、互动量、商业笔记数)出发,对达人进行智能分群,实现了超越简单粉丝量分级的“潜力股”挖掘,这正是项目中“AI毕设实战”的体现。最后,所有分析结果都通过Django后端框架提供API接口,前端则采用Vue、ElementUI和Echarts技术栈,将复杂的分析结果以直观、动态的图表(如地理热力图、柱状图、雷达图)进行可视化呈现,最终构成一个从数据处理、分布式计算、智能分析到前端可视化的完整闭环,充分展现了大数据技术在商业决策支持中的应用价值。# 基于大数据的小红书达人领域数据分析可视化系统-选题背景意义
基于大数据的小红书达人领域数据分析可视化系统-技术选型
大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 开发语言:Python+Java(两个版本都支持) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy 数据库:MySQL
基于大数据的小红书达人领域数据分析可视化系统-视频展示
基于大数据的小红书达人领域数据分析可视化系统-图片展示
基于大数据的小红书达人领域数据分析可视化系统-代码展示
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.ml.feature import VectorAssembler, StandardScaler
from pyspark.ml.clustering import KMeans
from pyspark.sql.types import FloatType
# 初始化SparkSession,这是所有Spark程序的入口
spark = SparkSession.builder.appName("XiaohongshuInfluencerAnalysis").master("local[*]").getOrCreate()
# 假设df是已经从HDFS读取并经过初步清洗的DataFrame
# df = spark.read.csv("hdfs://localhost:9000/cleaned_data/influencers.csv", header=True, inferSchema=True)
def analyze_location_distribution(df):
"""
核心功能一:达人地域分布分析
业务处理:处理混杂的地域字段,提取并标准化为省份,最后统计各省份的达人数量。
这是最基础的用户画像分析,但数据清洗的逻辑是关键。
"""
print("开始执行地域分布分析...")
# 使用when().otherwise()构建复杂的条件判断,来清洗和标准化地域字段
df_with_province = df.withColumn(
"province",
F.when(F.col("location").isNull() | (F.col("location") == "未知"), "未知")
.when(F.col("location").contains("北京"), "北京")
.when(F.col("location").contains("上海"), "上海")
.when(F.col("location").contains("广东") | F.col("location").contains("深圳") | F.col("location").contains("广州"), "广东")
.when(F.col("location").contains("浙江") | F.col("location").contains("杭州"), "浙江")
.when(F.col("location").contains("江苏") | F.col("location").contains("南京"), "江苏")
.when(F.col("location").contains("四川") | F.col("location").contains("成都"), "四川")
.when(F.col("location").contains("湖北") | F.col("location").contains("武汉"), "湖北")
.when(F.col("location").contains("海外") | F.col("location").contains("美国") | F.col("location").contains("英国"), "海外")
.otherwise("其他") # 将一些小的或者无法直接判断的归为其他
)
# 按标准化后的省份进行分组计数
location_counts = df_with_province.groupBy("province").count().withColumnRenamed("count", "influencer_count")
# 按达人数量降序排序
result_df = location_counts.orderBy(F.col("influencer_count").desc())
result_df.show()
# result_df.toPandas().to_csv("location_distribution_analysis.csv", index=False)
return result_df
def analyze_cost_effectiveness(df):
"""
核心功能二:高性价比“潜力股”达人排行
业务处理:综合“互动率”和“单位粉丝报价”构建性价比评分模型,挖掘高ROI的达人。
这个功能体现了业务理解能力,如何将多个指标转化为一个可量化的评分。
"""
print("开始执行性价比分析...")
# 确保报价字段为数值类型,并处理为0的情况,避免除零错误
df_casted = df.withColumn("graphic_post_price_float", df["graphic_post_price"].cast(FloatType()))
# 计算互动率(赞藏总数 / 粉丝数),处理粉丝数为0的情况
df_with_interaction = df_casted.withColumn(
"interaction_rate",
F.when(F.col("fans_count") > 0, F.round(F.col("likes_collections_total") / F.col("fans_count"), 4)).otherwise(0)
)
# 计算单位粉丝报价(图文报价 / 粉丝数),同样处理分母为0的情况
df_with_cpm = df_with_interaction.withColumn(
"price_per_fan",
F.when(F.col("fans_count") > 0, F.round(F.col("graphic_post_price_float") / F.col("fans_count"), 4)).otherwise(0)
)
# 构建性价比评分模型:互动率越高越好,单位粉丝报价越低越好。
# 这里我们用一个简单的公式:score = (互动率 * 权重1) - (单位粉丝报价 * 权重2)
# 为了避免负数和标准化,我们使用一个更稳健的方式,比如对两者进行归一化再计算,但为简化演示,此处用直接计算
# 增加一个小的平滑项避免 price_per_fan 为0时影响力过大
df_with_score = df_with_cpm.withColumn(
"cost_effectiveness_score",
F.round((F.col("interaction_rate") * 100) / (F.col("price_per_fan") + 0.01), 2)
)
# 筛选出报价大于0的达人进行排行,并选择关键字段进行展示
result_df = df_with_score.filter(F.col("graphic_post_price_float") > 0) \
.select("blogger_name", "fans_count", "interaction_rate", "price_per_fan", "cost_effectiveness_score") \
.orderBy(F.col("cost_effectiveness_score").desc())
result_df.show()
# result_df.toPandas().to_csv("cost_effectiveness_analysis.csv", index=False)
return result_df
def perform_kmeans_clustering(df):
"""
核心功能三:基于K-Means算法的达人分群
业务处理:选取核心数值特征,进行标准化处理后,使用K-Means算法将达人聚类,并为每个簇赋予业务含义。
这是项目的“AI”核心,体现了机器学习在用户分群中的应用。
"""
print("开始执行K-Means聚类分析...")
# 1. 特征工程:选择用于聚类的特征,并处理空值
feature_cols = ["fans_count", "likes_collections_total", "commercial_notes_count"]
df_for_ml = df.select(["blogger_name"] + feature_cols).na.fill(0)
# 2. 特征向量化:将多个特征列合并成一个向量列
assembler = VectorAssembler(inputCols=feature_cols, outputCol="features_raw")
df_assembled = assembler.transform(df_for_ml)
# 3. 特征标准化:由于各特征量纲差异大(粉丝数可能百万级,商业笔记数可能几十),必须进行标准化
scaler = StandardScaler(inputCol="features_raw", outputCol="features", withStd=True, withMean=False)
scaler_model = scaler.fit(df_assembled)
df_scaled = scaler_model.transform(df_assembled)
# 4. 训练K-Means模型:设定簇的数量(k),比如我们想把达人分为4类
kmeans = KMeans(featuresCol="features", k=4, seed=1)
model = kmeans.fit(df_scaled)
# 5. 进行预测并为簇添加描述性标签
predictions = model.transform(df_scaled)
# 根据每个簇的中心点特征,为簇ID赋予业务含义
# 这通常需要离线分析每个簇的均值来决定,此处为演示直接赋值
predictions_with_labels = predictions.withColumn(
"cluster_description",
F.when(F.col("prediction") == 0, "高影响力领袖 (粉丝与互动双高)")
.when(F.col("prediction") == 1, "商业化成熟达人 (商单多,经验丰富)")
.when(F.col("prediction") == 2, "高互动潜力新星 (粉丝少但互动高)")
.otherwise("垂直领域普通达人")
)
result_df = predictions_with_labels.select("blogger_name", "fans_count", "likes_collections_total", "commercial_notes_count", "cluster_description")
result_df.show()
# result_df.toPandas().to_csv("kmeans_clustering_analysis.csv", index=False)
return result_df
# 假设的调用入口
# if __name__ == "__main__":
# df_cleaned = spark.read.csv("...", header=True, inferSchema=True) # 读取清洗后的数据
# analyze_location_distribution(df_cleaned)
# analyze_cost_effectiveness(df_cleaned)
# perform_kmeans_clustering(df_cleaned)
# spark.stop()
基于大数据的小红书达人领域数据分析可视化系统-结语
🌟 欢迎:点赞 👍 收藏 ⭐ 评论 📝
👇🏻 精选专栏推荐 👇🏻 欢迎订阅关注!
🍅 ↓↓主页获取源码联系↓↓🍅