為電影公司創(chuàng)建可視化圖表-tableau

可視化鏈接https://public.tableau.com/profile/.5458#!/vizhome/1_2734/Q2

從The movie DB上獲得一份電影數(shù)據(jù)進(jìn)行可視化

提出問題:

  • 1:電影類型是如何隨著時間的推移發(fā)生變化的恭朗?
  • 2:Universal Pictures 和 Paramount Pictures 之間的對比情況如何屏镊?
  • 3:改編電影和原創(chuàng)電影的對比情況如何?
  • 4: 發(fā)行年份跟收益的關(guān)系

數(shù)據(jù)各字段的意思

-   id:標(biāo)識號
?   imdb_id:IMDB 標(biāo)識號
?   popularity:在 Movie Database 上的相對頁面查看次數(shù)
?   budget:預(yù)算(美元)
?   revenue:收入(美元)
?   original_title:電影名稱
?   cast:演員列表痰腮,按 | 分隔而芥,最多 5 名演員
?   homepage:電影首頁的 URL
?   director:導(dǎo)演列表,按 | 分隔膀值,最多 5 名導(dǎo)演
?   tagline:電影的標(biāo)語
?   keywords:與電影相關(guān)的關(guān)鍵字棍丐,按 | 分隔,最多 5 個關(guān)鍵字
?   overview:劇情摘要
?   runtime:電影時長
?   genres:風(fēng)格列表沧踏,按 | 分隔骄酗,最多 5 種風(fēng)格
?   production_companies:制作公司列表,按 | 分隔悦冀,最多 5 家公司
?   release_date:首次上映日期
?   vote_count:投票數(shù)
?   vote_average:平均投票數(shù)
?   release_year:發(fā)行年份
?   budget_adj:根據(jù)通貨膨脹調(diào)整的預(yù)算(2010 年趋翻,美元)
?   revenue_adj:根據(jù)通貨膨脹調(diào)整的收入(2010 年,美元)

導(dǎo)入模塊

import pandas as pd
import numpy as np

加載數(shù)據(jù)

df=pd.read_csv('/Users/zhongyaode/Desktop/movies.csv')
#查看數(shù)據(jù)基本統(tǒng)計(jì)數(shù)據(jù)
df.describe()
#查看字段的數(shù)據(jù)類型及行數(shù)
df.info()
#顯示前五行數(shù)據(jù)
df.head()
#選取需要的字段
dd=df[['id','budget','revenue','genres','production_companies','vote_count','release_year','keywords','original_title']]
dd.info()

處理缺失值

#刪除有缺失值的行
dd.dropna(axis=0).info()
#分列字段 genres字段
split_genres=df['genres'].str.split('|',expand=True)

split_genres['id']=df['id']#把df的id字段賦值給split_genres
merged_back=dd.merge(split_genres)#根據(jù)字段id進(jìn)行連接
#merge相當(dāng)于mysqle的join 進(jìn)行表連接

melt的官方文檔https://pandas.pydata.org/pandas-docs/stable/generated/pandas.melt.html

melted=pd.melt(
    merged_back,id_vars=['id','release_year'],
    value_vars=[0,1,2,3,4],value_name='genres').drop('variable',axis=1).dropna()
melted.head()
#輸出melted
melted.to_csv('id_year_genres.csv',index=False)

處理production_companies字段

#拆分
dd_production=dd['production_companies'].str.split('|',expand=True)
dd_production['id']=dd['id']
merge_backed=dd_production.merge(dd)
#用melt函數(shù)
melted_production=pd.melt(merge_backed,id_vars=['id','budget','revenue','release_year'],
                         value_vars=[0,1,2,3,4],value_name='production_companies'
                         ).drop('variable',axis=1).dropna()
#篩選數(shù)據(jù)
melted_U_P=melted_production[(melted_production.production_companies=='Universal Pictures')|(melted_production.production_companies=='Paramount Pictures')]
melted_U_P.to_csv('melted_U_P.csv',index
                  =False)

處理keywords字段

#拆分字段
dd_keywords=dd['keywords'].str.split('|',expand=True)
dd_keywords['id']=dd['id']
dd_merge_keywords=dd.merge(dd_keywords)

#運(yùn)用melt函數(shù) 
if_novel=pd.melt(dd_merge_keywords,id_vars=['id','budget','revenue','release_year','original_title','vote_count'],
                value_vars=[0,1,2,3,4],value_name='keywords').drop('variable',axis=1).dropna()

#再對keywords進(jìn)行處理,值是based on novel的返回based on novel否則返回Not_novel
def peng(data):
    if data=='based on novel':
        return 'based on novel'
    else:
        return 'Not_novel'
if_novel['keywords']=if_novel['keywords'].apply(lambda x: peng(x))
#這里用python處理當(dāng)是練習(xí)了盒蟆,其實(shí)用tablea的創(chuàng)建組方法能非常簡單的處理好
#輸出
if_novel.to_csv('if_novel.csv',index=False)

接下來用非常好玩的tableau探索數(shù)據(jù)

tableau交互可視化的鏈接https://public.tableau.com/profile/.5458#!/vizhome/1_2734/Q1

參考資料 melt的官方文檔https://pandas.pydata.org/pandas-docs/stable/generated/pandas.melt.html
以及tableau的官網(wǎng)教程

來幾張工作儀和story

圖片 1.png
圖片 2.png
圖片 3.png
圖片 4.png
圖片 5.png
6.png
7.png

以下進(jìn)行的是嘗試把四個文件合并到一起的方式·

df_genres=df['genres'].str.split('|',expand=True)
df_genres.info()

df_genres['id']=df['id']
df_genres['production_companies']=df['production_companies']
df_genres['keywords']=df['keywords']
#df.merge(df_genres).info()
df_pro=pd.melt(df_genresed,id_vars=['production_companies','id','keywords'],value_vars=[0,1,2,3,4],
               value_name='genres').drop('variable',axis=1).dropna()

df_product=df_pro['production_companies'].str.split('|',expand=True)
df_product['id']=df_pro['id']
df_product['genres']=df_pro['genres']
df_product['keywords']=df_pro['keywords']
df_genres_pro=pd.melt(df_product,id_vars=['id','genres','keywords'],value_vars=[0,1,2,3,4],
                      value_name='production_companies').drop('variable',axis=1).dropna()
df_k_g_p=df_genres_pro['keywords'].str.split('|',expand=True)

df_k_g_p['id']=df_genres_pro['id']
df_k_g_p['genres']=df_genres_pro['genres']
df_k_g_p['production_companies']=df_genres_pro['production_companies']

ddd=pd.melt(df_k_g_p,id_vars=['id','genres','production_companies'],value_vars=[0,1,2,3,4],
            value_name='keywords').drop('variable',axis=1).dropna()
ddd.info()
ddd.head()

movie=df

merged_split
split_companies=movie['keywords'].str.split('|',expand=True)
split_companies['id']=movie['id']
merged_split=movie.merge(split_companies)
key_df=pd.melt(merged_split,id_vars=['id','revenue','budget','release_date','genres','production_companies'],value_vars=[0,1,2,3,4],value_name='keyword').drop('variable',axis=1).dropna()

split_companies=movie['keywords'].str.split('|',expand=True)
split_companies['id']=movie['id']
merged_split=movie.merge(split_companies)
key_df=pd.melt(merged_split,id_vars=['id','revenue','budget','release_date','genres','production_companies'],value_vars=[0,1,2,3,4],value_name='keyword').drop('variable',axis=1).dropna()

split_companies=key_df['production_companies'].str.split('|',expand=True)
split_companies['id']=key_df['id']
# merged_split=key_df.merge(split_companies,on='id',how='left')
merged_split=key_df.merge(split_companies)
pp=pd.melt(merged_split,id_vars=['id','release_date','genres','keyword','revenue','budget'],value_vars=[0,1,2,3,4],value_name='production_company').drop('variable',axis=1).dropna()

movie=df.drop(['imdb_id','popularity','vote_average','original_title','cast','homepage','director','tagline','overview','runtime','vote_count','release_year','budget_adj','revenue_adj'],axis=1)
split_companies=movie['keywords'].str.split('|',expand=True)
split_companies['id']=movie['id']
merged_split=movie.merge(split_companies)
key_df=pd.melt(merged_split,id_vars=['id','revenue','budget','release_date','genres','production_companies'],value_vars=[0,1,2,3,4],value_name='keyword').drop('variable',axis=1).dropna()

split_genres=key_df['genres'].str.split('|',expand=True)
split_genres['id']=key_df['id']
merged_split=key_df.merge(split_genres)
genre=pd.melt(merged_split,id_vars=['id','release_date','production_companies','keyword','revenue','budget'],value_vars=[0,1,2,3,4],value_name='genre').drop('variable',axis=1).dropna()
genred=genre[:10000]
split_companies=genred['production_companies'].str.split('|',expand=True)
split_companies['id']=genred['id']
#merged_split=genre.merge(split_companies)
merg=genred.merge(split_companies,on='id',how='left')
#merged_split[:1]
pp=pd.melt(merg,id_vars=['id','release_date','genre','keyword','revenue','budget'],value_vars=[0,1,2,3,4],value_name='production_company').drop('variable',axis=1).dropna()

pp.info()

movie=df.drop(['imdb_id','popularity','vote_average','original_title','cast','homepage','director','tagline','overview','runtime','vote_count','release_year','budget_adj','revenue_adj'],axis=1)


split_companies=movie['keywords'].str.split('|',expand=True)
split_companies['id']=movie['id']
split_companies
merged_split=movie.merge(split_companies)
key_df=pd.melt(merged_split,id_vars=['id','revenue','budget','release_date','genres','production_companies'],value_vars=[0,1,2,3,4],value_name='keyword').drop('variable',axis=1).dropna()
split_genres=key_df['genres'].str.split('|',expand=True)
split_genres['id']=key_df['id']
merged_split=key_df.merge(split_genres)
genre_dff=pd.melt(merged_split,id_vars=['id','release_date','production_companies','keyword','revenue','budget'],value_vars=[0,1,2,3,4],value_name='genre').drop('variable',axis=1).dropna()
genre_df=genre_dff[:10000]
split_companies=genre_df['production_companies'].str.split('|',expand=True)
split_companies['id']=genre_df['id']
merged_split=genre_df.merge(split_companies,on='id',how='left')
p=pd.melt(merged_split,id_vars=['id','release_date','genre','keyword','revenue','budget'],value_vars=[0,1,2,3,4],value_name='production_company').drop('variable',axis=1).dropna()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踏烙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子历等,更是在濱河造成了極大的恐慌讨惩,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒屯,死亡現(xiàn)場離奇詭異荐捻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寡夹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門处面,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人菩掏,你說我怎么就攤上這事魂角。” “怎么了智绸?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵野揪,是天一觀的道長访忿。 經(jīng)常有香客問我,道長斯稳,這世上最難降的妖魔是什么海铆? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮挣惰,結(jié)果婚禮上游添,老公的妹妹穿的比我還像新娘。我一直安慰自己通熄,他們只是感情好唆涝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唇辨,像睡著了一般廊酣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赏枚,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天亡驰,我揣著相機(jī)與錄音,去河邊找鬼饿幅。 笑死凡辱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的栗恩。 我是一名探鬼主播透乾,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼磕秤!你這毒婦竟也來了乳乌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤市咆,失蹤者是張志新(化名)和其女友劉穎汉操,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒙兰,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磷瘤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搜变。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采缚。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痹雅,靈堂內(nèi)的尸體忽然破棺而出仰担,到底是詐尸還是另有隱情糊识,我是刑警寧澤绩社,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布摔蓝,位于F島的核電站,受9級特大地震影響愉耙,放射性物質(zhì)發(fā)生泄漏贮尉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一朴沿、第九天 我趴在偏房一處隱蔽的房頂上張望猜谚。 院中可真熱鬧,春花似錦赌渣、人聲如沸魏铅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽览芳。三九已至,卻和暖如春鸿竖,著一層夾襖步出監(jiān)牢的瞬間沧竟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工缚忧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悟泵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓闪水,卻偏偏與公主長得像糕非,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子球榆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容