数据分析 | 零基础入门数据分析(四):从入门到出家?

大家好,我是聪明绝顶秃秃娜。o(〃'▽'〃)o

今天开始学着用Markdown写东西了(兴奋地搓搓爪子.gif),也就是说终于可以优雅的插代码了。实不相瞒,娜姐我这两天睡一觉起来看看前一天写的东西,简直要点一首梦醒时分送给自己:这孙子都写了些什么傻逼玩意儿……
真是让人秃头啊

首页推荐随便点点,发现别人的文章特别好看:叙事详略得当,衔接连贯自然,选材别致新颖,情节跌宕起伏。我当即暗下决心,决定好好培养自己的自信心,再也不随便乱看首页推荐了。
而且根据有关人士可靠回忆,我小时候写故事很有意思的,日记里都是写一些我姥姥的大公鸡如何如何了,我在我奶家猪圈的新发现,要不就是如何野在外面不回家偷吃邻居田里的葵花籽上山逮蚂蚱捉萤火虫云云,想必充满童趣。看来我妈的眼睛是雪亮的,我果然还是很有才华的。碰巧前段时间我们搬家整理,翻出来我大概10岁左右写的日记,捧着日记本我万分激动内心颤抖准备好好研读一番,擦...果然我妈看我的时候自带了无数个金光闪闪亲闺女光环。后来,后来我当然是趁没人注意把日记本扔了。我不管,娜某人写故事天下第一!不接受反驳!(≡•̀·̯•́≡)

话说这个零基础入门系列的初衷是想和大家分享我是怎么用python或者gis做数据分析小作业的,没想到整天写些鸡汤和废柴自白,港真我自己也非常着急,本来我准备按照技术博客那种高大上的路子发展的,无奈水平菜得抠脚写不了写不了,真的是一失足成大瘸子再回首又闪了腰。我给自己定了个大目标,这很不错,但是花了好长时间我才想明白,允许自己反复,允许自己有时候懦弱,退缩,插科打诨,才能更好的坚持。小烦恼都是反反复复找上我们的,所以一劳永逸的解决方案也是不存在的。人生不必分分秒秒都绷着,时时刻刻都一鼓作气。


今天分享的是娜娜酱的第三个python学习小作业:视频网站数据清洗整理和结论

作业要求:
1、数据清洗 - 创建函数去除空值
2、数据清洗 - 创建函数将时间字段转化为时间标签
3、问题1 分析出不同导演电影的好评率,并筛选出TOP20
① 计算统计不同导演的好评率
② 通过多系列柱状图,图表可视化
4、问题2 统计分析2001-2016年每年评影情况
① 计算统计2001-2016年每年评影人数总量
② 通过面积图,做图表可视化,分析每年人数总量变化规律
③ 验证是否有异常值(极度异常)
④ 创建函数分析数据外限最大最小值
⑤ 筛选查看异常值 → 异常值是否是每年的热门电影?


爱奇艺视频数据截图

见多识广娜娜酱(在jupyter notebook做的):
第1步:加载模块,读取爱奇艺视频数据,处理空值,时间标签转化

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import datetime
% matplotlib inline
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

#读取爱奇艺视频数据
import os
os.chdir('C:/Users/my/Desktop/')
data1 = pd.read_csv('爱奇艺视频数据.csv',engine = 'python')

#1、数据清洗 - 去除空值
def cleanna(df):
    A = list(df.columns)
    for a in A:
        if df[a].dtype == 'object':
            df[a].fillna('缺失数据',inplace = True)
        else:
            df[a].fillna(0,inplace = True)
    return(df)
data1_clean = cleanna(data1)

#2、数据清洗 - 时间标签转化
def todate(df):
    B = list(df.columns)
    for b in B:
        if b == '数据获取日期':
            s = df[b].str.replace('年','-').str.replace('月','-').str.replace('日','')
            df[b] = pd.to_datetime(s)
    return(df)

data1_re = todate(data1_clean)
data1_re.head()

第2步:解决问题1,获得好评率Top20的导演是哪些?

#3、问题1 分析不同导演电影的好评率,并筛选出TOP20
#① 计算统计不同导演的好评率
df1 = pd.DataFrame({'导演':data1_re['导演'],
                    '好评数':data1_re['好评数'],
                    '评分人数':data1_re['评分人数']})
df1_re = df1.groupby('导演').sum()
df1_re['好评率'] = df1_re['好评数']/df1_re['评分人数']
df1_sort = df1_re.sort_values(by='好评率',ascending=False)[:20]
#df1_sort.head(20)

#② 通过多系列柱状图,图表可视化
#导演好评率TOP20
x1 = np.arange(20)
y1 = df1_sort

fig1 = plt.figure(figsize = (8,6))
plt.bar(x1,y1['好评率'],
        width = 0.9,
        facecolor = 'gold',
        alpha = 0.9,
        tick_label = y1.index,
        edgecolor = 'lightyellow')
plt.ylim([0.975,1]) 
plt.title('导演好评率TOP20')
plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'y') 

#加坐标轴标签
xlabel_obj=plt.xlabel('导演',fontsize=10,alpha=0.9)  
ylabel_obj=plt.ylabel('好评率',fontsize=10,alpha=0.9)

#X轴标签旋转45度
import pylab as pl
pl.xticks(rotation=60)

#Y轴标签以百分比显示
from matplotlib.ticker import FuncFormatter
def topercent(temp, position):  
    return '%0.1f'%(100*temp) + '%'  
plt.gca().yaxis.set_major_formatter(FuncFormatter(topercent))  

第3步:解决问题2,2001-2016年每年评影情况是怎么样的呢?

#4、问题2 统计分析2001-2016年每年评影情况
df2 = pd.DataFrame({'上映年份':data1_re['上映年份'],
                    '评分人数':data1_re['评分人数'],
                    '好评数':data1_re['好评数'],
                    '导演':data1_re['导演'],
                    '电影':data1_re['整理后剧名']})
df2_re= df2[(df2['上映年份']!= 0)&(df2['导演']!= '缺失数据')]

#① 计算统计2001-2016年每年评影人数总量
df2_year = df2_re.groupby('上映年份').sum()
df2_year_0116 = df2_year[2001:2016]
print(df2_year_0116)

#② 通过面积图,做图表可视化,分析每年人数总量变化规律
df2_year_0116['评分人数'].plot.area(color = 'violet',alpha = 0.5)
plt.grid()
plt.title('2001-2016年每年评影人数总量统计')
10年到12年发生了什么,我也好奇怪

第4步:解决问题2,2001-2016年每年评影情况有没有异常值?

#③ 验证是否有异常值(极度异常)
#电影按照名称和上映年份分组
df2_movie = df2_re.groupby(['电影','上映年份']).sum()
df2_movie.reset_index(level=0, inplace=True)

#2001-2016每年上映的电影(用locals方法动态生成)
for i in range(2001,2017):
    locals()['df2_movie_' + str(i)] = df2_movie[df2_movie.index == i]

#2001-2016每年上映的电影箱型图:存在异常值
fig = plt.figure(figsize=(10,14),facecolor = 'gray')
for j in range(2001,2017):
    locals()['ax'+str(j)] = fig.add_subplot(4,4,j-2000) 

    locals()['df2_movie_' + str(j)][['评分人数','好评数']].boxplot(sym = '+',
               vert = True,  # 是否垂直
               whis = 3,  
               patch_artist = False,  # 上下四分位框内是否填充,True为填充
               meanline = False,showmeans=True,  # 是否有均值线及其形状
               showbox = True,  # 是否显示箱线
               showcaps = True,  # 是否显示边缘线
               showfliers = True,  # 是否显示异常值
               return_type='dict'  # 返回类型为字典
               ) 
    plt.title('%i年'%j)
箱型图查看是否存在异常值

第5步:解决问题2,到底哪些电影剧集出现了异常值?

#④ 创建函数分析出数据外限最大最小值
#创建函数求外限最大最小值
def outlier(se):
    Q1 = se.quantile(q = 0.25)
    Q3 = se.quantile(q = 0.75)
    IQR = Q3 - Q1
    OUTmax = Q1 + IQR*3
    OUTmin = Q3 - IQR*3
    return (OUTmax,OUTmin)

#⑤ 筛选查看异常值 → 是否异常值就是每年的热门电影?
#2001-2016每年的异常值信息
for r in range(2001,2017):
    Vname = locals()['df2_movie_'+str(r)]
    Vname.reset_index(level=0, inplace=True)
    OUT = outlier(Vname['评分人数'])
    print(Vname[Vname['评分人数'] > OUT[0]])
异常值确实出现在每年的热门剧集(仅截取部分)

以上就是从计算机白痴到会用python做一点点点点点数据分析的人生赢家娜娜酱,暂时还没有出家!(但是秃了,划掉)

请继续期待后续娜娜酱打怪升级小作业~

这是零基础入门数据分析系列的第四篇,其他内容在这里:
第一篇:零基础小白自学数据分析:从入门到摔门?
第二篇:零基础小白自学数据分析:从入门到绊倒?
第三篇:零基础小白自学数据分析:从入门到住院?
第五篇:零基础小白自学数据分析:从入门到脱发?
也许你还想看看:数据分析,从入门到放弃

(-'๏_๏'-)谢谢您阅读,请勿转载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容