美文网首页数据蛙数据分析每周作业数据蛙强化课程第一期
《数据蛙每周交作业小组》截至第7周交作业情况分析

《数据蛙每周交作业小组》截至第7周交作业情况分析

作者: 米兔妮妮 | 来源:发表于2019-01-27 10:10 被阅读224次

背景

这是数据蛙每周交作业小组成立的第7周,由于每周要统计作业提交情况,并根据上两周每位童鞋提交的作业数量、获得的评论数和喜欢数选出本周最受欢迎的作者。恰好这周又刚刚开始学习pandas,刚好拿来练手,所以写了这篇报告。

数据获取

获取方法借鉴群主的数据分析实战---通过爬虫管理社群作业,写的十分详细,再次感谢群主大大。
1.基本思路:采取requests + BeautifulSoup + pymysql爬取数据蛙每周交作业小组截至今天上午提交的作业,然后保存至数据库中。
2.爬取字段
name:作者简书ID
title:文章标题
publish_time:发布文章时间
word_age:文章字数
comments_count:该篇文章获得的评论数
likes_count:该篇文章获得的喜欢数
注意:群主凡人求索的文章爬取了前4个字段,要爬取评论数和喜欢数,需要自行添加一下。

数据分析部分主要借鉴了小佳童鞋的《疯狂数据分析》第一周成员学习情况分析,感谢~

数据导入

在数据获取时,将数据存入了crazydata库的表homework中,首先从数据库中读取交作业数据:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

import pymysql
dbconn = pymysql.connect(host='localhost',database='crazydata',user='root',password='root',port=3306,charset='utf8')
sqlcmd = "select * from homework"
data = pd.read_sql(sqlcmd, dbconn)

查看交作业的整体情况:

data.info()
截至第七周交作业整体情况.png

可知,截至第七周一共提交了379篇文章。
获取数据样本:

data.head()
数据样本.png 查看共有多少位简书作者向数据蛙每周交作业小组提交过文章:
data['name'].nunique()

结果为69。
综上截至第七周(2019年1月27日上午6时)一共有69位小组成员提交了共379篇文章。

数据清洗

1.发布时间

from dateutil.parser import parse
data.publish_time = data.publish_time.str.strip('*') #清除发布时间里面多余的*
for i in data.publish_time:
    i = parse(i)                
data.publish_time = pd.to_datetime(data.publish_time)  #将发布时间转化为datetime类型
data['date'] = data.publish_time.dt.day
data['hour'] = data.publish_time.dt.hour

2.文章字数

data.word_age = data.word_age.str.strip('字数') #删除字数字段多余的“字数”
data.word_age = data.word_age.astype('int')  #将类型转换为int类型

3.文章获取的评论数

data.comments_count = data.comments_count.str.strip('\n')  # 删除评论数字段多余的\n
data.comments_count = data.comments_count.astype('int') 

4.文章获取的喜欢数

data.likes_count = data.likes_count.astype('int')

再次查看数据整体情况及样本:

data.info()
data.head()
数据清洗后整体情况.png 数据清洗后样本.png

此时,发布时间字段已经转为datetime类型,文章字数、评论数和喜欢数字段已转为int类型。

数据分析

文章发布篇数

data.groupby(['name'])[['title']].count().describe()
发布文章概览.png
data.groupby(['name'])['title'].count().sort_values(ascending = False).head(5)
发布文章最多的前5名.png 截至第7周,一共有69人发布文章到数据蛙每周交作业小组专题,平均每人提交5篇。25%的人提交了7篇及以上的文章。
发布文章数最多的前五名分别是:1点点De小任性丶 、yimengtianya1、Great_smile、夜希辰、凡人求索 。

提交作业时间

data['dayofweek'] = data['publish_time'].dt.dayofweek # 获取提交作业的时间是一周中的星期几
data.groupby(['dayofweek'])['name'].count().plot(kind='bar')
plt.show()

data.groupby(['hour'])['name'].count().plot(kind='bar')
plt.show()
提交作业的星期.png

大部分童鞋在周日提交作业。


一天中提交作业时段变化.png

一天中提交作业的时段集中在中午和晚上。晚上7点左右提交的数量最多。

文章字数、获得评论数、喜欢数

data.groupby(['name'])[['word_age', 'comments_count', 'likes_count']].sum().describe()
文章字数、评论数、喜欢数概览.png

1.文章字数
查看上图,发现每位作者写的总文章字数竟然有0个字的,这不科学,筛选出总文章字数为0的作者及其提交的文章:

df = data.groupby(['name'])[['word_age']].sum()
df[ df.word_age==0 ]
异常数据1.png
data[data['name'] == 'EricGuoxm' ]
异常数据2.png 到数据蛙每周交作业小组专题搜索发现,该作者是新加入小组的,只提交过1篇文章,且该篇文章由图片组成,没有文字。
剔除该篇文章重新统计文章字数、获得评论数、获得喜欢数:
data.drop(286, inplace=True)
data.groupby(['name'])[['word_age', 'comments_count', 'likes_count']].sum().describe()
文章字数、评论数、喜欢数概览(删除异常值后).png

截至第七周,68位小组成员平均每位写了4078个字,最多的写了16178个字。
2.文章获得评论数
查看获取的评论数最多的前5名小组成员:

data.groupby(['name'])[['comments_count']].sum().sort_values(by='comments_count', ascending=False).head(5)
获得评论数最多的前5位小组成员.png

查看获得评论数最多的单篇文章及其作者的前5名:

data[['name', 'title', 'comments_count']].sort_values('comments_count', ascending=False)
获得评论数最多的单篇文章及其作者.png

平均每位作者获得了2个评论,文章的总评论数和单篇文章获得评论数最多的均为凡人求索。
3.文章喜欢数
查看获取的喜欢数最多的前5名小组成员:

data.groupby(['name'])[['likes_count']].sum().sort_values(by='likes_count', ascending=False).head(5)
获得喜欢数最多的前5位小组成员.png

查看获得喜欢数最多的单篇文章及其作者的前5名:

data[['name', 'title', 'likes_count']].sort_values('likes_count', ascending=False)
获得喜欢数最多的单篇文章及其作者.png

estate47童鞋在获得的喜欢数总数和获得喜欢数最多的单篇文章均居榜首,群主凡人求索两项均榜上有名。平均每位童鞋获得的喜欢数为12个,我们的文章质量要继续提升啊。

哪篇文章是截至本周最受欢迎的文章?

我们采取 受欢迎度=文章获得评论数*0.2+文章获得喜欢数*0.8 的算法:

data['popular_degree'] = 0.2*data['comments_count'] + 0.8*data['likes_count']
data[['name', 'title', 'popular_degree']].sort_values(by='popular_degree', ascending=False)
截至本周最受欢迎的前5篇文章如下: 截至第七周最受欢迎的前5篇文章.png

谁是截至本周最受欢迎的作者?

采用 受欢迎度=提交文章总数*0.2+文章获得总评论数*0.2+文章获得总喜欢数*0.6 的算法:

popular_author = data.groupby(['name'], as_index=False)[ [ 'title', 'comments_count', 'likes_count'] ].agg({'title': 'count',  'comments_count': 'sum', 'likes_count': 'sum'})
popular_author['popular_degree'] = popular_author['title'] * 0.2 + popular_author['comments_count'] * 0.2 + popular_author['likes_count'] * 0.6
popular_author.sort_values(by='popular_degree', ascending=False).head(10)
截至本周最受欢迎的作者如下: 截至第七周最受欢迎的前5位作者.png

总结:

1.截至2019.1.27上午6时,一共有69位小组成员提交了共379篇文章。
2.一周中提交作业的时间集中在每周日,一天中提交作业的时段集中在中午11-12时和晚上17-24时。
3.平均每位小组成员发布了5.5篇文章。最多的已发布19篇。
4.平均写作字数4078个。最多的累积写作字数达到16178个。
5.最受欢迎的单篇文章获得了95个喜欢,最受欢迎的作者获得了116个喜欢。

相关文章

网友评论

    本文标题:《数据蛙每周交作业小组》截至第7周交作业情况分析

    本文链接:https://www.haomeiwen.com/subject/fffgjqtx.html