您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么在jupyter中分析游戲的開發與銷售情況”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么在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()
得到的銷售額情況如下,左邊坐標表示不同游戲類型,色度情況表示銷售量,顏色越淺表示銷量越高!
感謝各位的閱讀,以上就是“怎么在jupyter中分析游戲的開發與銷售情況”的內容了,經過本文的學習后,相信大家對怎么在jupyter中分析游戲的開發與銷售情況這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。