注意:該項目只展示部分功能
1 開發(fā)環(huán)境
發(fā)語言:python
采用技術(shù):Spark、Hadoop、Django、Vue、Echarts等技術(shù)框架
數(shù)據(jù)庫:MySQL
開發(fā)環(huán)境:PyCharm
2 系統(tǒng)設(shè)計
隨著數(shù)字閱讀產(chǎn)業(yè)蓬勃發(fā)展,網(wǎng)絡(luò)文學(xué)平臺積累了海量作品數(shù)據(jù),但傳統(tǒng)分析手段難以挖掘其深層價值。起點小說網(wǎng)作為國內(nèi)頭部文學(xué)平臺,其內(nèi)容生態(tài)、作者行為與用戶偏好數(shù)據(jù)蘊含豐富的商業(yè)洞察,卻面臨著數(shù)據(jù)規(guī)模龐大、維度復(fù)雜、實時性要求高等挑戰(zhàn)。本項目針對單一數(shù)據(jù)集15個核心字段,構(gòu)建基于Python、Spark、Hadoop、Vue、Echarts與MySQL的端到端大數(shù)據(jù)分析系統(tǒng),旨在通過分布式計算架構(gòu)處理千萬級數(shù)據(jù),實現(xiàn)從原始文本清洗到多維可視化呈現(xiàn)的完整鏈路。系統(tǒng)通過量化分析小說類別分布、作者創(chuàng)作能力、作品熱度質(zhì)量等六大維度,不僅為平臺優(yōu)化內(nèi)容策略、作者扶持機制、商業(yè)化變現(xiàn)提供數(shù)據(jù)支撐,也為讀者提供選書決策參考,推動網(wǎng)絡(luò)文學(xué)產(chǎn)業(yè)從經(jīng)驗驅(qū)動向數(shù)據(jù)驅(qū)動轉(zhuǎn)型,釋放大數(shù)據(jù)在內(nèi)容創(chuàng)作與運營中的戰(zhàn)略價值。
基于Spark的起點小說網(wǎng)大數(shù)據(jù)可視化分析系統(tǒng)
功能模塊設(shè)計
緊扣數(shù)據(jù)特征與業(yè)務(wù)訴求,構(gòu)建六大分析體系:
1)小說類別分布分析
模塊涵蓋大類別統(tǒng)計、子類別熱度排行、類別質(zhì)量對比、完結(jié)率與VIP占比分析,利用二級分類體系識別爆款賽道;
2)作者創(chuàng)作能力分析
模塊聚焦作者產(chǎn)量、平均質(zhì)量、跨類別創(chuàng)作與簽約率,通過重復(fù)值挖掘高產(chǎn)優(yōu)質(zhì)作者,構(gòu)建作者價值評估模型;
3)小說熱度與質(zhì)量分析
模塊解析推薦數(shù)分布、字?jǐn)?shù)相關(guān)性、周推薦占比及VIP作品質(zhì)量對比,量化動態(tài)關(guān)系,區(qū)分經(jīng)典長尾與新興熱門;
4)內(nèi)容文本特征分析
模塊研究標(biāo)題長度、簡介長度分布,并執(zhí)行關(guān)鍵詞提取與情感分析,探索文本特征與推薦數(shù)的關(guān)聯(lián);
5)平臺商業(yè)化分析
模塊評估VIP占比趨勢、簽約作品質(zhì)量差異及類別商業(yè)化潛力,識別高商業(yè)價值作品與免費轉(zhuǎn)VIP潛力股;
6)用戶偏好與趨勢分析
模塊捕捉熱門類別變遷、用戶閱讀偏好長度及連載關(guān)注度,通過周推薦數(shù)波動洞察市場趨勢。各模塊輸出獨立的CSV結(jié)果文件,支撐可視化看板實現(xiàn)下鉆分析與交叉驗證,確保每個功能點均具備明確的業(yè)務(wù)含義與論文撰寫價值。
3 系統(tǒng)展示
3.1 分析頁面




3.2 大屏頁面


4 更多推薦
計算機專業(yè)畢業(yè)設(shè)計新風(fēng)向,2026年大數(shù)據(jù) + AI前沿60個畢設(shè)選題全解析,涵蓋Hadoop、Spark、機器學(xué)習(xí)、AI等類型
計算機專業(yè)畢業(yè)設(shè)計選題深度剖析,掌握這些技巧,讓你的選題輕松通過,文章附35個優(yōu)質(zhì)選題助你順利通過開題!
【避坑必看】26屆計算機畢業(yè)設(shè)計選題雷區(qū)大全,這些畢設(shè)題目千萬別選!選題雷區(qū)深度解析
緊跟風(fēng)口!2026計算機畢設(shè)新賽道:精選三大熱門領(lǐng)域下的創(chuàng)新選題, 拒絕平庸!畢設(shè)技術(shù)亮點+功能創(chuàng)新,雙管齊下
純分享!2026屆計算機畢業(yè)設(shè)計選題全攻略(選題+技術(shù)棧+創(chuàng)新點+避坑),這80個題目覆蓋所有方向,計算機畢設(shè)選題大全收藏
計算機專業(yè)畢業(yè)設(shè)計選題深度剖析,掌握這些技巧,讓你的選題輕松通過,文章附35個優(yōu)質(zhì)選題助你順利通過開題!
5 部分功能代碼
def preprocess_data_analysis():
"""
數(shù)據(jù)預(yù)處理核心函數(shù)
1. 從HDFS加載bookInfo.csv數(shù)據(jù)
2. 處理count字段的"萬"單位轉(zhuǎn)換為數(shù)值
3. 清洗空值和異常數(shù)據(jù)
4. 將處理結(jié)果保存至HDFS標(biāo)準(zhǔn)目錄
"""
# 從項目dataset目錄讀取原始數(shù)據(jù),使用絕對路徑
raw_df = spark.read.csv(
"file:///absolute/path/to/project/dataset/bookInfo.csv",
header=True,
inferSchema=True,
encoding="utf-8"
)
# UDF:將字?jǐn)?shù)字符串(如"62.97萬")轉(zhuǎn)換為整型(629700)
def convert_count(count_str):
if not count_str or count_str == "未知":
return 0
match = re.match(r"(\d+\.?\d*)萬", str(count_str))
if match:
return int(float(match.group(1)) * 10000)
return 0
convert_count_udf = udf(convert_count, IntegerType())
# 數(shù)據(jù)清洗與轉(zhuǎn)換
processed_df = raw_df \
.withColumn("word_count", convert_count_udf(col("count"))) \
.withColumn("total_recommend", when(col("total_recommend").isNull(), 0)
.otherwise(col("total_recommend").cast(IntegerType()))) \
.withColumn("total_week_recommend", when(col("total_week_recommend").isNull(), 0)
.otherwise(col("total_week_recommend").cast(IntegerType()))) \
.withColumn("is_vip", when(col("is_vip").isNull(), "未知").otherwise(col("is_vip"))) \
.withColumn("is_lianzai", when(col("is_lianzai").isNull(), "未知").otherwise(col("is_lianzai"))) \
.filter(col("word_count") > 0) \
.filter(col("total_recommend") >= 0)
# 寫入HDFS標(biāo)準(zhǔn)目錄(先刪除舊目錄避免沖突)
hdfs_path = "hdfs://namenode:9000/qidian/processed_data"
processed_df.write.mode("overwrite").parquet(hdfs_path)
print(f"預(yù)處理完成,數(shù)據(jù)已寫入: {hdfs_path}")
return processed_df
def novel_class_distribution_analysis(df):
"""
小說類別分布分析核心函數(shù)
基于class_type字段統(tǒng)計大類別分布,計算平均推薦數(shù)、完結(jié)率、VIP占比
輸出結(jié)果用于可視化展示類別結(jié)構(gòu)
"""
result_df = df.groupBy("class_type") \
.agg(
count("*").alias("novel_count"),
round(avg("total_recommend"), 2).alias("avg_recommend"),
round(avg("word_count"), 2).alias("avg_word_count"),
round(count(when(col("is_lianzai") == "完本", True)) / count("*") * 100, 2).alias("completion_rate"),
round(count(when(col("is_vip") == "VIP", True)) / count("*") * 100, 2).alias("vip_ratio")
) \
.orderBy(col("novel_count").desc())
# 轉(zhuǎn)換為Pandas并輸出CSV(文件名不含數(shù)字)
result_df.toPandas().to_csv("/output/class_distribution_analysis.csv", index=False, encoding="utf-8")
print("類別分布分析完成,結(jié)果已保存")
return result_df
def author_creation_ability_analysis(df):
"""
作者創(chuàng)作能力分析核心函數(shù)
統(tǒng)計作者產(chǎn)量、平均質(zhì)量、跨類別創(chuàng)作情況
識別高產(chǎn)優(yōu)質(zhì)作者,為平臺簽約策略提供依據(jù)
"""
# 計算每位作者的創(chuàng)作指標(biāo)
author_metrics_df = df.groupBy("author_name") \
.agg(
count("*").alias("works_count"),
round(avg("total_recommend"), 2).alias("avg_recommend"),
round(avg("word_count"), 2).alias("avg_word_count"),
countDistinct("class_type").alias("cross_class_count"),
round(count(when(col("is_qianyue") == "簽約", True)) / count("*") * 100, 2).alias("sign_rate")
) \
.filter(col("works_count") >= 2) \
.orderBy(col("works_count").desc())
author_metrics_df.toPandas().to_csv("/output/author_ability_analysis.csv", index=False, encoding="utf-8")
print("作者能力分析完成,結(jié)果已保存")
return author_metrics_df
源碼項目、定制開發(fā)、文檔報告、PPT、代碼答疑
希望和大家多多交流