美文网首页数据蛙数据分析每周作业数据蛙强化课程第一期
《数据蛙每周交作业小组》截至第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