華文網

大學生戀愛情況分析

特別申明:

1、本資料來源於網路,且資料量較小,故分析結果可能不具有普遍性,對於結果大家瞭解一下即可,不需要太在意,重點是分析過程。

2、本文圖片較多,篇幅較長。

01|數據導入:

代碼部分:

%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

df=pd.read_csv("F:\datasciene\exercisedata\data.csv",encoding="gbk")

print df.columns#查看有哪些索引值

df.head(2)#顯示資料的前兩行,查看資料呈現方式

02|數據預處理:

1、查看是否具有缺失值

如果有缺失值,則進行缺失值處理,可以選擇填充或刪掉。通過下面的截圖看出沒有缺失值,所以我們就跳過這一步。

2、值替換

為了便於後續的研究,

需要把一些屬性值替換成機器容易識別的符號。

代碼部分:

df[u"性別"].replace([u"女",u"男"],["female","male"],inplace=True)#將性別男女替換成英文

df[u"年級"].replace([u"大一",u"大二",u"大三",u"大四"],["freshman","sophomore","junior","senior"],inplace=True)

df[u"眼鏡"].replace([u"戴眼鏡",u"不戴眼鏡"],["wear","not_wear"],inplace=True)

值替換根據需要隨時進行替換,有的一些屬性值可能剛開始沒想到會用到,在需要用的時候進行替換就可以。

03|描述性分析:

1、戀愛次數情況

代碼部分:

grouped=df.groupby([u'戀愛次數']).count()[u'年級']

print "平均戀愛次數:",df[u'戀愛次數'].mean()

print "戀愛次數的中位數:",df[u'戀愛次數'].median()

grouped.plot(kind="bar",color="gray",align='center')

plt.xlabel('Times')

plt.ylabel('counts(person)')

通過結果發現:

戀愛次數為1次的占比最多,其次是戀愛次數為0次的同學。

平均戀愛次數: 1.30034129693。

戀愛次數的中位數: 1.0。

2、被追人數情況:

代碼部分:

grouped1=df.groupby([u'被追人數']).count()[u'年級']

print "平均被追人數:",df[u'被追人數'].mean()

print "被追人數的中位數:",df[u'被追人數'].median()

grouped1.plot(kind="bar",color="gray",align='center')

plt.xlabel('Times')

plt.ylabel('counts(person)')

通過結果發現:

被追人數(次數)為0人的占比最多,其次是被追人數為1人的同學。

平均被追人數(次數): 2.87。

被追人數(次數)的中位數:2.0。

3、追求人數情況:

代碼部分:

grouped2=df.groupby([u'追過人數']).count()[u'年級']

print "平均追過人數:",df[u'追過人數'].mean()

print "追過人數的中位數:",df[u'追過人數'].median()

grouped2.plot(kind="bar",color="gray",align='center')

plt.xlabel('Times')

plt.ylabel('counts(person)')

通過結果發現:

追求人數(次數)為0人的占比最多,追求次數對應的人數一次遞減。

平均追求人數(次數):1.037。

追求人數(次數)的中位數:1.0。

04|探索性分析(1):

接下來探索一下戀愛情況與性別的關係,所以先確認一下樣本資料的男女比例是否一致。

結果顯示男女比例幾乎接近1:1,所以可以看成兩者的比例是一致的。

1、戀愛次數與性別的關係:

代碼部分:

grouped3=df.groupby([u'戀愛次數',u'性別']).count()[u'年級']

grouped3.plot(kind="bar",stacked="True",color=['r', 'g'],label=("female"))

plt.xlabel('Times&sex')

plt.ylabel('counts(person)')

plt.legend()

(0,female)表示戀愛0次中女性人數,其他類似。

通過結果發現:

戀愛次數為0—1次時,男性人數多於女性,但是戀愛次數為2次時,女性人數反超男性人數,戀愛次數為3次時,女性又低於男性,當戀愛次數為4次時,女性對應的人數是男性對應人數的4倍,戀愛次數為5次的人群中只有女性。

2、被追人數與性別的關係:

代碼部分:

grouped4=df.groupby([u'被追人數',u'性別']).count()[u"年級"]

grouped4.plot(kind="bar",stacked=True,color=['r', 'g'],label=("female"))

plt.xlabel('Times&sex')

plt.ylabel('counts(person)')

plt.legend()

通過結果發現:

男生中有34.7%未被人追過,女生中有16.7%未被人追過。

男生中被追為1次的人最多(除0次以外),而女生被追過5次的人最多。在被追次數為1-3次中,男生人數領先于女生,但是在4次以後,女生遙遙領先(除10次有個特殊點外,這個點可能是校草級別的人導致異常點出現的吧),由此可見,女生要麼被追人數很少,要麼就是同時被好多人追。(可能某個人在班裡或者系裡太出眾,最後一個班或者是一個系的人都追她)

3、追過人數與性別的關係:

代碼部分:

grouped5=df.groupby([u'追過人數',u'性別']).count()[u"年級"]

grouped5.plot(kind="bar",stacked=True,color=['r', 'g'],label=("female"))

plt.xlabel('Times&sex')

plt.ylabel('counts(person)')

plt.legend()

通過結果發現:

除了追過人數為0次時對應的女生人數要多於男生,追過次數為1-4次中男生對應的人數都要高於女生,而5次以後又被女生反超。

這個其實也是可以理解的,大部分女生相比于男生都比較害羞,不太好意思主動去追求,所以在1-4次時男生要明顯多於女生,但是也有一些比較open的女生,會在5次以後對應的人數多於男生。

04|探索性分析(2):

接下來探索一下戀愛次數為0的同學們都有什麼特徵,或者是影響戀愛次數的因素有哪些?

代碼部分:

zero=df[df[u"戀愛次數"]==0]#篩選出戀愛次數為0的同學

zero.head(2)

1、戀愛與男女比例關係:

有沒有可能是這個學校本身男女比例的問題導致單身的存在,接下來看看單身群體中男女比例結構。(有的學校男女比例7:1,會是影響戀愛次數的一個重要原因)

代碼部分:

grouped7=zero.groupby([u"性別"]).count()[u"年級"]

grouped7.plot(kind="bar",color="gray")

plt.xlabel('sex')

plt.ylabel('counts(people)')

通過結果發現:

通過柱狀圖可以看出,單身群體中,男女比例接近於1:1,看來男女本身比例問題這個原因可以排除。

2、戀愛與年級關係

代碼部分:

grouped8=zero.groupby([u"年級"]).count()[u"性別"]

grouped8.plot(kind="bar",color="gray")

plt.xlabel('grade')

plt.ylabel('counts(people)')

通過結果發現:

戀愛和年級還真有點關係,大二中戀愛次數人數最少,這可能是大二已經經歷了一年的大學生活,開始對這個學校慢慢熟悉起來,再加上也認識了一些人,具備了基礎條件,所以戀愛的就會多起來。

大三中戀愛次數為0的最多。

3、戀愛與追過和被追的關係:

代碼部分:

grouped9=zero.groupby([u"追過人數",u"被追人數"]).count()[u"性別"]

grouped9.plot(kind="bar",color="gray")

plt.xlabel('Active and passive')

plt.ylabel('counts(people)')

通過結果發現:

在戀愛次數為0的群體中,約一半的人追求人數和被追人數均為0,所以不主動可能至今是戀愛次數為0的主要原因吧。

還會有一些主動追求過兩次,被追求過10次這樣的群體存在,這種群體可能是本身條件很好,所以追求人數很多,但是擇偶標準也比較高,所以這麼多人追求,依然保持戀愛次數為0。

還有一些群體是主動追求過6、7次,被追求0次,戀愛次數依然為0。(好心疼他們)

4、戀愛次數與學生組織關係:

學生組織是我們結交人脈的一個重要管道,如果我們沒有加入學生組織,可能不會認識很多人,會沒有追求目標,這可能是戀愛次數為0的一個原因。具體看看。

代碼部分:

grouped10=zero.groupby([u"學生組織個數"]).count()[u"年級"]

grouped10.plot(kind="bar",stacked=True,color="gray")

plt.xlabel('counts')

plt.ylabel('counts(person)')

通過結果查看:

在戀愛次數為0的群體中,大部分人還是至少有參加一個學生組織的,只有10%左右的人沒有參加學生組織。所以可以排除這點原因。

5、戀愛與顏值的關係:

代碼部分:

grouped12=zero.groupby([u"顏值"]).count()[u"年級"]

grouped12.plot(kind="bar",stacked=True,color="gray")

print "戀愛次數為0對應的平均顏值:",zero[u"顏值"].mean()

plt.xlabel('Beauty')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體的平均顏值為5.5(滿分為10),眾數為5。

戀愛次數為0的人大部分顏值為中等水準,一部分是中等偏上,這一部分可能就是那些被追很多次,但是戀愛次數為0的人。

6、戀愛與身高的關係:

代碼部分:

age_train_p=zero[u"身高"]

ages=np.arange(150,200,10) #150~200歲,每10釐米一段(年齡最小153,最大為192)

age_cut=pd.cut(age_train_p,ages) #待分組值,分組條件

age_cut_grouped=age_train_p.groupby(age_cut).count()

age_cut_grouped.plot(kind="bar",color="gray")

plt.xlabel('height')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體中,大部分人的身高集中在(160,170),其次是(170,180)。個人覺得這個身高差不多了,所以就先判定戀愛次數與身高沒有關係。

7、戀愛與寢室舍友情況的關係:

代碼部分:

grouped13=zero.groupby([u"寢室同學情況"]).count()[u"年級"]

grouped13.plot(kind="bar",stacked=True,color="gray")

plt.xlabel('dorm_mate')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體中,大部分人的舍友也是單身,所以如果你想突破戀愛次數為0的記錄,不妨先讓你舍友脫單,這樣在一定程度上有助於你脫單。

End.

作者:張俊紅(中國統計網特邀認證作者)

http://www.itongji.cn

2、被追人數與性別的關係:

代碼部分:

grouped4=df.groupby([u'被追人數',u'性別']).count()[u"年級"]

grouped4.plot(kind="bar",stacked=True,color=['r', 'g'],label=("female"))

plt.xlabel('Times&sex')

plt.ylabel('counts(person)')

plt.legend()

通過結果發現:

男生中有34.7%未被人追過,女生中有16.7%未被人追過。

男生中被追為1次的人最多(除0次以外),而女生被追過5次的人最多。在被追次數為1-3次中,男生人數領先于女生,但是在4次以後,女生遙遙領先(除10次有個特殊點外,這個點可能是校草級別的人導致異常點出現的吧),由此可見,女生要麼被追人數很少,要麼就是同時被好多人追。(可能某個人在班裡或者系裡太出眾,最後一個班或者是一個系的人都追她)

3、追過人數與性別的關係:

代碼部分:

grouped5=df.groupby([u'追過人數',u'性別']).count()[u"年級"]

grouped5.plot(kind="bar",stacked=True,color=['r', 'g'],label=("female"))

plt.xlabel('Times&sex')

plt.ylabel('counts(person)')

plt.legend()

通過結果發現:

除了追過人數為0次時對應的女生人數要多於男生,追過次數為1-4次中男生對應的人數都要高於女生,而5次以後又被女生反超。

這個其實也是可以理解的,大部分女生相比于男生都比較害羞,不太好意思主動去追求,所以在1-4次時男生要明顯多於女生,但是也有一些比較open的女生,會在5次以後對應的人數多於男生。

04|探索性分析(2):

接下來探索一下戀愛次數為0的同學們都有什麼特徵,或者是影響戀愛次數的因素有哪些?

代碼部分:

zero=df[df[u"戀愛次數"]==0]#篩選出戀愛次數為0的同學

zero.head(2)

1、戀愛與男女比例關係:

有沒有可能是這個學校本身男女比例的問題導致單身的存在,接下來看看單身群體中男女比例結構。(有的學校男女比例7:1,會是影響戀愛次數的一個重要原因)

代碼部分:

grouped7=zero.groupby([u"性別"]).count()[u"年級"]

grouped7.plot(kind="bar",color="gray")

plt.xlabel('sex')

plt.ylabel('counts(people)')

通過結果發現:

通過柱狀圖可以看出,單身群體中,男女比例接近於1:1,看來男女本身比例問題這個原因可以排除。

2、戀愛與年級關係

代碼部分:

grouped8=zero.groupby([u"年級"]).count()[u"性別"]

grouped8.plot(kind="bar",color="gray")

plt.xlabel('grade')

plt.ylabel('counts(people)')

通過結果發現:

戀愛和年級還真有點關係,大二中戀愛次數人數最少,這可能是大二已經經歷了一年的大學生活,開始對這個學校慢慢熟悉起來,再加上也認識了一些人,具備了基礎條件,所以戀愛的就會多起來。

大三中戀愛次數為0的最多。

3、戀愛與追過和被追的關係:

代碼部分:

grouped9=zero.groupby([u"追過人數",u"被追人數"]).count()[u"性別"]

grouped9.plot(kind="bar",color="gray")

plt.xlabel('Active and passive')

plt.ylabel('counts(people)')

通過結果發現:

在戀愛次數為0的群體中,約一半的人追求人數和被追人數均為0,所以不主動可能至今是戀愛次數為0的主要原因吧。

還會有一些主動追求過兩次,被追求過10次這樣的群體存在,這種群體可能是本身條件很好,所以追求人數很多,但是擇偶標準也比較高,所以這麼多人追求,依然保持戀愛次數為0。

還有一些群體是主動追求過6、7次,被追求0次,戀愛次數依然為0。(好心疼他們)

4、戀愛次數與學生組織關係:

學生組織是我們結交人脈的一個重要管道,如果我們沒有加入學生組織,可能不會認識很多人,會沒有追求目標,這可能是戀愛次數為0的一個原因。具體看看。

代碼部分:

grouped10=zero.groupby([u"學生組織個數"]).count()[u"年級"]

grouped10.plot(kind="bar",stacked=True,color="gray")

plt.xlabel('counts')

plt.ylabel('counts(person)')

通過結果查看:

在戀愛次數為0的群體中,大部分人還是至少有參加一個學生組織的,只有10%左右的人沒有參加學生組織。所以可以排除這點原因。

5、戀愛與顏值的關係:

代碼部分:

grouped12=zero.groupby([u"顏值"]).count()[u"年級"]

grouped12.plot(kind="bar",stacked=True,color="gray")

print "戀愛次數為0對應的平均顏值:",zero[u"顏值"].mean()

plt.xlabel('Beauty')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體的平均顏值為5.5(滿分為10),眾數為5。

戀愛次數為0的人大部分顏值為中等水準,一部分是中等偏上,這一部分可能就是那些被追很多次,但是戀愛次數為0的人。

6、戀愛與身高的關係:

代碼部分:

age_train_p=zero[u"身高"]

ages=np.arange(150,200,10) #150~200歲,每10釐米一段(年齡最小153,最大為192)

age_cut=pd.cut(age_train_p,ages) #待分組值,分組條件

age_cut_grouped=age_train_p.groupby(age_cut).count()

age_cut_grouped.plot(kind="bar",color="gray")

plt.xlabel('height')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體中,大部分人的身高集中在(160,170),其次是(170,180)。個人覺得這個身高差不多了,所以就先判定戀愛次數與身高沒有關係。

7、戀愛與寢室舍友情況的關係:

代碼部分:

grouped13=zero.groupby([u"寢室同學情況"]).count()[u"年級"]

grouped13.plot(kind="bar",stacked=True,color="gray")

plt.xlabel('dorm_mate')

plt.ylabel('counts(person)')

通過結果查看可得:

戀愛次數為0的群體中,大部分人的舍友也是單身,所以如果你想突破戀愛次數為0的記錄,不妨先讓你舍友脫單,這樣在一定程度上有助於你脫單。

End.

作者:張俊紅(中國統計網特邀認證作者)

http://www.itongji.cn