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

數(shù)據(jù)來源于kaggle:https://www.kaggle.com/lava18/google-play-store-apps

數(shù)據(jù)主要包含了APP名稱昌粤、所屬類別、用戶評論數(shù)、評分我抠、價格、大小等某弦。這次的數(shù)據(jù)處理以及可視化由python完成途凫,這是我的第一個小項目垢夹,希望以后能夠做得更好。

首先導(dǎo)入相關(guān)的庫和數(shù)據(jù)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv('E:\PYTHON\google\google-play-store-apps\googleplaystore.csv')

隨后對數(shù)據(jù)進行清洗以及數(shù)據(jù)預(yù)處理

#首先去除重復(fù)數(shù)據(jù)
df.drop_duplicates(subset='App',inplace = True)
df = df[df['Android Ver'] != np.nan]
df = df[df['Android Ver'] != 'NaN']
df = df[df['Installs'] != 'Free']
df = df[df['Installs'] != 'Paid']
df = df.dropna(subset=['Type','Content Rating','Current Ver','Android Ver'])

作完這些步驟后用df.info()觀察只有rating存在缺失值了维费,暫且不動果元,先對特征進行預(yù)處理。
Installs中存在‘+’犀盟,‘而晒,’等符號需要去除并且轉(zhuǎn)化為數(shù)值型
Size中存在'Varies with device',‘M’阅畴,‘k’也需要去除倡怎,并且轉(zhuǎn)化為數(shù)值型
‘Price'中存在'$',需要去除并轉(zhuǎn)化為數(shù)值型

df.Reviews = df.Reviews.astype('int64')
df['Installs'] = df['Installs'].apply(lambda x :x.replace('+','') if '+' in str(x) else x)
df['Installs'] = df['Installs'].apply(lambda x : x.replace(',','') if ',' in str(x) else x)
df['Installs'] = df['Installs'].apply(lambda x : float(x))

df['Size'] = df['Size'].apply(lambda x : str(x).replace('Varies with device','NaN') if 'Varies with device' in str(x) else x)
df['Size'] = df['Size'].apply(lambda x : str(x).replace('M','') if 'M' in str(x) else x)
df['Size'] = df['Size'].apply(lambda x : float(str(x).replace('k',''))/1000 if 'k' in str(x) else x)
df['Size'] = df['Size'].apply(lambda x : float(x))

df['Price'] = df['Price'].apply(lambda x : str(x).replace('$','') if '$' in str(x) else str(x))
df['Price'] = df['Price'].apply(lambda x :float(x))

對數(shù)據(jù)進行可視化展示贱枣,觀察總體的趨勢

labels = df['Type'].value_counts(sort=True).index
sizes = df['Type'].value_counts(sort=True)
explode = (0.1,0)
plt.pie(sizes,explode = explode,labels = labels,autopct='%1.1f%%',startangle=270)
plt.title('Payment category')
df_counts = df.groupby(['Category','Type']).size().unstack().sort_values(by = 'Free',ascending=False)
df_counts.plot.bar(figsize = (16,7))
plt.ylabel('Counts')
plt.legend(fontsize = 20)

df_counts['free_proportion'] = df_counts['Free']/(df['Type'].value_counts()['Free'])
df_counts['paid_proportion'] = df_counts['Paid']/(df['Type'].value_counts()['Paid'])
plt.figure(figsize=(16,7))
df_counts[['free_proportion','paid_proportion']].plot(kind='bar',figsize=(16,7))
image.png
image.png

image.png

觀察在是否付費的情況下各APP的數(shù)量情況
第一張圖:免費APP數(shù)量遠高于付費APP數(shù)量
第二張圖:FAMILY诈胜、GAME、TOOLS為免費APP數(shù)量的前三冯事,付費APP的數(shù)量與免費APP的數(shù)量有一定的相關(guān)性焦匈,通過計算是否付費情況下各類APP數(shù)量占總數(shù)的比值進行進一步觀察。
第三張圖:在付費APP中昵仅,F(xiàn)AMILY的比例仍然最高缓熟,GAME、TOOLS的比值也較高摔笤。值得注意的是MEDICAL够滑、PERSONALIZATION這類APP存在較多的付費類型,而BUSINESS類APP付費得較少吕世。

隨后來觀察下付費APP的價格分布情況

plt.figure(figsize=(16,7))
df[df.Type != 'Free']['Price'].plot(kind = 'hist',bins = 100)
plt.xlabel('Price')
image.png

價格大多數(shù)分布在50以內(nèi)彰触,甚至20。有少數(shù)大于350的命辖,我們來看看是什么

df_highprice =  df[df['Price'] > 350]
print(df_highprice.App)

4197 most expensive app (H)
4362 ?? I'm rich
4367 I'm Rich - Trump Edition
5351 I am rich
5354 I am Rich Plus
5356 I Am Rich Premium
5357 I am extremely Rich
5358 I am Rich!
5359 I am rich(premium)
5362 I Am Rich Pro
5364 I am rich (Most expensive app)
5366 I Am Rich
5369 I am Rich
5373 I AM RICH PRO PLUS
9917 Eu Sou Rico
9934 I'm Rich/Eu sou Rico/??? ???/我很有錢
這類APP的名字基本都是統(tǒng)一的况毅,只不過在全世界有不同語言的版本。這類APP的唯一用處就是證明下載這類APP的人是很有錢的人而已尔艇。
《I'm Rich》的功能非常單純尔许,甚至可以說沒有功能,在打開App 后终娃,你只會看到一顆發(fā)光的紅色鉆石:


image.png

接下來對rating(評分)進行分析味廊,首先要去除rating為空值的數(shù)據(jù),并結(jié)合下載量、評論數(shù)余佛、對應(yīng)人群進行分析

df_rating = df[df['Rating'].notnull()]
df_rating.loc[df['Installs'] < 101 ,'downloads'] = 'very low'
df_rating.loc[(df['Installs'] < 10001)&(df['Installs'] >= 101) ,'downloads'] = 'low'
df_rating.loc[(df['Installs'] < 1000001)&(df['Installs'] >= 1001) ,'downloads'] = 'mid'
df_rating.loc[(df['Installs'] < 10000001)&(df['Installs'] >= 1000001) ,'downloads'] = 'high'
df_rating.loc[(df['Installs'] < 1000000001)&(df['Installs'] >= 10000001) ,'downloads'] = 'very high'
g = sns.catplot(x='downloads',y='Rating',data = df_rating,kind='box',height=10,palette='Set1',order=['very high','high','mid','low','very low'])
g.despine(left=True)
g.set_ylabels('rating')
print(df_rating.groupby('downloads').mean()['Rating'])
df_rating.loc[df['Reviews'] < 101 ,'Number of comments '] = 'very low'
df_rating.loc[(df['Reviews'] < 10001)&(df['Reviews'] >= 101) ,'Number of comments '] = 'low'
df_rating.loc[(df['Reviews'] < 1000001)&(df['Reviews'] >= 1001) ,'Number of comments '] = 'mid'
df_rating.loc[(df['Reviews'] < 10000001)&(df['Reviews'] >= 1000001) ,'Number of comments '] = 'high'
df_rating.loc[(df['Reviews'] < 78158307)&(df['Reviews'] >= 10000001) ,'Number of comments '] = 'very high'

df_reviews = df_rating.groupby('Number of comments ')['Rating'].agg(['count','mean']).reset_index()
plt.figure(figsize = (16,7))
plt.bar(x=df_reviews['Number of comments '],height = df_reviews['mean'],width = 0.03,zorder = 1)
plt.scatter(df_reviews['Number of comments '],df_reviews['mean'],s =list((df_reviews['count'].values/3).astype(int)),color='red',zorder = 2,marker = '*')
plt.ylim(0,5)
plt.ylabel('Rating')
plt.xlabel('Number of comments :The of Red star indicates the number of comment')
df_reviews.sort_values('mean')
image.png

downloads rating
high 4.271049
low 4.088268
mid 4.119602
very high 4.353456
very low 4.421136

下載量越高柠新,APP的評分會更加趨于穩(wěn)定。在評分上辉巡,除了極少數(shù)下載量的APP恨憎,下載數(shù)越高,評分越高红氯,這是否可以間接說明框咙,下載量高的自然口碑也會好咕痛。

image.png

Number of comments count mean
1 low 1486 4.035599
4 very low 1906 4.091815
2 mid 4449 4.234390
3 very high 30 4.403333
0 high 319 4.428527

評論數(shù)集中100~1000001較多痢甘,并且數(shù)量與評分也存在一定聯(lián)系,評論數(shù)量越多的往往評分也相對較高茉贡。這些結(jié)果表明了塞栅,只要做出來APP能夠引起更多人的下載或者評論,往往評分口碑也越好腔丧,我們通撤乓看許多熱門APP看似罵的人挺多,其實是因為基數(shù)大而已愉粤。

讓我們來看看那些下載量高砾医,評論數(shù)高的APP

df_heat = df.loc[(df['Installs']>10000001)&(df['Reviews']>10000000),:]
g = df_heat.groupby('Category').size().sort_values(ascending=False)
plt.figure(figsize=(12,7))
plt.bar(g.index,g.values,color = 'c',edgecolor='black',width=0.5)
plt.xticks(rotation=90)
plt.ylabel('Counts')
plt.ylim(0,13)
#plt.grid(axis = 'y')
for a,b in zip(g.index,g.values):
    plt.text(a,b+0.3,b,ha='center')
plt.show()
#df_heat.to_csv()
image.png

image.png

這就是google app store大致的情況,第一次弄可能還缺少一些好的點子衣厘,分析脈絡(luò)也不清晰如蚜,下次整理得更規(guī)整再放上,先這樣開一個頭影暴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末错邦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子型宙,更是在濱河造成了極大的恐慌撬呢,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆兑,死亡現(xiàn)場離奇詭異魂拦,居然都是意外死亡,警方通過查閱死者的電腦和手機搁嗓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門晨另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谱姓,你說我怎么就攤上這事借尿。” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵路翻,是天一觀的道長狈癞。 經(jīng)常有香客問我,道長茂契,這世上最難降的妖魔是什么蝶桶? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮掉冶,結(jié)果婚禮上真竖,老公的妹妹穿的比我還像新娘。我一直安慰自己厌小,他們只是感情好恢共,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著璧亚,像睡著了一般讨韭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癣蟋,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天透硝,我揣著相機與錄音,去河邊找鬼疯搅。 笑死濒生,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幔欧。 我是一名探鬼主播罪治,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琐馆!你這毒婦竟也來了规阀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瘦麸,失蹤者是張志新(化名)和其女友劉穎谁撼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滋饲,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡厉碟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屠缭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箍鼓。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖呵曹,靈堂內(nèi)的尸體忽然破棺而出款咖,到底是詐尸還是另有隱情何暮,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布铐殃,位于F島的核電站海洼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏富腊。R本人自食惡果不足惜坏逢,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赘被。 院中可真熱鬧是整,春花似錦、人聲如沸民假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阳欲。三九已至舵盈,卻和暖如春陋率,著一層夾襖步出監(jiān)牢的瞬間球化,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工瓦糟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留筒愚,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓菩浙,卻偏偏與公主長得像巢掺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子劲蜻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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