既然已经获取到了数据,下面就可以开始进行数据分析了
(数据爬取的文章在这里https://blog.csdn.net/weixin_44508906/article/details/87904982)
首先要理清一下分析思路
- 无论做什么分析,最先做的肯定是数据处理,将数据处理成我们想要的格式并进行数据清洗
- 观察数据,进行统计性描述(这里只有一个score,且数据量过小,就略过了),确立分析指标
- 进行分析
- 得出结论,撰写报告
下面是这次分析的具体步骤
1、读取数据并简单处理数据
comments.csv 评论数据
cities.csv 评论用户居住城市
import pandas as pd
import matplotlib.pyplot as plt
import jieba
import re
import warnings
from pyecharts import Style, Geo, Map, Line, Pie
from chinese_province_city_area_mapper.transformer import CPCATransformer
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from snownlp import SnowNLP
# 读取数据
df1 = pd.read_csv('comments.csv', names=['name', 'score', 'comment', 'date', 'href'])
df2 = pd.read_csv('cities.csv', names=['city'])
df = pd.merge(df1, df2, left_index=True, right_index=True, how='outer') # 根据索引合并数据
df.drop('href', axis=1, inplace=True) # 去掉href列
df.drop_duplicates(subset=None, keep='first', inplace=True) # 去重(这里没有重复值)
df.dropna(axis=0) # 删除空值 (这里没有空值)
# 去掉comment的span标签
def comment_process(comment):
comment = comment.strip('<span class="short">').strip('</span>').replace('\n', '').replace('\r', '')
p = re.compile('[^\u4e00-\u9fa5]') # 中文编码范围\u4e00到\u9fa5
comment = re.sub(p,'',comment)
return comment
df['comment'] = df['comment'].apply(comment_process) # 使用apply比循环要快
# 评分转换数字
df['score1'] = df['score']
df['score'] = df['score'].map({
'力荐': 5,
'推荐': 4,
'还行': 3,
'较差': 2,
'很差': 1
})
df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d') # 将datetime字段由object转换成datetime类型,速度回快很多
处理后的结果