女朋友還是遊戲?一起來分析下游戲的開發與銷售情況
有人問:遊戲重要還是女朋友重要?
我想說,你是不是傻?遊戲沒了可以再下!
要是女朋友沒了……
就沒人會打擾你玩遊戲了,
哈哈哈哈哈哈哈哈哈哈!
大部分男生都喜歡遊戲,但對遊戲的瞭解卻不是很多,讓我們來分析一下“ 男生的女朋友——遊戲”。
資料中含有1980-2017年近40年各出版商發行的遊戲,在這份資料的基礎上分析一下哪些遊戲平臺和遊戲出版商實力更強?什麼遊戲型別是更受人們喜愛的?在不同地區遊戲的銷售概況是如何的?簡簡單單幾個步驟就足以得到答案!
這裡補充一句哈:本文在互動模式jupyter中完成!
1、匯入必須的庫
在對相關資料進行分析之前,先匯入必要的庫:
import pandas as pd import matplotlib.pyplot as plt import numpy as np #為了中文能正常顯示 from matplotlib import font_manager #讓圖片顯示在互動頁面 %matplotlib inline
2、程式碼正文
從csv檔案中匯入資料
pandas是作為Python進行資料分析的工具庫,含有大量簡單便捷的方法,在進行資料處理是實用性極強。其中read_csv方法能夠從csv檔案中讀取資料並儲存至DataFrame物件中,方法如下
#讀取csv檔案 df = pd.read_csv('vgsales.csv') #顯示檔案前5行 df.head()
結果如下:
資料清洗與整理
有爬蟲經驗的小夥伴應該清楚, 在爬取大量資料時,難免會有資料的缺失或者資料錯誤的情況出現,所以匯入資料後最關鍵的一步就是觀察資料是否有上述情況出現,清洗與整理後的資料分析出的結果更加準確。
常見的資料清洗方法有:填充缺失或錯誤資料或刪去含有缺失或錯誤資料的一行。本文采用後者,方法如下:
#檢查是否有缺失值,True表示含有缺失資料 df.isnull().any()
#刪去缺失值 df = df.dropna() df.info()
資料分析
第一個例項對遊戲平臺進行分析,因為資料比較龐大,所以我們只分析載有遊戲多於100的遊戲平臺。
首先根據DataFrame索引出遊戲平臺(Platform)這一列資料,然後使用value_counts()方法對遊戲平臺載有的遊戲統計,最後擷取出我們需要的資料。
#取載有遊戲多於100的遊戲平臺 pf = df['Platform'].value_counts().sort_values()#sort_values()為排列操作 pf = pf[pf>100] pf
#遊戲平臺名稱形成列表作為Y軸資料 pf_name = pf.index.tolist() #載有遊戲個數形成列表作為X軸資料 pf_number = pf.values.tolist() #建立畫布 fig,ax = plt.subplots(figsize = (16,10),dpi = 80) #y軸範圍 length = np.arange(len(pf_name)) #繪製條形圖 ax.barh(length,pf_number,tick_label = pf_name) #設定標題和標籤 ax.set_title("The top 20 of Platform",fontsize = 18) ax.set_xlabel("Number",fontsize = 16) #新增資料標籤 for a,b in zip(length,pf_number): ax.text(b+40,a-0.15,b,ha = "center",fontsize = 12) plt.savefig('E:/jupyter/result/Game_sale1.jpg') plt.show(
結果如下圖:
那如果我們想知道各個地區遊戲的銷售情況,該怎麼辦呢?
#檢視年份是否有不適合的值 df['Year'].value_counts().sort_index()
得到了如下銷售情況:
在看到年份的索引時,奇怪的出現了還未到的2020年,說明是資料錯誤,就需要對這一行資料進行清洗。方法如下:
df = df[~df["Year"].isin([2020.0])]#~表示取反 df['Year'].value_counts().sort_index()
敲黑板!這裡我們要獲取每一年的各個地區所有遊戲銷售額總值,我們就要用到cumsum這個方法——cumsum方法通俗說是一個累加和,注意紅框裡的資料,這裡是依據年份將每部遊戲的銷售額相加
#cumsum函式是累加和,即按照Year這一列,將相同年份的銷售額相加 df['sum_sales'] = df['Global_Sales'].groupby(df['Year']).cumsum() df['NA_sum_sales'] = df['NA_Sales'].groupby(df['Year']).cumsum() df['EU_sum_sales'] = df['EU_Sales'].groupby(df['Year']).cumsum() df['JP_sum_sales'] = df['JP_Sales'].groupby(df['Year']).cumsum() df['Other_sum_sales'] = df['Other_Sales'].groupby(df['Year']).cumsum() df.head(10)
得到如下結果:
用小腦瓜想一想,需要的資料是一年的總銷售額,所以只需要保留每一年最後一行的銷售額,這裡可以用drop_duplicates去重,並keep引數保留最後一行即可。
#去重——得到每年各個遊戲的銷售值 sale_df = df.drop_duplicates(subset=['Year'],keep='last') sale_df.head() #強制轉換型別 sale_df['Year'] = sale_df['Year'].astype(int) sale_df.head() #按照年份序列排序-升序(ascending調節升序或降序) sale_df = sale_df.sort_values(by="Year" , ascending=True) sale_df.head()
為了方便看到銷售額變化趨勢,我們繪出其變化曲線圖如下:
#繪製條形圖 my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc") #準備資料 y_1 = sale_df['sum_sales'].values.tolist() y_2 = sale_df['NA_sum_sales'].values.tolist() y_3 = sale_df['EU_sum_sales'].values.tolist() y_4 = sale_df['JP_sum_sales'].values.tolist() y_5 = sale_df['Other_sum_sales'].values.tolist() x_1 = sale_df['Year'].values.tolist() #x軸範圍 x = range(len(x_1)) #建立畫布 plt.figure(figsize=(20,10),dpi=80) #繪製折線圖,label為lengend的標籤 plt.plot(x,y_1,label = '全球') plt.plot(x,y_2,label = '北美') plt.plot(x,y_3,label = '歐洲') plt.plot(x,y_4,label = '日本') plt.plot(x,y_5,label = '其他') #調整x軸刻度 _xtick_labels = ['{}年'.format(i) for i in x_1] plt.xticks(list(x)[::3],_xtick_labels[::3],fontproperties = my_font,fontsize = 16) #填寫x,y軸標籤 plt.xlabel('年份',fontproperties = my_font,fontsize = 16) plt.ylabel('銷售額',fontproperties = my_font,fontsize = 16) plt.title('銷售額的變化曲線',fontproperties = my_font,fontsize = 18) #柵欄 plt.grid(alpha=0.5) plt.legend(prop = my_font,loc = 'upper left') plt.savefig('E:/jupyter/result/Game_sale2.jpg') plt.show()
得到銷售額的變化曲線:
接下來我們來了解一下世界前十的遊戲出版商。方法類似於第一個例項,請看註釋:
#獲取出版商前十 pb = df['Publisher'].value_counts().sort_values(ascending=False).head(10)#ascending可調整降序或升序 #設定畫布的尺寸 plt.figure(figsize=(8,8)) #將出版商的名字作為對應資料的標籤 labels = pb.index #準備資料 x = pb.values #繪製空心餅圖 x1 = [1,0,0,0,0,0,0,0,0,0]#用於空心 plt.pie(x , radius=1.0,pctdistance = 0.75,labels=labels,autopct='%1.1f%%') plt.pie(x1, radius=0.5,colors = 'w') plt.title('Top 10 of Publisher',fontsize = 16) plt.savefig('E:/jupyter/result/Game_sale3.jpg') plt.show()
世界前十遊戲出版商如下:
蘿蔔青菜各有所愛,每個人喜歡的都不一樣,遊戲也是如此,那麼什麼遊戲型別最受大眾喜愛呢?我們需要一個只包含遊戲型別和銷售額的DataFrame物件,先用sum()方法統計,後用loc索引即可。方法如下
#按照遊戲型別將每一處的銷售額相加 Group = df.groupby(['Genre']).sum().loc[:,'NA_Sales':'Other_Sales'] Group
得到如下喜好結果:
直觀顯示,繪製出不同遊戲型別的銷售額圖,看看小夥伴們喜歡什麼型別的遊戲!
#顯示中文 my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc") #建立畫布 plt.figure(figsize=(8, 12)) #x軸標籤 xlabel = ['NA_Sales','EU_Sales','JP_Sales','Other_Sales'] #y軸範圍與標籤 y = range(len(Group.index)) ylabel = Group.index #繪製熱力圖 plt.imshow(Group, interpolation='nearest', cmap=plt.cm.pink,aspect='auto')#cmap為熱力圖顏色變化 #調整x,y軸刻度 plt.xticks(list(range(4))[::1],xlabel[::1],fontproperties = my_font,fontsize = 12) plt.yticks(list(y)[::1],ylabel[::1],fontproperties = my_font,fontsize = 12) #設定x,y軸標籤 plt.xlabel('銷售額',fontproperties = my_font,fontsize = 14) plt.ylabel('遊戲型別',fontproperties = my_font,fontsize = 14) plt.colorbar(shrink=0.8)#改變Bar的長度 plt.title('The Heat Map of Sales',fontproperties = my_font,fontsize = 16) plt.savefig('E:/jupyter/result/Game_sale4.jpg') plt.show()
得到的銷售額情況如下,左邊座標表示不同遊戲型別,色度情況表示銷售量,顏色越淺表示銷量越高!
3、分析總結
透過以上資料分析及視覺化,我們終於得到了一些因吹斯汀的資訊,一起來看看吧!
- DS和PS遠超其他平臺位列前端
- 北美和歐洲是遊戲的主要市場,銷售額碾壓其他地區
- 《FIFA》《極品飛車》的出版商Electronic Arts(EA)一枝獨秀
- 動作、運動、射擊遊戲深受大眾喜愛,銷售額遠超其他型別遊戲
我要是有個女朋友,我絕對就不打遊戲了,哈哈哈哈哈!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2659925/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遊戲AI:AI的遊戲還是遊戲的未來遊戲AI
- 聊聊東南亞情況和遊戲發行遊戲
- 我的小專欄《 Swift 遊戲開發》開始創作啦~一起來用 Swift 寫遊戲吧!Swift遊戲開發
- 微信小遊戲開發(7)-支援情況和執行環境遊戲開發
- 盤點九款還沒發售的本世代遊戲遊戲
- 「王者榮耀」談未來遊戲發展:AI 已參與,雲遊戲還在探索遊戲AI
- 遊戲商業化與付費點:銷售手段和銷售工具(下篇)遊戲
- CEDEC 2020|日中游戲開發現況與日本未來展望
- 獨立遊戲開發者:目前獨立遊戲市場飽和靠打超低折銷售遊戲開發
- “香餑餑”Metaverse是資本的金錢遊戲還是未來發展主流?Metaverse遊戲
- 互動內容是娛樂的未來,還是遊戲的“附庸”?遊戲
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 有資金的情況下應該如何做好遊戲推廣 大企業營銷 遊戲引流 裂變遊戲
- 遊戲開發者的思考:什麼是遊戲設計的核心?遊戲開發遊戲設計
- 遊戲開發與設計遊戲開發
- 硬核潛入遊戲《野火》的高素質與銷售困境矛盾遊戲
- 馬蹄鏈互助遊戲開發詳情丨馬蹄鏈互助智慧合約遊戲系統開發(案例及分析)遊戲開發
- 區塊鏈遊戲到底是投資工具,還是遊戲?區塊鏈遊戲
- <開放世界>是國內遊戲界未來的發展方向?遊戲
- 活下來的 VR 遊戲開發者VR遊戲開發
- 想請問下游戲測試行業的大佬,遊戲測試開發,除了我下面提到的,還可以做些什麼來幫助測試團隊提升輸出質量與效率呢行業遊戲
- 出海遊戲與“外來”遊戲,如何立足遊戲市場遊戲
- 遊戲開發商與遊戲發行商如何保持良性關係?遊戲開發
- 遊戲的發展 雲遊戲 未來趨勢遊戲
- 來線下一起參與遊戲極限開發挑戰!全球遊戲創作節GGJ 2023 x CiGA 中國區報名開始!遊戲
- 是日漸式微還是捲土重來?猜不透的格鬥遊戲遊戲
- 雲遊戲與獨立遊戲的結合前景分析遊戲
- “遊戲中的遊戲世界”——遊戲副本的起源與發展史遊戲
- 被移動遊戲與主機遊戲越甩越遠,可PC遊戲還是“無所畏懼”遊戲
- 虐狗警告!法國遊戲開發者是怎麼做情侶RPG的?遊戲開發
- Epic遊戲商城數次促銷銷售額曝光遊戲
- NFT遊戲GameFi元宇宙(鏈遊遊戲)系統原始碼開發(詳情方案)遊戲GAM元宇宙原始碼
- 未來的遊戲形態是什麼樣的:多位開發者談五年後的遊戲行業遊戲行業
- 雜湊競猜遊戲開發示例丨Hash雜湊遊戲系統開發丨雜湊競猜遊戲詳情遊戲開發
- 做獨立遊戲,是瘋了還是傻了? 這位開發者想要用一款遊戲“參透”生命遊戲
- Axie Infinity遊戲系統開發(詳情介紹)丨Axie Infinity遊戲開發(原始碼功能)遊戲開發原始碼
- DAPP智慧合約互助遊戲開發詳情丨DAPP智慧合約互助遊戲系統開發技術分析及規則APP遊戲開發
- Facebook Instant Game 小遊戲測試上傳總是卡住,傳不上去的情況GAM遊戲