當前位置:
首頁 >
女朋友还是游戏?一起来分析下游戏的开发与销售情况!
發布時間:2024/9/15
49
豆豆
生活随笔
收集整理的這篇文章主要介紹了
女朋友还是游戏?一起来分析下游戏的开发与销售情况!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、前言
你問我游戲重要還是女朋友重要?你是不是傻?游戲沒了可以再下!
要是女朋友沒了……就沒人會打擾你玩游戲了,
哈哈哈哈哈哈哈哈哈哈!大部分男生都喜歡游戲,但對游戲的了解卻不是很多,讓我們來分析一下“男生的女朋友——游戲”。數據中含有1980-2017年近40年各出版商發行的游戲,在這份數據的基礎上分析一下哪些游戲平臺和游戲出版商實力更強?什么游戲類型是更受人們喜愛的?在不同地區游戲的銷售概況是如何的?簡簡單單幾個步驟就足以得到答案:附上數據鏈接:https://www.kaggle.com/gregorut/videogamesales
注意:本文在交互模式jupyter中完成!
2、導入必須的庫
在對相關數據進行分析之前,先導入必要的庫:import?matplotlib.pyplot?as?plt
import?numpy?as?np
#為了中文能正常顯示
from?matplotlib?import?font_manager
#讓圖片顯示在交互頁面
%matplotlib?inline
3、代碼正文
從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
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()
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()
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()
得到的銷售額情況如下,左邊坐標表示不同游戲類型,色度情況表示銷售量,顏色越淺表示銷量越高!
4、分析總結
通過以上數據分析及可視化,我們終于得到了一些因吹斯汀的信息,一起來看看吧!DS和PS遠超其他平臺位列前端
北美和歐洲是游戲的主要市場,銷售額碾壓其他地區
《FIFA》《極品飛車》的出版商Electronic Arts(EA)一枝獨秀
動作、運動、射擊游戲深受大眾喜愛,銷售額遠超其他類型游戲
?長按識別,添加微信(添加人數較多,請耐心等待)
總結
以上是生活随笔為你收集整理的女朋友还是游戏?一起来分析下游戏的开发与销售情况!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 97 岁诺奖得主的励志人生:本科学文学,
- 下一篇: 有了这套模板,女朋友再也不用担心我刷不动