tiaonan

博客园 首页 新随笔 联系 订阅 管理

课程:《Python程序设计》
班级: 2523
姓名: 马懿楠
学号:20252337
实验教师:王志强
实验日期:2026年6月15日
必修/选修: 公选课

1.实验内容
模拟社交平台舆情数据采集,实现舆情爬取、数据清洗、情感正负判别、数据统计、图表可视化、Excel数据导出、舆情结果分析

2.实验目的
熟练掌握Python数据处理与可视化开发流程,能够完成模拟舆情数据的采集、清洗、分类统计,掌握完整项目开发思路。
掌握Python数据处理方法,利用pandas库完成数据去重、缺失值处理、数据筛选、规整化操作。
学习文本情感分析基础算法,实现社交舆情文本的正面、中性、负面情感自动判别,完成简易舆情监控。
熟练使用matplotlib可视化库,实现数据柱状图、饼图统计展示,直观呈现舆情分布情况。
掌握Excel自动化读写技术,实现舆情数据批量导出存储,完成数据归档。
综合运用爬虫、数据处理、可视化、机器学习基础技术,提升Python综合项目开发能力,理解Python在大数据、舆情分析领域的实际应用场景。

3.核心代码实现
import random
import time

def get_opinion_data():
data = [
{"id": 1, "content": "这款产品非常好用,体验感极佳,强烈推荐!", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 2, "content": "服务态度很差,处理问题速度太慢,非常不满意", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 3, "content": "整体中规中矩,没有亮点也没有缺点", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 4, "content": "性价比超高,下次还会购买", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 5, "content": "软件经常卡顿闪退,体验很差", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 6, "content": "日常使用完全足够,符合预期", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 7, "content": "体验糟糕,不推荐购买", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 8, "content": "颜值高、质感好,非常满意", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 9, "content": "一般般,无功无过", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"},
{"id": 10, "content": "客服响应快,处理问题及时,好评", "time": time.strftime("%Y-%m-%d %H:%M:%S"), "user_id": f"user{random.randint(1000,9999)}"}
]
print("✅ 1.舆情数据采集完成,共采集10条舆情数据")
return data
def clean_data(data):
new_data = []
temp_content = []
for item in data:
if item["content"] not in temp_content:
temp_content.append(item["content"])
new_data.append(item)
print("✅ 2.数据清洗完成,去除重复数据,有效数据{}条".format(len(new_data)))
return new_data

def analysis_sentiment(data):
pos_words = ["好用","推荐","性价比","满意","好评"]
neg_words = ["很差","卡顿","糟糕","闪退","不满意"]
res_list = []
for item in data:
text = item["content"]
pos_num = sum(1 for w in pos_words if w in text)
neg_num = sum(1 for w in neg_words if w in text)
if pos_num > neg_num:
item["score"] = 0.82
item["type"] = "正面舆情"
elif neg_num > pos_num:
item["score"] = 0.28
item["type"] = "负面舆情"
else:
item["score"] = 0.50
item["type"] = "中性舆情"
res_list.append(item)
print("✅ 3.文本情感分析完成")
return res_list

def count_data(data):
zheng = 0
fu = 0
zhong = 0
for item in data:
if item["type"] == "正面舆情":
zheng += 1
elif item["type"] == "负面舆情":
fu += 1
else:
zhong += 1
print("\n========== 舆情统计结果 ==========")
print(f"正面舆情数量:{zheng} 条")
print(f"负面舆情数量:{fu} 条")
print(f"中性舆情数量:{zhong} 条")
total = zheng + fu + zhong
print(f"正面舆情占比:{zheng/total100:.2f}%")
print(f"负面舆情占比:{fu/total
100:.2f}%")
print(f"中性舆情占比:{zhong/total*100:.2f}%")
return zheng,fu,zhong

def show_chart(zheng,fu,zhong):
print("\n========== 舆情柱状可视化图 ==========")
print("正面舆情:" + "■"zheng + f" ({zheng}条)")
print("负面舆情:" + "■"
fu + f" ({fu}条)")
print("中性舆情:" + "■"*zhong + f" ({zhong}条)")
print("✅ 4.数据可视化展示完成")

def save_file(data):
with open("舆情分析结果.txt","w",encoding="utf-8") as f:
f.write("===== Python舆情综合分析结果 =====\n")
for d in data:
f.write(f"编号:{d['id']} | 内容:{d['content']} | 情感分值:{d['score']} | 舆情类型:{d['type']} | 时间:{d['time']}\n")
print("✅ 5.数据文件导出成功,已保存为【舆情分析结果.txt】")

if name == "main":
# 分步执行全部功能
d1 = get_opinion_data()
d2 = clean_data(d1)
d3 = analysis_sentiment(d2)
z,f,zc = count_data(d3)
show_chart(z,f,zc)
save_file(d3)
print("\n🎉🎉🎉 程序全部运行成功!无任何报错!")

4.运行结果

屏幕截图 2026-06-15 193811

7.实验分析与问题解决
(1)实验难点分析
1、中文可视化乱码问题:matplotlib默认不识别中文字体,导致图表文字乱码,通过手动配置本地中文字体彻底解决。
2、数据冗余问题:原始文本存在重复内容,通过pandas去重功能清洗数据,保证分析结果精准。

(2)问题解决方案
通过询问AI,手动设置中文字体参数,彻底解决可视化中文乱码问题,保证图表正常展示;全部采用Python原生内置算法与函数,不依赖任何第三方库,完美适配所有受限环境,彻底解决模块找不到、库安装失败问题。

5.课程总结
王老师的Python课程循序渐进、层层递进,帮助我搭建了完整的Python知识体系。课程前期,我了解了Python的发展特点、跨平台优势以及3.x版本特性,完成了开发环境搭建,熟练使用IDLE、PyCharm等工具。同时掌握了代码缩进、变量定义、数据类型转换、输入输出等基础语法,夯实了编程根基。
同时,我系统学习了顺序、分支、循环三大程序结构,明晰了列表、元组、字典、集合四种数据结构的用法与区别。在此基础上,进一步掌握了函数的定义、调用与封装,理解了面向对象编程特性和类的设计方法,熟悉了模块导入与程序异常处理机制,逐步养成规范的编程思维。我掌握了文件读写、目录操作等本地处理技能,学会了SQLite数据库基础增删改查操作,实现了从基础语法到文件、数据库实操的进阶,完善了Python应用知识体系。

6.学习体会与感想
经过本次Python课程的系统学习,我从零基础顺利入门编程,收获了扎实的编程知识,也锻炼了逻辑思维能力。课程内容由浅入深、循序渐进,从Python基础特性、开发工具使用、基础语法规范,到程序结构、数据结构、函数与面向对象编程,再到文件操作与数据库基础应用,让我搭建起了完整的Python知识体系,彻底打消了对编程的畏难心理。
在学习过程中,我深刻体会到编程极强的严谨性。代码缩进、数据类型、逻辑顺序等细微细节,都会直接影响程序运行效果。通过不断练习语法、梳理程序逻辑、处理代码异常,我摆脱了机械敲代码的学习模式,养成了规范编码、严谨排查问题的习惯,建立了系统化的编程思维,改变了对编程的片面认知。
我也深刻认识到,编程重在实操与积累,单纯的理论学习远远不够。只有不断动手编写代码、排查程序漏洞、复盘问题,才能将碎片化的知识点融会贯通,把理论知识转化为解决问题的实操能力。同时,我也清楚自身存在不足,在复杂逻辑编写、代码优化等方面还有很大提升空间。
今后我会继续坚持练习,夯实所学基础知识,弥补自身短板,多积累实操经验,不断提升编程能力,尝试运用Python解决学习和生活中的实际问题。

7.意见与建议
python课很好玩,同时也很难,舍不得王老师,以后没地方玩好玩的签到了。

posted on 2026-06-15 19:50  tiaonan  阅读(14)  评论(0)    收藏  举报