您的位置:首页 > 编程语言 > Python开发

【Python有趣打卡】微博APP榜单爬虫,尽知天下事(二)

2019-03-07 18:12 836 查看
【Python有趣打卡】微博APP榜单爬虫,尽知天下事(二)
今天继续接上学习微博热榜爬虫!不过已经完成了爬虫工作,今天主要是学习对之前爬取下来的数据进行数据分析!原创:罗罗攀(公众号:luoluopan1)学习Python有趣|微博APP爬虫,尽知天下事。

打开之前爬取的csv文件~开心

结果都是乱码,破坏我学习的心情,不过没关系

CSV打开乱码解决办法

方法一:
新建一个excel文件~




就可以啦~~

方法一:
直接用notepad++打开csv,编码→转为utf-8,点击保存,贼方便!!!!!

读取文件 ##### 用户分析
1.用户频次分析

这里要用到 pyecharts
Echarts是百度公司出的,可以做炫酷的动态图,大神陈建东将echarts通过Python实现,设计了pyecharts库。
https://github.com/pyecharts/pyecharts
用到的方法是WordCloud.add() 方法签名

user = df['user'].value_counts()
from pyecharts import WordCloud
%matplotlib inline  #魔法函数 一定要加上!
wc =  WordCloud(width=800, height=620)
wc.add("f", list(user.index), list(user), word_size_range=[20, 80])
wc

又有问题了???抓狂,再去搜一下原因
解决办法:https://blog.csdn.net/zqs305082800/article/details/84581299

2.用户地理分布
df['province'] = df['location'].str.split(' ').str[0]
province = df['province'].value_counts()

from pyecharts import Bar
bar = Bar('地区分布情况')
bar.add("", list(province[:10].index), list(province[:10]),xaxis_interval=0,xaxis_rotate=20,xaxis_margin=8,is_label_show=True)
bar

3.用户性别分布
gender = df['gender'].value_counts()

from pyecharts import Pie

pie = Pie("性别分布")
pie.add("", ['男性','女性'], list(gender), is_label_show=True)
pie

4.粉丝数排名
data4 = df.drop_duplicates('user') #去除重复项
data4 = data4.sort_values(by='followers',ascending=False
20000
)[:10]
data4

from pyecharts import Bar

bar = Bar('粉丝前十')
bar.add("", list(data4['user']), list(data4['followers']),xaxis_interval=0,xaxis_rotate=20,xaxis_margin=8,is_label_show=True)
bar

5.发布时间分布
df['hour'] = df['created_time'].str.split(':').str[0].str.split(' ').str[-1]
hour = df['hour'].value_counts()
hour = hour.sort_index()

from pyecharts import Line

attr = list(hour.index)
v = list(hour)

line = Line("发布时间分布")
line.add("", attr, v)
line

5.榜单内容分词统计
str_data = ''
for i in range(df.shape[0]):
str_data = str_data + str(df.iloc[i,4])
str_data

import jieba.analyse
tags = jieba.analyse.extract_tags(str_data, topK=50, withWeight=True)
label = []
attr = []
for item in tags:
print(item[0]+'\t'+str(int(item[1]*1000)))
label.append(item[0])
attr.append(int(item[1]*1000))

from pyecharts import WordCloud

wordcloud = WordCloud(width=800, height=620)
wordcloud.add("", label[3:], attr[3:], word_size_range=[20, 100])
wordcloud

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: