溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在jupyter中分析游戲的開發(fā)與銷售情況

發(fā)布時(shí)間:2021-12-21 10:41:00 來源:億速云 閱讀:132 作者:iii 欄目:編程語言

這篇文章主要講解了“怎么在jupyter中分析游戲的開發(fā)與銷售情況”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么在jupyter中分析游戲的開發(fā)與銷售情況”吧!

1、導(dǎo)入必須的庫(kù)

在對(duì)相關(guān)數(shù)據(jù)進(jìn)行分析之前,先導(dǎo)入必要的庫(kù):

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#為了中文能正常顯示
from matplotlib import font_manager
#讓圖片顯示在交互頁(yè)面
%matplotlib inline

2、代碼正文

從csv文件中導(dǎo)入數(shù)據(jù)

pandas是作為Python進(jìn)行數(shù)據(jù)分析的工具庫(kù),含有大量簡(jiǎn)單便捷的方法,在進(jìn)行數(shù)據(jù)處理是實(shí)用性極強(qiáng)。其中read_csv方法能夠從csv文件中讀取數(shù)據(jù)并保存至DataFrame對(duì)象中,方法如下

#讀取csv文件
df = pd.read_csv('vgsales.csv')
#顯示文件前5行
df.head()

結(jié)果如下:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

數(shù)據(jù)清洗與整理

有爬蟲經(jīng)驗(yàn)的小伙伴應(yīng)該清楚,在爬取大量數(shù)據(jù)時(shí),難免會(huì)有數(shù)據(jù)的缺失或者數(shù)據(jù)錯(cuò)誤的情況出現(xiàn),所以導(dǎo)入數(shù)據(jù)后最關(guān)鍵的一步就是觀察數(shù)據(jù)是否有上述情況出現(xiàn),清洗與整理后的數(shù)據(jù)分析出的結(jié)果更加準(zhǔn)確。

常見的數(shù)據(jù)清洗方法有:填充缺失或錯(cuò)誤數(shù)據(jù)或刪去含有缺失或錯(cuò)誤數(shù)據(jù)的一行。本文采用后者,方法如下:

#檢查是否有缺失值,True表示含有缺失數(shù)據(jù)
df.isnull().any()

怎么在jupyter中分析游戲的開發(fā)與銷售情況

#刪去缺失值
df = df.dropna()
df.info()

怎么在jupyter中分析游戲的開發(fā)與銷售情況

數(shù)據(jù)分析

第一個(gè)實(shí)例對(duì)游戲平臺(tái)進(jìn)行分析,因?yàn)閿?shù)據(jù)比較龐大,所以我們只分析載有游戲多于100的游戲平臺(tái)。

首先根據(jù)DataFrame索引出游戲平臺(tái)(Platform)這一列數(shù)據(jù),然后使用value_counts()方法對(duì)游戲平臺(tái)載有的游戲統(tǒng)計(jì),最后截取出我們需要的數(shù)據(jù)。

#取載有游戲多于100的游戲平臺(tái)
pf = df['Platform'].value_counts().sort_values()#sort_values()為排列操作
pf = pf[pf>100]
pf

怎么在jupyter中分析游戲的開發(fā)與銷售情況

#游戲平臺(tái)名稱形成列表作為Y軸數(shù)據(jù)
pf_name = pf.index.tolist()
#載有游戲個(gè)數(shù)形成列表作為X軸數(shù)據(jù)
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)
#設(shè)置標(biāo)題和標(biāo)簽
ax.set_title("The top 20 of Platform",fontsize = 18)
ax.set_xlabel("Number",fontsize = 16)
#添加數(shù)據(jù)標(biāo)簽
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(

結(jié)果如下圖:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

那如果我們想知道各個(gè)地區(qū)游戲的銷售情況,該怎么辦呢?

#查看年份是否有不適合的值
df['Year'].value_counts().sort_index()

得到了如下銷售情況:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

在看到年份的索引時(shí),奇怪的出現(xiàn)了還未到的2020年,說明是數(shù)據(jù)錯(cuò)誤,就需要對(duì)這一行數(shù)據(jù)進(jìn)行清洗。方法如下:

df = df[~df["Year"].isin([2020.0])]#~表示取反
df['Year'].value_counts().sort_index()

敲黑板!這里我們要獲取每一年的各個(gè)地區(qū)所有游戲銷售額總值,我們就要用到cumsum這個(gè)方法——cumsum方法通俗說是一個(gè)累加和,注意紅框里的數(shù)據(jù),這里是依據(jù)年份將每部游戲的銷售額相加

#cumsum函數(shù)是累加和,即按照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)

得到如下結(jié)果:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

用小腦瓜想一想,需要的數(shù)據(jù)是一年的總銷售額,所以只需要保留每一年最后一行的銷售額,這里可以用drop_duplicates去重,并keep參數(shù)保留最后一行即可。

#去重——得到每年各個(gè)游戲的銷售值
sale_df = df.drop_duplicates(subset=['Year'],keep='last')
sale_df.head()
#強(qiáng)制轉(zhuǎn)換類型
sale_df['Year'] = sale_df['Year'].astype(int)
sale_df.head()
#按照年份序列排序-升序(ascending調(diào)節(jié)升序或降序)
sale_df = sale_df.sort_values(by="Year" , ascending=True)
sale_df.head()

怎么在jupyter中分析游戲的開發(fā)與銷售情況

為了方便看到銷售額變化趨勢(shì),我們繪出其變化曲線圖如下:

#繪制條形圖
my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
#準(zhǔn)備數(shù)據(jù)
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的標(biāo)簽
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 = '其他')
#調(diào)整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軸標(biāo)簽
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()

得到銷售額的變化曲線:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

接下來我們來了解一下世界前十的游戲出版商。方法類似于第一個(gè)實(shí)例,請(qǐng)看注釋:

#獲取出版商前十
pb = df['Publisher'].value_counts().sort_values(ascending=False).head(10)#ascending可調(diào)整降序或升序
#設(shè)置畫布的尺寸
plt.figure(figsize=(8,8))
#將出版商的名字作為對(duì)應(yīng)數(shù)據(jù)的標(biāo)簽
labels = pb.index
#準(zhǔn)備數(shù)據(jù)
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()

世界前十游戲出版商如下:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

蘿卜青菜各有所愛,每個(gè)人喜歡的都不一樣,游戲也是如此,那么什么游戲類型最受大眾喜愛呢?我們需要一個(gè)只包含游戲類型和銷售額的DataFrame對(duì)象,先用sum()方法統(tǒng)計(jì),后用loc索引即可。方法如下

#按照游戲類型將每一處的銷售額相加
Group = df.groupby(['Genre']).sum().loc[:,'NA_Sales':'Other_Sales']
Group

得到如下喜好結(jié)果:

怎么在jupyter中分析游戲的開發(fā)與銷售情況

直觀顯示,繪制出不同游戲類型的銷售額圖,看看小伙伴們喜歡什么類型的游戲!

#顯示中文
my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
#建立畫布
plt.figure(figsize=(8, 12))
#x軸標(biāo)簽
xlabel = ['NA_Sales','EU_Sales','JP_Sales','Other_Sales']
#y軸范圍與標(biāo)簽
y = range(len(Group.index))
ylabel = Group.index
#繪制熱力圖
plt.imshow(Group, interpolation='nearest', cmap=plt.cm.pink,aspect='auto')#cmap為熱力圖顏色變化
#調(diào)整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)
#設(shè)置x,y軸標(biāo)簽
plt.xlabel('銷售額',fontproperties = my_font,fontsize = 14)
plt.ylabel('游戲類型',fontproperties = my_font,fontsize = 14)
plt.colorbar(shrink=0.8)#改變Bar的長(zhǎng)度
plt.title('The Heat Map of Sales',fontproperties = my_font,fontsize = 16)
plt.savefig('E:/jupyter/result/Game_sale4.jpg')
plt.show()

得到的銷售額情況如下,左邊坐標(biāo)表示不同游戲類型,色度情況表示銷售量,顏色越淺表示銷量越高!

怎么在jupyter中分析游戲的開發(fā)與銷售情況

感謝各位的閱讀,以上就是“怎么在jupyter中分析游戲的開發(fā)與銷售情況”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么在jupyter中分析游戲的開發(fā)與銷售情況這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI