特种设备舆情数据分析
- 作者:[ccmajor]
- 日期:2020/9
项目描述
特种设备舆情数据分析
数据集描述
- 数据集(yuqing.csv)为CSV文件。考虑进行基本统计分析、文本分类,聚类,情感分析等。
数据字典
- EquType:特种设备类型
- Words:处理后的特种设备舆情文本
项目任务
- 3.1 数据查看
- 3.2 数据预处理
- 3.3 文本特征提取
- 3.4 建模及预测
项目实现
# 引入必要的包
import csv
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import time
%matplotlib notebook
# 解决matplotlib显示中文问题
# 仅适用于Windows
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# MacOS请参考 http://wenda.chinahadoop.cn/question/5304 修改字体配置
# 指定数据集路径
dataset_path = '.\data'
datafile = os.path.join(dataset_path, 'yuqing_anl.csv')
# 停用词表路径
stop_words_path = '.\stop_words'
# 加载数据
raw_data = pd.read_csv(datafile)
print(type(raw_data))
<class 'pandas.core.frame.DataFrame'>
# 数据预览
raw_data.tail(4) # 能够看出自动加上index了
Site | HappenTime | PublishTime | Title | Content | |
---|---|---|---|---|---|
8572 | 网易新闻 | 2018年1月 | 2018/1/4 0:00 | 吓坏了!广深高速出口一油罐车侧翻,装载的29吨煤焦油泄漏! | 昨日上午,广深高速广州往深圳方向麻涌出口处,一辆装载着29吨煤焦油的油罐车因转弯速度太快,导... |
8573 | 腾讯新闻 | 2018年1月 | 2018/1/4 0:00 | 郑州热力管道爆裂 抢险员掉进90度热水 | 1月3日,郑州市文博东路发生一起地下暖气管道爆裂事件,水蒸气瞬间笼罩马路,正当一组抢险员上前... |
8574 | NaN | NaN | NaN | NaN | NaN |
8575 | 新浪新闻 | 2018年1月 | 2018/1/2 0:00 | 河南平顶山疑发生爆炸事故:门窗玻璃被震碎有巨响 | 1月2日,河南平顶山汝州,当地一工厂发生疑似天然气爆炸事故。现场视频显示,事故现场一片狼藉,... |
数据查看
print('数据集有{}条记录。'.format(len(raw_data)))
数据集有8576条记录。
## 特种设备类型
#print('数据集包含{}类特种设备。'.format(len(raw_data['EquType'].unique())))
#print(raw_data['EquType'].unique())
## 数据来源
print('数据集包含{}个数据来源。'.format(len(raw_data['Site'].unique())))
print(raw_data['Site'].unique())
数据集包含968个数据来源。
['腾讯新闻App' '新浪微博' '微信' '南充零距离论坛' '今日头条' '新浪新闻App' '看楚天App' '今日头条App' '百家号'
'哔哩哔哩' 'UC头条App' '看点快报App' '新浪头条微博' '今日桐庐报' '莱芜在线' '搜狐' '西瓜视频' '新京报网'
'北海365网' '半岛网' '小时新闻' '网易' '东方头条App' '山西新闻网' '杭州19楼' '品略网' '凤凰新闻App'
'人民日报-人民号' '百姓观察网' '网易新闻App' 'Zaker新闻App' '万家热线' '扬子晚报网' '江西网络广播电视台'
'义乌十八腔' '掌上延边App' '中安在线' '界面' '中国宁波网' '义乌稠州论坛' '新浪网-湖南' '民生热线网' '南海网App'
'潍坊新闻网' '新闻中心-龙虎网' '山东24小时App' '重庆网络问政平台' '腾讯视频' '欧码电梯商城' '亳州晚报' '央视网'
'搜狐新闻(搜狐号)' '河南一百度' '新华社App' '一点资讯App' '新浪博客' '长城网' '郎溪论坛' '大河App'
'每日经济新闻' '南都App' '108社区App' '人民网地方领导留言板' '新华报业网' '百度贴吧' '四川新闻网' '台州19楼'
'海盐网App' '齐鲁网' 'PChome新闻' '凤凰网-安徽' '厦门网' nan '今日建德数字报' 'repeat' '温岭108社区'
'沧州晚报' '甬上App' '抖音' '萧山网络问政' '泉州网' '大小新闻App' '凤凰网(大风号)' '乐清上班族网' '搜狐视频'
'新浪网' '腾讯网' '千龙网' '佛山新闻网' '掌上春城App' '网易-广东' '青岛网络电视台' '临泉在线' '宿州在线'
'大舟山App' '掌中九江App' '千岛湖新闻网' '湖南在线' '央视新闻App' '六安人' '舟山108社区' '青海新闻网'
'小时新闻App' '中吴网' '凤凰山下' '安徽网' '京报网' '汉丰网' '东方网' '虹桥网城社区' '莆田小鱼网' '大济宁App'
'优酷' '新蓝网' '通辽日报' '中国新闻网' '澎湃新闻网' '合肥论坛' '一点资讯' '新湖南App' '凤凰网' '洪泽论坛'
'凤凰网江西频道' '华龙网' '中国新闻网App' '杭加新闻App' '人民日报App' '南方PlusApp' '泰有趣' '戴南论坛'
'茂名晚报' '快报App' '114网址导航' '晋江电视台' '网易新闻' '九江论坛' '看看新闻App' '国际能源网'
'河北新闻网阳光理政' '巴中新闻网' '九江社区' '周到上海App' '现代快报' '台視官網' '视界网' '手机新浪网' '盐城鹤鸣亭'
'新浪看点App' '安阳论坛' '唐山信息港' '化龙巷' '网易河北' '大众网' '北青网' '腾讯网-辽宁-大辽网' '安庆论坛'
'麻辣社区' '新京报' '海南日报App' '新民晚报App' '红豆社区' '大河新乡网' '城市快报' '飞客茶馆' '江西手机报App'
'景德镇108社区' '荆门社区' '闽东日报' '东方论坛App' '大江网国际国内' '昆山论坛' '闪电新闻App' '山阳论坛'
'上虞108社区' '嵊州108社区' '山水句容社区' '黄桥在线' '南昌新闻网' '宜宾零距离' '华商网' '西部网-新闻频道'
'惠州·西子论坛' '青岛新闻网' '滨城区政府门户网站' '泰安大众网' '中国山东网-菏泽' '芜湖民生网' '扬州新闻网' '问政湖南'
'中国江苏网-连云港' '大小新闻' '泉州网络电视台' '济宁圈App' '新闻频道-北方网' '六安城市网' '孝感网' '新华网'
'广西新闻网' '地方网' '嘉兴人论坛' '国际旅游岛商报' '深圳新闻网焦点新闻' '大众网-烟台' '内蒙古新闻网' '金华新闻App'
'新浪网-陕西' '涪陵在线' '新沂门户网' '浙江新闻App' '江海晚报' '南通热线' '看看新闻网' '中工网' '绍兴108社区'
'掌上温都App' '澄海论坛' '中国山东网' '荔枝网' '橙群科技App' '58本地版App' '海南在线' '陕西头条App'
'桂林生活网' '阳光社区' '新浪网-海南' '杭州新闻App' '西子论坛' '宿迁零距离' '萧内网' '联合新闻网' '投诉直通车'
'滁州社区' '搜狐网' '金华网新闻' '南昌科技信息' '大焦作论坛' '暨阳社区' '当代先锋网' '池州论坛' '大江论坛' '微博'
'温州市网络问政平台' '红网' '国家应急广播App' '烟台社区' '人民网--强国论坛' '宁晚融媒App' '内江新闻网'
'胶东在线-网上民声' '鄂东晚报' '中国台州网' '齐鲁晚报' '荆门新闻网' '重庆晨网' '常州晚报' '爱奇艺' '@深圳App'
'百度视频' '齐鲁晚报网' '侯马市人民广播电台' '西部头条' '上游新闻App' '民航事App' '都市时报' '点看宁波App'
'西祠胡同社区' '闽南网' '鲁中网-新闻频道' '燕郊生活圈' 'match生活網' '明报网' '昆明信息港' '山西青年报'
'太原新闻网' '今晚报' '东森新闻云' '环球网' '民生e点通' 'epaper.xxcb.cn' '东莞阳光台App'
'济宁市网络问政平台' '涟水在线网-聚焦涟水' '嘉兴19楼' '滨州在线' '苏州新闻网' '连城网-聚焦连城' '新浪河南' '黄岩论坛'
'湖北省人民政府官网' '央视网视频' '四川观察App' '南京晨报' '荣耀渭南网-百姓生活' '泸州全搜索' 'TVBS官網'
'北晚新视觉' '东方网新闻' '武汉头条' '共利电梯网' '东方今报' '柳州广播电视网' '掌上广西App' '齐鲁一点App'
'东莞阳光热线问政平台' '网易广西' '电梯大叔云平台' '本地头条App' '21CN聚投诉' '中吴网-龙城茶座'
'电梯配件网上采购销售平台' '手机百度App' '简书' '烟台市人民政府-互动交流' '荔枝新闻App' '六安论坛'
'国家安全生产监督管理总局化学品登记中心' '奥一网' '揭阳星空网' '揭阳星空网-星空论坛' '鄂尔多斯新闻网' '荆州新闻网'
'大连民意网' '长江日报App' '泰州门户论坛' '360快讯' '中国质量新闻网' '郑州晚报App' '鲁中网' '浙江在线' '东北网'
'新锐大众App' '河工新闻网' '东南网泉州频道' '甬派App' '厦门日报' '上饶日报' '长江日报' '25度生活网'
'国家应急广播网' '中国江西网' '中华泰山网' '三峡日报' '广汉城市在线' '宁夏日报App' '盐城123网' '恩施新闻网'
'包头新闻网' '淮北人论坛' '山西信息港' 'Yahoo奇摩' '十堰' '济宁新闻网' '今日镇江' '都市快报' '新民网'
'高密新闻网' '楼盘网' '吉和网' '太湖明珠网' '最资讯' '凯迪社区' '西楚网'
'更生日报,KENG SHENG DAILY NEWS)' '澎湃新闻' '北京日报App' '柒零叁' '中国烟台-网上民声' '洞头新闻网'
'江南晚报' '浙江24小时' '新浪广西' '凤凰网安徽频道' '金华晚报' '海宁108社区' '连网' '潮州日报' '青岛早报'
'茂名新闻网' '梨视频官网' '淄博市人民政府' 'ZAKER新闻' '昭通新闻网' '新浪贵州' '东楚网?黄石新闻网' '新浪湖北'
'和讯网' '掌上长沙App' '名城新闻网' '鲁网-菏泽' 'www.pinlue.com' '知乎' '百色新闻中心' '椰网'
'德州论坛' '掌上洛阳App' '阳光连线' '新浪财经' '桂林论坛' '绵阳西蜀网' '上游新闻' '腾讯大辽网' '大众新闻网'
'滨州传媒网' '二泉网无锡论坛' '大众论坛' '张家口圈App' '黄山市民网' '腾讯新闻' '新浪湖南' '厦门小鱼网' '大江网'
'网易海南' '生活新报' '茂名在线论坛' '卡车之家' '齐鲁网-山东广播电视台' '中国广播网' '中国六盘水网' '青海网络广播电视台'
'胶东在线' '股吧' '烟台市人民政府' '潍坊传媒网' '鲁A网' '重庆工群.阳光重庆' '亳州视听网' '中时电子报' '春城晚报App'
'中国青年网' '烟台晚报' '最泰安App' '保定在线' '合肥网' '正北方网' '焦作网' '武汉羽沐信息网' '齐鲁壹点'
'山东齐鲁晚报新闻客户端官网' '广西人民广播电台官网' '江门广播电视台' '铜陵论坛' '大河报' '白色新闻网' '江海明珠网:南通新闻'
'360新闻搜索' '网易广东' '教育网' '泰无聊' '海安网 海安论坛' '中国旅游新闻' '腾讯大楚网' '温州新闻App'
'巴彦淖尔新闻网' '半岛晨报' '苏州阳光便民12345' '国搜新闻App' '卡卡洛普' '望京社区网' '雅虎香港' '泸州网'
'东方圣城网' '宿迁零距离 宿迁' '苹果日报' '南国今报' '四川在线' '龙城茶座' '南海网' '中国高清网' '广州参考'
'榆林论坛' '腾讯·大燕网天津站' '湄洲日报' '山东新闻网' 'E都市' '杭州网App' '新浪陕西' '十堰晚报' '余姚新闻网'
'西部网' '新浪新闻' '网易安徽' 'Discuz!' '铜陵新闻网' '中国烟台' '蔚县人民政府' '鉅亨網' '福建省广播影视集团'
'余姚日报' '无限成都' '人民网-北京' '吴江日报多媒体数字报刊平台' '今日新闻(NOW)' '今日绍兴App' 'on.cc東網'
'梧州零距离' '南充新闻网' '阳光宽频网' '特种设备行业在线' '掌上奉化App' '永定区人民政府' '东阳日报' '中国交通在线'
'封面新闻' '01 车城资阳' '北极光资讯网' '东方财富网' '京华社区' '百度新闻App' '民声无锡' '龙口新闻网' '鲁网-泰安'
'央广新闻App' '来看资讯' '荆楚网' '新浪天津' '东莞阳光网-新闻中心' '泸州在线' '辽沈晚报' '兴化茶楼' '03 柠都安岳'
'Zaker新闻_大连App' '行风热线-咨询' '大纪元' '世纪传媒' '张家口资讯网' '闽南日报' '博兴在线' '海湃App'
'长江网' '中国常州网' '台州晚报' '鹤壁新闻网' '人民网' '红星新闻App' '腾讯-大苏网' '清远网络广播电视台' '南国都市报'
'禾点点App' '华商头条App' 'www.0245.cc' '濠滨论坛' '伊犁新闻网' '新浪海南' '宁夏新闻网' '商丘报业'
'日照视听第一网' '香港经济日报' '腾讯大豫网' '高埔村soft网' '四平新风采论坛' '北国网' '捷克论坛 JKF' '常德论坛'
'泰州广播电视台' '内蒙古晨网' '海南特区报' '中国警察网' '优酷视频' '鄞响App' '西安新闻网' '贵州都市报数字报'
'河北共产党员网' '吉安头条App' '汉网' '今日惠州网' '鄂西北在线' '中国网' '翼网论坛' '宿松论坛' '百战网' '今日宝应'
'游鸽论坛' '三秦网' '黔东南广电' '阳新新阳网' '海峡网' '天门网' '二三里' '上饶晚报' '自由时报' '珠海新闻网'
'宁海论坛' '潍坊论坛' '滁州房地产资讯、楼市新闻' '来宾网' '消防论坛' '新浪' '天津网' '兰网' '江西消防网' '株洲日报'
'信息时报' '魅力庐江论坛' '莆田新城网' '潍坊晚报' '土豆网' '阜阳公众网' '湖北网台' '台州城市网' '长沙社区通'
'中国连云港政府门户网站' '网易辽宁' '上饶头条App' '仁怀共青团网' '天涯社区' '大洋网' '今晚网'
'www.huaihaisc.com' '晶报' '张家口信息资讯网' '天涯' '延边新闻网' '法制网' '大华网' '东平论坛'
'湘西论坛' '上海市黄浦区人民政府' '大众网-济宁' '大连晚报' '新余头条App' '中国消防在线' '网易江苏' '蚌埠论坛'
'响水网' '新浪四川' '东森电视' '天涯社区App' '长兴108社区' '河南经济网' '西太湖论坛' 'udn.com'
'无线苏州App' '腾讯.大闽网' '凉山云报App' '八通论坛' '嘉兴市安全生产监督管理局' '镇江新区大港信息港'
'河北省高速公路石安管理处' '深圳新闻网' '壹深圳App' '快哉社区' '连云港日报' '佛山日报' '乐清城市网' '滨海时报'
'内蒙古晨报' '广州日报' '腾讯大浙网' '腾讯大渝网' '中国梧桐树新闻' '东方网-东方新闻' '天长论坛' '贵阳晚报' '枣阳资讯网'
'衢州108社区' '北方教育网' '东莞网' '嘉兴第9区' 'bbs.dz169.net' '嘉兴人网' '中国化工报' '江西法制报'
'东北新闻网' '蚌埠新闻网' '晋城新闻网' '落伍者' '张家口在线' 'Not' '右江论坛' '丽水网新闻中心' '百色网'
'厦门广电网' '浙江省安全生产监督管理局' '天之缘论坛' '东南网' '即墨论坛' '大武夷新闻网' '都市晨报' '淮安人网' '岳阳日报'
'搜狐公众平台' '北京时间' '呼和浩特晚报' '重庆时报网' '泉州晚报' '网易湖北' '金投网' '株洲网' '鲁网' '楚雄网'
'网易内蒙古' '汕头日报' '中国西藏网' '石狮日报数字报' '西海都市报' '福建日报App' '爱济南App' '瑞安论坛' '水母网'
'华声在线' '大众网-潍坊' '莆田晚报' '鞍山日报' '嵊州信息港' '365地产家居网' '中国绵阳新闻网' '掌上沈阳App'
'劲彪新闻App' '尚一新闻频道' '胜利信息广场' '马鞍山OK论坛' '南京网络电视台' '平湖论坛' '河南新浪' '中国网-东海资讯'
'琅琊新闻网' '掌上齐鲁App' '德清108社区' '奥一网爆料' '河北广播网' '济南时报' '娄底新闻网娄底专栏频道' '富阳新闻网'
'新文化网' '厦门日报App' '东湖社区' '上海市总工会' '衡水新闻网' '人民网安徽频道' '常熟零距离论坛'
'浙江沪杭甬高速公路股份有限公司' '柳州晚报' '千寻生活' '太原日报App' '微靖江论坛' '凉山新闻网' '舟山论坛'
'重庆晚报App' '三峡宜昌网' '济南新闻App' '东南网厦门频道' '今日临海报' '西宁晚报' '柳州日报' '新昌108社区'
'荣耀渭南网' '温州日报瓯网' '联合早报' '平阳新闻网' '星辰在线' '龙城论坛' '青青岛社区' '中山网' '淮河晨报' '姜堰人'
'枣庄日报' '杭网议事厅' '新浪-福建' '南宁日报App' '延边信息港' '株洲在线论坛' '枞阳在线' '绍兴网' '朝阳日报'
'川川旅游网' '新城财经台' '包头交通广播网' '腾讯新闻网' 'dahebao.cn' '阜阳市人民政府网' '西江都市报' '江西头条'
'西宁搅沫沫社区' '邳州论坛' '中国江苏网' '神木论坛' '汕尾门户' '金寨县人民政府网' '优科特建材网' '洱海新闻网' '北京晨报'
'临海新闻网' '汴梁晚报' '抚州头条App' '智通财富网' '青岛新闻App' '人民网广西频道' '兴义之窗' '大同晚报'
'重庆工,阳光重庆' '西安区县新闻网' '安庆新闻网' '大盐城论坛' '长兴在线' '重庆市政府公开信箱' '商虎' '舜网' '戚区网'
'秦皇岛信息资讯网' '今日爆点' '新浪吉林' '黄河新闻网' '福州便民网' '上饶论坛' '中国芜湖新闻网' '宁波市公安局' '听热点'
'江苏频道_凤凰网' '株洲传媒网' '翱翔App' '丽江热线' '南国早报网' '河源九九网' '龙岩KK网' '广西电视网'
'中国青年创业网' '自贡网-新闻中心' '宿迁日报' '扬州晚报' '网易重庆' '齐河在线' '咸宁新闻网' '安徽电视网' '宜兴日报'
'云南网' '千华网' '南国早报' '海峡导报' '千龙网·中国首都网' '闽西日报' '楚秀网' '新疆青年网' '泰安民生网' '诸暨在线'
'新晚报' 'news.9939.com' '随州网' '周到上海' '中吴网新闻' '西安新闻' 'PCB信息网' '江西南昌房地产资讯'
'2013/4/8 0:00' '新浪重庆' '襄阳汉江传媒网' '黄山晨刊' '网易上海' '金羊网' '问政江西App' '甘肃爱城市App'
'新浪辽宁' '淮安网' '漳州新闻网' '南昌头条App' '温州市质量技术监督局' '腾讯·大粤网' '湖北省公安厅' '青岛半岛网'
'汕尾市民网' '东方快讯' '大众网-滨州' '川北在线' 'VIVA畅读App' '河北新闻网' '平原晚报' '万户论坛' '内蒙古日报'
'中国江苏网-镇江' '中国发展网' '淄博日报' '南宁新闻网' '现代金报' '浙江24小时App' '杭州网' '维度女性网' '葫芦网'
'深圳热线' '天一论坛' '淮安论坛' '百姓生活' '梦溪论坛' '兰州晨报' '优秀范文网' '慧聪网' '亳州市人民政府'
'《消防界》杂志官网' '老友网' '中国酒城' '湖北新闻网' '无限舟山' '东方评论-东方网' '锦凤网' '阳江新闻网' '万家论坛'
'快报扬州' '驭龙电器临汾运营中心' '燃气爆炸' '新馆陶' 'App' '扬州邗上老人' '深海欣' '信网' '长春帮帮团' '壶关消防'
'东平生活我那个' '长春晚报' '石家庄日报' '庙山新鲜事' '张晨默' '石狮日报' '辅警安小正' '爱奇艺视频'
'芜湖市高校园区派出所' '山西日报' '吕梁民歌' '电梯之家' '人民日报' '大公报-大公网' '秦楚网' '钢铁王国' '锅炉人'
'新北新视点' '腾讯-大豫网' '无锡巡府' '掌上莱芜' '网易网' '强国论坛' '平安和县' '凤凰网视频' '永年论坛' '快报'
'盐城大小事儿' '胶东在线--网上民生' '江西日报' '新浪新闻中心' '中国消防' '东方头条' '古涿鹿郡' '临汾晚报' '济南胡同'
'天天快报' '浦东安全生产' '论坛' '南昌事儿' '香港01网' '中山猛料' '澎湃网' '中国消防网' '腾讯-大粤网' '浙江新闻'
'国际在线-四川' '未来网' '凤凰网-宁波' '马鞍市人民政府' '万家资讯' '安青网' '石家庄传媒网' '筑龙建筑论坛社区' '南阳网'
'中时财经网' '腾讯-大浙网' '云财经网' '梅州网' '快资讯' '凤凰网湖北' '新浪视频' '腾讯-大燕网' '南海网新闻']
# 查看数值
raw_data.values #整体
raw_data['Site'].values #某一列
raw_data.index #索引
# 排序
# 按index
raw_data.sort_index(axis=1, ascending=False)
# 按值
raw_data.sort_values(by='EquType',ascending=False)
选择
raw_data['Site']
raw_data[:3] # 前三行
raw_data.index = raw_data['HappenTime']
raw_data['2018/9/8 21:05':'2018/1/19 0:00'] # 指定列切片,可以先指定为index,再切片
使用isin()方法过滤
raw_data2 = raw_data.copy()
raw_data2[raw_data2['EquType'].isin(['电梯'])] # 提取所有电梯的舆情数据
数据预处理
# 去除空值(如果有的话)
cln_data = raw_data.dropna().copy()
# 数据预览
cln_data.head()
print('数据集有{}条记录。'.format(len(cln_data)))
数据集有7812条记录。
# 数据预览
cln_data.tail(4) # 能够看出自动加上index了
Site | HappenTime | PublishTime | Title | Content | |
---|---|---|---|---|---|
8571 | 腾讯-大燕网 | 2018年1月 | 2018/1/5 0:00 | 邯郸一汽油罐车停在临街门市前突然起火 | 1月4日15时20分左右,309国道邯郸市肥乡区辛安镇路段一临街门市前,一辆装载汽油的罐车不... |
8572 | 网易新闻 | 2018年1月 | 2018/1/4 0:00 | 吓坏了!广深高速出口一油罐车侧翻,装载的29吨煤焦油泄漏! | 昨日上午,广深高速广州往深圳方向麻涌出口处,一辆装载着29吨煤焦油的油罐车因转弯速度太快,导... |
8573 | 腾讯新闻 | 2018年1月 | 2018/1/4 0:00 | 郑州热力管道爆裂 抢险员掉进90度热水 | 1月3日,郑州市文博东路发生一起地下暖气管道爆裂事件,水蒸气瞬间笼罩马路,正当一组抢险员上前... |
8575 | 新浪新闻 | 2018年1月 | 2018/1/2 0:00 | 河南平顶山疑发生爆炸事故:门窗玻璃被震碎有巨响 | 1月2日,河南平顶山汝州,当地一工厂发生疑似天然气爆炸事故。现场视频显示,事故现场一片狼藉,... |
统计分析
# 绘制整体趋势直方图
cln_data_sort = cln_data.sort_values(by='HappenTime')
plt.hist(x = cln_data_sort.HappenTime, # 指定绘图数据
bins = 30, # 指定直方图中条块的个数
color = 'steelblue', # 指定直方图的填充色
edgecolor = 'black' # 指定直方图的边框色
)
# 添加x轴和y轴标签
plt.xlabel('时间')
plt.ylabel('频数')
# 添加标题
plt.title('舆情时间发生时间分布')
# 显示图形
plt.show()
绘制电梯趋势直方图
#ele_data = cln_data[cln_data['EquType'].isin(['电梯'])] # 提取所有清洗后电梯的舆情数据
#ele_data = raw_data[raw_data['EquType'].isin(['电梯'])] # 提取所有原始电梯的舆情数据
#print('数据集有{}条记录。'.format(len(ele_data)))
#ele_data.head() #查看
#ele_data.HappenTime #查看
##保存查看
#saved_ele_data = ele_data.copy()
#saved_ele_data.to_csv(os.path.join(dataset_path, 'ele_data.csv'), encoding='utf-8', index=False)
## 绘制整体趋势直方图
#plt.hist(x = ele_data.HappenTime, # 指定绘图数据
# bins = 30, # 指定直方图中条块的个数
# color = 'steelblue', # 指定直方图的填充色
# edgecolor = 'black' # 指定直方图的边框色
# )
#
## 添加x轴和y轴标签
#plt.xlabel('时间')
#plt.ylabel('频数')
## 添加标题
#plt.title('舆情时间发生时间分布')
## 显示图形
#plt.show()
整体舆情分析
内容分词分析
# 加载停用词表
stopwords1 = [line.rstrip() for line in open(os.path.join(stop_words_path, '中文停用词库.txt'), 'r', encoding='utf-8')]
stopwords2 = [line.rstrip() for line in open(os.path.join(stop_words_path, '哈工大停用词表.txt'), 'r', encoding='utf-8')]
stopwords3 = [line.rstrip() for line in open(os.path.join(stop_words_path, '四川大学机器智能实验室停用词库.txt'), 'r', encoding='utf-8')]
stopwords4 = [line.rstrip() for line in open(os.path.join(stop_words_path, '自建停用词库.txt'), 'r', encoding='utf-8')]
stopwords = stopwords1 + stopwords2 + stopwords3 + stopwords4
#stopwords = []
# stopwords #查看停用词
# 处理文本数据
import re
import jieba.posseg as pseg # 词性标注
import jieba
def proc_text(raw_line):
"""
处理文本数据
返回分词结果
"""
# 1. 使用正则表达式去除非中文字符
filter_pattern = re.compile('[^\u4E00-\u9FD5]+')
chinese_only = filter_pattern.sub('', raw_line)
## 2. 结巴分词+词性标注
#word_list = pseg.cut(chinese_only)
# jieba分词
#seg_list = jieba.cut("欢迎来到小象学院", cut_all=True) # 全模式
#print("全模式: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut(chinese_only, cut_all=False) # 精确模式
#print("精确模式: " + "/ ".join(seg_list)) # 精确模式
# 3. 去除停用词,保留有意义的词性
# 动词,形容词,副词
# used_flags = ['v', 'a', 'ad']
meaninful_words = []
#for word, flag in word_list:
for word in seg_list:
#if (word not in stopwords) and (flag in used_flags):
if (word not in stopwords):
meaninful_words.append(word)
return ' '.join(meaninful_words)
return ' '.join(seg_list) #返回内容,而非地址,如果直接 return seg_list 返回的是地址
# 测试一条记录
test_text = cln_data.loc[0, 'TContent']
print('原文本:', test_text)
print('\n\n处理后:', proc_text(test_text))
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\chensf\AppData\Local\Temp\jieba.cache
原文本: 6月30日14时59分,广西柳州市融水县小广场附近一烧烤店厨房煤气罐起火。救援人员立即赶赴现场扑救,15时12分,火灾被扑灭。消防员出警救援及时,未造成人员伤亡。
Loading model cost 1.280 seconds.
Prefix dict has been built successfully.
处理后: 广西 柳州市 融水县 广场 附近 烧烤店 厨房 煤气罐 起火 救援 人员 立即 赶赴现场 扑救 火灾 扑灭 消防员 出警 救援 及时 未 造成 人员伤亡
# 处理数据集中的所有文本
cln_data['Words'] = cln_data['TContent'].apply(proc_text)
#cln_data.head()
# 将处理后的数据集单独保存
saved_data = cln_data[['Words']].copy()
saved_data.dropna(subset=['Words'], inplace=True)
saved_data.to_csv(os.path.join(dataset_path, 'yuqing_words.csv'), encoding='utf-8', index=False)
saved_data.to_csv(os.path.join(dataset_path, 'yuqing_words.txt'), encoding='utf-8', index=False) # 保存为txt
#saved_data_EquType = cln_data[['EquType']].copy()
#saved_data_EquType.to_csv(os.path.join(dataset_path, 'saved_data_EquType.txt'), encoding='utf-8', index=False)
# 将处理后的数据集整体保存
saved_data = cln_data.copy()
#saved_data.dropna(subset=['Words'], inplace=True)
saved_data.to_csv(os.path.join(dataset_path, 'yuqing3.csv'), encoding='utf-8', index=False)
词云
# 特种设备类型词云
import wordcloud
f_EquType = open('.\data\saved_data_EquType.txt',encoding='utf-8')
txt_EquType = f_EquType.read()
# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc',
collocations = False)
# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt_EquType)
# 将词云图片导出到当前文件夹
w.to_file('txt_EquType.png')
# 整体 词云
import wordcloud
import jieba
# 有重复
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('.\data\yuqing2.txt',encoding='utf-8')
txt = f.read()
# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc',
collocations = False)
# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt)
# 将词云图片导出到当前文件夹
w.to_file('all_words.png')
###############################
# 构建并配置词云对象w
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc',
collocations = False)
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)
# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string)
# 将词云图片导出到当前文件夹
w.to_file('all_words2.png')
其他分析
# 提取特种设备类别、来源、时间、内容 数据进行分析
sel_data = cln_data[['EquType','Site','HappenTime','Words']]
print(sel_data.head())
type(sel_data)
sel_data_sort.drop_duplicates('EquType')
# 指定特种设备类别作为索引
sel_data.index = sel_data['EquType']
sel_data.index
sel_data_sort = sel_data.sort_index(ascending=False)
sel_data_sort_drop = sel_data_sort.drop_duplicates('EquType')
sel_data_sort_EquType = sel_data_sort_drop['EquType']
sel_data_sort_EquType
grouped = sel_data_sort.groupby(sel_data_sort['EquType'])
grouped.head(10)
count = 0
keyword = '电梯'
for i in range(0,7747):
if rtable.cell(i,18).value = keyword or rtable.ce1l(I,21).value ==\
keyword or rtable.cell(i,24).value = keyword or rtable.cell(i,27),value\
= keyword:for j in range(e,32):wtable.write(i,j,rtable.row._values(1)[j])
count += 1
print count#单出两合条件的行器
wbook.save(r'medicalData.xIs').
for item in cln_data[['EquType']]:
if item != '电梯':
cln_data = cln_data.drop(item).copy()
# 查看处理后的数据集
# 指定数据集路径
datafile2 = os.path.join(dataset_path, 'yuqing2.csv')
# 加载数据
raw_data2 = pd.read_csv(datafile2)
# 数据预览
raw_data2.head(2)
#作图
import matplotlib.pyplot as plt
import numpy as np
#统计词频并存入csv文件
import jieba
import re
from collections import Counter
cut_words=""
for line in open('./data/yuqing2.txt',encoding='utf-8'):
line.strip('\n')
line = re.sub("[A-Za-z0-9\:\·\—\,\。\“ \”]", "", line)
seg_list=jieba.cut(line,cut_all=False)
cut_words+=(" ".join(seg_list))#合并词,空格分离
all_words=cut_words.split()#再分割
c=Counter()
for x in all_words:
if len(x)>1 and x != '\r\n':
c[x] += 1#Counter进行词频统计
df = pd.DataFrame.from_dict(c, orient='index').reset_index()
#将Counter转换为DataFrame
df.to_csv('T72f.csv',encoding='utf_8_sig')#encoding保证保存后乱码
df.sort_values(by='index')
index | 0 | |
---|---|---|
15994 | 一万 | 1 |
22040 | 一万元 | 1 |
22932 | 一万块 | 1 |
11541 | 一丈 | 1 |
436 | 一下 | 53 |
... | ... | ... |
11990 | 龙马潭区 | 4 |
10311 | 龙骧 | 1 |
15570 | 龚嘴 | 1 |
16487 | 龚憨 | 1 |
19812 | 龚某 | 1 |
24992 rows × 2 columns