爱奇艺视频网站数据清洗整理和结论研究

'''
1、数据清洗 - 去除空值
'''
import numpy as np
import pandas as pd 

data = pd.read_csv('C:/Users/HP/Desktop/爱奇艺视频数据.csv',engine = 'python')

def data_cleaning(df):
    for col in df.columns:
        if df[col].dtype == 'object':
            df[col].fillna('缺失数据',inplace = True) #fillna方法填充缺失数据,注意inplace参数
        else:
            df[col].fillna(0,inplace = True)
    return (df)

data_c1 = data_cleaning(data)
data_c1.iloc[20:30]
'''
2、数据清洗 - 时间标签转化
'''
def date_cleaning(df,*cols):
    for col in cols:
        df[col] = df[col].str.replace('年','.')
        df[col] = df[col].str.replace('月','.')
        df[col] = df[col].str.replace('日','.')
        df[col] = pd.to_datetime(df[col]) # 需要将中文日期转化为非中文日期
    return (df)
data_c2 = date_cleaning(data_c1,'数据获取日期')
'''
3、 分析出不同导演电影的好评率,并筛选出TOP20
'''
df_dir = data_c2.groupby('导演').sum()[['好评数','评分人数']] #好评率 = 好评数 / 评分人数
df_dir['好评率'] = df_dir['好评数']/df_dir['评分人数']
df_dir = df_dir.sort_values('好评率',ascending = False)[:20]
print(df_dir)

执行结果:

                 好评数          评分人数       好评率
导演                                           
王静       5.601448e+06  5.602704e+06  0.999776
萧锋       4.415545e+07  4.416801e+07  0.999716
向灼       3.685386e+06  3.691240e+06  0.998414
乌兰塔娜     1.916524e+07  1.920091e+07  0.998142
徐宗政      3.113422e+06  3.123920e+06  0.996639
欧凡       3.088701e+06  3.100421e+06  0.996220
肖光辉      3.264290e+05  3.284140e+05  0.993956
张国立/罗长安  8.177111e+06  8.230880e+06  0.993467
刘逢声/林峰   3.591638e+06  3.617351e+06  0.992892
林添一      1.049628e+09  1.057556e+09  0.992504
毛尉光      1.747925e+06  1.766237e+06  0.989632
郭东旭      1.027664e+06  1.039609e+06  0.988510
苏沅峰/张艺腾  3.600976e+06  3.643071e+06  0.988445
袁刚/成志超   1.185439e+07  1.200596e+07  0.987375
胡雪杨      1.042170e+06  1.056247e+06  0.986673
丁晓雄      1.568219e+06  1.591727e+06  0.985231
延艺       4.094535e+07  4.157757e+07  0.984794
潇庸       5.338679e+06  5.427978e+06  0.983548
白羽/陈迅    1.705608e+07  1.737295e+07  0.981761
张蠡/姜峰    2.100617e+08  2.143382e+08  0.980047
import matplotlib.pyplot as plt
import matplotlib as mpl
%matplotlib inline

mpl.rcParams['font.sans-serif']=['SimHei']  #调整字体格式,防止中文不能显示
mpl.rcParams['axes.unicode_minus']=False
mpl.rcParams['font.size']=15 # 设置字体大小

fig = plt.figure(figsize = (15,6))
df_dir['好评率'].plot(kind = 'bar',
       width = 0.8,
       rot = 45,
       color = 'grey',
       ylim = (0.98,1),   
       alpha = 0.8,
        edgecolor ='k')
plt.title('不同导演的好评率TOP20\n',fontsize = 20,color = 'k')
plt.grid(True,linestyle = '--',linewidth = 0.5,color = 'grey')
plt.xlabel('导演',fontsize = 15)
for i,j in zip(range(20),df_dir['好评率']):
    plt.text(i-0.4,0.981,'%.4f'%j,fontsize = 12)

爱奇艺视频网站数据清洗整理和结论研究_第1张图片

'''
4、统计分析2001-2016年每年评影人数总量
'''
q1data = data_c2[['上映年份','整理后剧名','导演']].drop_duplicates()
q1data = q1data[q1data['上映年份']!= 0]

q2data = data_c2.groupby('整理后剧名').sum()[['评分人数','好评数']]
q3data = pd.merge(q1data,q2data,left_on = '整理后剧名',right_index = True)
q4data = q3data.groupby('上映年份').sum()[['评分人数','好评数']]
print(q4data.head())

# 通过面积图,做图表可视化,分析每年人数总量变化规律。
fig1 = plt.figure(num = 1,figsize = (14,6))
q4data['评分人数'].loc[2001:].plot.area(grid = True,
                                   alpha = 0.8,
                                   )
plt.xticks(range(2001,2017))
plt.grid(True,linestyle = '--',linewidth = 0.5,color = 'grey')
plt.title('2001-2016年每年评影人数总量\n',color = 'k',fontsize = 20)

#通过箱型图验证异常值情况
fig,axes = plt.subplots(4,4,figsize = (14,18))
start = 2001
for i in range(4):
    for j in range(4):
        data = q3data[q3data['上映年份'] == start]
        f = data[['评分人数','好评数']].boxplot(whis = 3,
                                    sym = '+',grid = True,
                                    return_type = 'dict',
                                    ax = axes[i,j])
        start += 1

运行结果:

             评分人数        好评数
上映年份                        
1937.0    84367.0    63120.0
1985.0   163064.0   135462.0
1986.0    58593.0    41216.0
1987.0  3930018.0  3728651.0
1988.0   410722.0   337484.0

爱奇艺视频网站数据清洗整理和结论研究_第2张图片
爱奇艺视频网站数据清洗整理和结论研究_第3张图片
爱奇艺视频网站数据清洗整理和结论研究_第4张图片

'''
验证是否有异常值(极度异常)
筛选查看异常值 → 是否异常值就是每年的热门电影?
'''
# 创建函数分析出数据外限最大最小值
def data_e(df,col):
    q1 = df[col].quantile(q = 0.25) #  通过quantile(q=0.5)方法,得到四分位数
    q3 = df[col].quantile(q = 0.75)
    iqr = q3 - q1   # IQR=Q3-Q1
    tmax = q3 + 3*iqr  # 外限:最大值区间Q3+3IQR
    tmin = q1 - 3*iqr   # 最小值区间Q1-3IQR (IQR=Q3-Q1)
    return (tmax,tmin) 

for i in range(2001,2017):
    data_year = q3data[q3data['上映年份'] == i]
    print('%i年有%i条数据'%(i,len(data_year)))
    t = data_e(data_year,'评分人数')
    print(t)
    print(data_year[data_year['评分人数']>t[0]])

下面是2015-2016年的结果

2015年有324条数据
(8785182.0, -6582672.25)
         上映年份      整理后剧名               导演         评分人数          好评数
98     2015.0       特警力量               刘猛   38965035.0   34765796.0
116    2015.0        小爸妈              毛小睿   13843324.0   10845473.0
263    2015.0        仙侠剑              朱锐斌   12257353.0    8589762.0
281    2015.0    抓住彩虹的男人          吴锦源/邓衍成   16323976.0   13230803.0
430    2015.0        地雷战              焦晓雨    9350124.0    7335714.0
476    2015.0       千金女贼      陈玉珊/马华干/周晓鹏   57678789.0   49943512.0
587    2015.0         大舜              吴子牛    8865405.0    6782176.0
652    2015.0         花火              邹集城   12446127.0   10594296.0
743    2015.0        鸳鸯佩              黄家辉   17827128.0   12909386.0
1106   2015.0        野山鹰           虎子/张文东    9643269.0    6707485.0
1366   2015.0       2胎时代           滕文骥/王为   24608401.0   21156992.0
1663   2015.0     冰与火的青春              潘镜丞   47471498.0   38431391.0
1674   2015.0     加油吧实习生               孙皓  198990274.0  175397693.0
1730   2015.0       左手劈刀               李印   10972150.0    8111186.0
1774   2015.0       克拉之恋              陈铭章   11178336.0    9864390.0
1775   2015.0       克拉恋人              陈铭章  301107808.0  256092092.0
1805   2015.0       神犬小7              王小列   82828676.0   76041178.0
1857   2015.0      俺娘田小草               王梓   11559426.0    8039081.0
1968   2015.0    爱情公寓番外篇               韦正   13816459.0   12222270.0
2018   2015.0    我的媳妇是女王               俞钟   17072270.0   14224495.0
2033   2015.0       聊斋新编  黄祖权/蓝志伟/麦炳华/谭朗昌   10692667.0    8420913.0
2084   2015.0       多情江山          李惠民/白云默   33151339.0   25256433.0
2121   2015.0    少年神探狄仁杰               林峰   35482235.0   31894395.0
2142   2015.0    锦绣缘华丽冒险              林合隆   54482448.0   46376708.0
24177  2015.0  熊出没之冬日乐翻天             缺失数据    8967986.0    6191465.0
2016年有77条数据
(7406404.0, -5545542.0)
         上映年份     整理后剧名           导演        评分人数         好评数
282    2016.0   寂寞空庭春欲晚          吴锦源  39880567.0  34573682.0
358    2016.0     青丘狐传说  林玉芬/高林豹/徐惠康  41505217.0  35920680.0
769    2016.0  山海经之赤影传说          朱锐斌  36172373.0  31617163.0
983    2016.0      煮妇神探      吴锦源/冯柏源  57826201.0  52276038.0
1123   2016.0     武神赵子龙  袁英明/程力栋/国建勇  37148312.0  31850186.0
92960  2016.0     武神赵子龙      梁胜权/国建勇  37148312.0  31850186.0
1878   2016.0   因为爱情有幸福          刘俊杰  35075669.0  30790737.0
1935   2016.0     5鼠闹东京          吴家骀  13576509.0  11748866.0

你可能感兴趣的:(python,数据分析)