<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我用《覺醒年代》做數(shù)據(jù)分析!

          共 10644字,需瀏覽 22分鐘

           ·

          2021-07-18 15:47

          ↑↑↑關(guān)注后"星標(biāo)"Datawhale
          每日干貨 & 每月組隊(duì)學(xué)習(xí),不錯(cuò)過
           Datawhale干貨 
          作者:牧小熊,華中農(nóng)業(yè)大學(xué),Datawhale成員

          最近有同學(xué)和我說《覺醒年代》好好看,于是我后知后覺地查了一下,不查不知道,這部劇豆瓣評(píng)分9.3,微博討論度26億+。《覺醒年代》都是哪些人在看?不如給受眾群體做一個(gè)用戶畫像分析。


          開始前要先準(zhǔn)備數(shù)據(jù),覺醒年代作為關(guān)鍵詞在微博平臺(tái)有很高的閱讀量,于是就從微博作為切入口進(jìn)行數(shù)據(jù)采集。

          因?yàn)槲⒉?duì)爬蟲的限制,我們只爬取了覺醒年代超話下的50頁(yè)的相關(guān)信息,數(shù)量已經(jīng)很多了,這個(gè)爬取的時(shí)間也比較長(zhǎng)。

          1. 數(shù)據(jù)準(zhǔn)備

          因?yàn)槲⒉┦莿?dòng)態(tài)加載的數(shù)據(jù),因此我們使用了selenium操作瀏覽器對(duì)微博的數(shù)據(jù)進(jìn)行了爬取。使用關(guān)鍵詞#覺醒年代 進(jìn)行搜索,爬取這個(gè)話題下的相關(guān)微博動(dòng)態(tài),共爬取了1300個(gè)相關(guān)微博動(dòng)態(tài)以及微博用戶的相關(guān)信息。

          后臺(tái)回復(fù) 覺醒年代 可獲取打包的數(shù)據(jù)與代碼

          2. 數(shù)據(jù)分析實(shí)踐

          導(dǎo)入相關(guān)的數(shù)據(jù)

          user=pd.read_excel('微博用戶信息.xlsx')
          info=pd.read_excel('微博信息.xlsx',header=None,names=['用戶名','設(shè)備','內(nèi)容'])
          info

          2.1 用戶性別分布

          from pyecharts.charts import Pie
          from pyecharts import options as opts
          data=[('男',266),('女',1081)]

          pie = Pie()
          pie.add("性別分布分析",data)
          pie.set_global_opts(title_opts=opts.TitleOpts(title='用戶的性別分布'))
          #formatter參數(shù){a}(系列名稱),{b}(數(shù)據(jù)項(xiàng)名稱),{c}(數(shù)值), go7utgvlrp(百分比)
          pie.set_series_opts(label_opts=opts.LabelOpts(formatter="go7utgvlrp%"))
          pie.render_notebook()

          通過分析我看可以看到,微博討論用戶群中女性占比達(dá)到80.25%。

          因?yàn)椴荒茏鋈繑?shù)據(jù)抽取,數(shù)據(jù)的采集是通過微博動(dòng)態(tài)采集,考慮到微博本身的用戶性別占比,同時(shí)女性人群更愛通過互聯(lián)網(wǎng)平臺(tái)寫自己的觀影感受,因此我們的數(shù)據(jù)采集有一定的偏好性,但是也能說明《覺醒年代》的受眾群體中,女性占據(jù)了一個(gè)較高的比例。

          2.2 用戶地域分布

          因?yàn)榈赜蚍植嫉臄?shù)據(jù)包含了省和地級(jí)市,因此我們需要進(jìn)行一定程度的處理。

          def clean(row):
              pro=['上海','云南','內(nèi)蒙古','北京','臺(tái)灣','吉林','四川','天津','寧夏','安徽','山東','山西','廣東','廣西','新疆','江蘇','江西','河北','河南','浙江','海南','湖北','湖南','澳門','甘肅','福建''西藏','貴州','遼寧','重慶','陜西','青海','香港','黑龍江']
              row=str(row)
              flag1=row[:2]
              flag2=row[:3]
              if flag1 in pro:
                  return flag1
              elif flag2 in pro:
                  return flag2
              else:
                  return '其它'
          user['地域']=user['地區(qū)或行業(yè)類別'].apply(clean)
          location=user['地域'].value_counts()
          data=[list(z) for z in zip(location.index, location)]
          c=Map()
          c.add(series_name="位置分布", data_pair=data, maptype="china",zoom = 1,center=[105,38])
          c.set_global_opts(
                title_opts=opts.TitleOpts(title='用戶的位置分布',pos_left = 'center'),
                legend_opts=opts.LegendOpts(is_show=False),
                visualmap_opts=opts.VisualMapOpts(max_=150,range_color=["white""#FA8072""#FF0000"])
              ) 
          c.render_notebook()

          從地域分布圖來看,用戶分布有2個(gè)高峰群,分別是北京和廣東。分析其產(chǎn)生的可能原因是北京擁有較多的高校,廣東包含了廣州以及深圳兩個(gè)一線城市,年輕用戶群較多。包括一線、新一線以及江浙沿海地區(qū)也有較高的討論度。

          2.3 用戶年齡分布

          from pyecharts.charts import Bar
          def age(row):
              if '年' in str(row):
                  num=2021-int(row.split('年')[0])
                  if num>=40:
                      return '40歲以上'
                  elif 40>num>=30:
                      return '30-40歲'
                  elif 30>num>=20:
                      return '20-30歲'
                  elif 20>num:
                      return '小于20歲'
                  else:
                      return '其它'
              else:
                  return '其它'
          user['年齡']=user['出生年月'].apply(age)
          columns=['小于20歲','20-30歲','30-40歲','40歲以上']
          num=[100,464,62,23]
          bar=Bar()
          bar.add_xaxis(columns)
          bar.add_yaxis('人數(shù)',num)
          bar.set_global_opts(title_opts=opts.TitleOpts(title='微博討論用戶年齡分布',pos_left = 'center'),
                              legend_opts=opts.LegendOpts(is_show=False),
                              yaxis_opts=opts.AxisOpts(name="人數(shù)",name_location='middle',name_gap=30,name_textstyle_opts=opts.TextStyleOpts(font_size=20)))
          bar.render_notebook()

          從微博討論用戶群來看,年齡主要集中在20-30歲之間,這說明《覺醒年代》在90后的觀眾有比較深遠(yuǎn)的影響。作為一部主旋律電影,讓90后追劇上頭足以證明它的誠(chéng)意和質(zhì)量。

          這里也要留意潛在的數(shù)據(jù)采集誤差,因?yàn)閿?shù)據(jù)入口是微博討論用戶,平臺(tái)中80以及90后本身就占據(jù)較大比例,同時(shí)90后更喜歡通過社交媒體自我表達(dá)。

          2.4 用戶設(shè)備分布

          def device(row):
              row=str(row)
              if 'iPhone' in row:
                  return 'iPhone'
              elif 'iPad' in row:
                  return 'iPad'
              elif ('榮耀' in row) or ('honor' in row):
                  return 'honor'
              elif ('HUAWEI'in row) or ('華為'in row) or ('nova'in row) or ('HarmonyOS' in row) or ('麥芒' in row) :
                  return 'HUAWEI'
              elif ('mi'in row) or ('小米'in row) or ('Redmi'in row) or ('紅米'in row) or('K30' in row ) :
                  return 'mi'
              elif ('vivo'  in row) or ('ColorOS' in row):
                  return 'vivo'
              elif 'OPPO' in row:
                  return 'oppo'
              elif 'OnePlus' in row:
                  return 'OnePlus'
              elif 'iQOO' in row:
                  return 'iQOO'
              elif ('真我' in row) or ('realme' in row):
                  return 'realme'
              elif '三星' in row:
                  return 'sumsung'
              elif '索尼' in row:
                  return 'sony'
              else:
                  return '其它'
          info['device']=info['設(shè)備'].apply(device)
          columns=['iPhone','HUAWEI','mi','honor','oppo','vivo','iPad','OnePlus','sumsung','realme']
          num=[497,222,58,44,41,36,13,5,4,2]
          data=[list(x) for x in zip(columns,num)]
          pie = Pie()
          pie.add("微博討論用戶手機(jī)品牌分布",data)
          pie.set_global_opts(title_opts=opts.TitleOpts(title='微博討論用戶手機(jī)品牌分布',pos_left = 'center'),legend_opts=opts.LegendOpts(is_show=False))
          #formatter參數(shù){a}(系列名稱),{b}(數(shù)據(jù)項(xiàng)名稱),{c}(數(shù)值), go7utgvlrp(百分比)
          pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b} go7utgvlrp%"))
          pie.render_notebook()

          通過數(shù)據(jù)來看,微博討論用戶的主力設(shè)備是iPhone和華為,其中蘋果設(shè)備占比超過了50%,隨著蘋果手機(jī)價(jià)格的降低在市場(chǎng)占有率上有著明顯的優(yōu)勢(shì)。

          2.5 用戶個(gè)性標(biāo)簽詞云

          且慢!在開始做詞云之前,要先刪除停頓詞,停頓詞往往沒有有效的含義還會(huì)占據(jù)大量位置,影響詞云的效果。

          在github上找到了停頓詞表:

          goto456/stopwords:https://link.zhihu.com/?target=https%3A//github.com/goto456/stopwords

          #pip install jieba
          import jieba
          from PIL import Image
          import numpy as np
          import matplotlib.pyplot as plt
          from wordcloud import WordCloud, STOPWORDS
          from collections import Counter
          content=''.join([str(i) for i in list(info['內(nèi)容'])])
          stopwords = [line.strip(''for line in open('stopwords.txt''r', encoding='utf-8').readlines()]
          jieba.add_word("覺醒年代")
          jieba.add_word("yyds")
          content=[x for x in jieba.lcut(content) if x not in stopwords and len(x)>1]
          content=Counter(content)
          test_mask = np.array(Image.open("datawhale.png"))
          stopwords = set(STOPWORDS)
          stopwords.add("said")
          wc = WordCloud(background_color="white",mask=test_mask,font_path='simhei.ttf',width=5000,height=5000,
                  stopwords=stopwords)
          wc.generate_from_frequencies(content)
          plt.imshow(wc, interpolation='bilinear')
          plt.axis("off")
          plt.show()
          wc.to_file("test.png")

          2.6 角色討論熱度

          import pandas as pd
          hero=['陳獨(dú)秀','李大釗','延年','魯迅','喬年','蔡元培','胡適','毛澤東','周恩來','辜鴻銘','顧維鈞','趙紉蘭','汪大燮','鄧中夏','柳眉','白蘭','吳炳湘','易白沙','高君曼','章士釗','黃侃','沈尹默']
          content=''.join([str(i) for i in list(info['內(nèi)容'])])
          hero_num=[]
          for i in hero:
              num=content.count(i)
              hero_num.append((i,num))
          hero_num=pd.DataFrame(hero_num)
          hero_num.columns=['人名','出現(xiàn)次數(shù)']
          hero_num=hero_num.sort_values(by='出現(xiàn)次數(shù)',ascending=False)
          hero_num=hero_num.reset_index(drop=True)
          columns=list(hero_num['人名'])[:10]
          num=list(hero_num['出現(xiàn)次數(shù)'])[:10]
          bar=Bar()
          bar.add_xaxis(columns)
          bar.add_yaxis('次數(shù)',num)
          bar.set_global_opts(title_opts=opts.TitleOpts(title='微博討論角色頻率分布',pos_left = 'center'),
                              legend_opts=opts.LegendOpts(is_show=False),
                              yaxis_opts=opts.AxisOpts(name="次數(shù)",name_location='middle',name_gap=30,name_textstyle_opts=opts.TextStyleOpts(font_size=20)))
          bar.render_notebook()

          對(duì)于劇中的常用角色對(duì)內(nèi)容進(jìn)行匹配,選出來排名前10的角色

          可以看到根據(jù)討論內(nèi)容中出現(xiàn)的次數(shù)來看,陳獨(dú)秀李大釗兩位作為主角,討論熱度遙遙領(lǐng)先于其他角色,延年喬年也都是排行在前列。

          也是在電視劇播出后,很多市民在延喬路鮮花,想起了習(xí)總書記在中國(guó)共產(chǎn)黨成立100周年上的講話:中國(guó)人民也絕不允許任何外來勢(shì)力欺負(fù)、壓迫、奴役我們,誰妄想這樣干,必將在14億多中國(guó)人民用血肉筑成的鋼鐵長(zhǎng)城面前碰得頭破血流。這盛世,如你所愿!

          3. 數(shù)據(jù)及代碼

          在本次的項(xiàng)目中,我們爬取了微博關(guān)鍵詞下的相關(guān)數(shù)據(jù),同時(shí)對(duì)數(shù)據(jù)進(jìn)行清洗與相關(guān)的可視化分析,項(xiàng)目中包含了一定的可視化技巧,適合初學(xué)者進(jìn)行相關(guān)的學(xué)習(xí)。如需代碼數(shù)據(jù),公眾號(hào)后臺(tái)回復(fù) 覺醒年代 可下載


          干貨學(xué)習(xí),點(diǎn)三連
          瀏覽 79
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线欧美成人电影 | 亚洲狼人综合干视频 | 123操逼视频 | www.豆花AV | 国产91娱乐乱伦视频 |