日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析]

發(fā)布時(shí)間:2023/12/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)理統(tǒng)計(jì):

數(shù)理統(tǒng)計(jì)是以概率論為基礎(chǔ),研究社會(huì)和自然界中大量隨機(jī)現(xiàn)象數(shù)量變化基本規(guī)律的一種方法。分為:

  • 描述統(tǒng)計(jì)

    (描述統(tǒng)計(jì)的任務(wù)是搜集資料,進(jìn)行整理、分組,編制次數(shù)分配表,繪制次數(shù)分配曲線,計(jì)算各種特征指標(biāo),以描述資料分布的集中趨勢(shì)、離中趨勢(shì)和次數(shù)分布的偏斜度等。)

  • 推斷統(tǒng)計(jì)

    (推斷統(tǒng)計(jì)是在描述統(tǒng)計(jì)的基礎(chǔ)上,根據(jù)樣本資料歸納出的規(guī)律性,對(duì)總體進(jìn)行推斷和預(yù)測(cè)。)

概念

描述性統(tǒng)計(jì),就是從總體數(shù)據(jù)中提取變量的主要信息(總和、均值等),從而從總體層面上,對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)性描述。

在統(tǒng)計(jì)的過(guò)程中,通常會(huì)配合繪制相關(guān)的統(tǒng)計(jì)圖來(lái)進(jìn)行輔助。

描述性統(tǒng)計(jì)所提取統(tǒng)計(jì)的信息,稱為統(tǒng)計(jì)量

統(tǒng)計(jì)量

  • 頻數(shù)與頻率

    (數(shù)據(jù)的頻數(shù)與頻率統(tǒng)計(jì)適用于類別變量)

    • 頻數(shù)

      (數(shù)據(jù)中類別變量每個(gè)不同取值出現(xiàn)的次數(shù))

    • 頻率

      (每個(gè)類別變量的頻數(shù)與總次數(shù)的比值,通常采用百分?jǐn)?shù)表示)

e.g. 在n個(gè)變量中,類別變量a出現(xiàn)了m次(頻數(shù)),頻率為m/n

集中趨勢(shì)分析

  • 均值

    (即平均值,其為一組數(shù)據(jù)的總和除以數(shù)據(jù)的個(gè)數(shù))

  • 中位數(shù)

    (將一組數(shù)據(jù)升序排列,位于該組數(shù)據(jù)最中間位置的值。如果數(shù)據(jù)個(gè)數(shù)為偶數(shù),則取中間兩個(gè)數(shù)值的均值)

  • 眾數(shù)

    (一組數(shù)據(jù)中出現(xiàn)次數(shù)最多的值)

  • 分位數(shù)

    (通過(guò)n-1個(gè)分位將數(shù)據(jù)劃分為n個(gè)區(qū)間,使得每個(gè)區(qū)間的數(shù)值個(gè)數(shù)相等,或近似相等。其中,n為分位數(shù)的數(shù)量。

    常用的分位數(shù)有四分位數(shù)與百分位數(shù))

    以四分位數(shù)為例,通過(guò)3個(gè)分位,將數(shù)據(jù)劃分為4個(gè)區(qū)間

    • 第1個(gè)分位稱為1/4分位(下四分位)。數(shù)據(jù)中1/4的數(shù)據(jù)小于該分位值

    • 第2個(gè)分位稱為2/4分位(中四分位)。數(shù)據(jù)中2/4的數(shù)據(jù)小于該分位值

    • 第3個(gè)分位稱為3/4分位(上四分位)。數(shù)據(jù)中3/4的數(shù)據(jù)小于該分位值

四分位值的計(jì)算

1.首先,計(jì)算四分位的位置

(其中,位置index從0開(kāi)始,n為數(shù)組中元素的個(gè)數(shù))2.根據(jù)位置計(jì)算四分位值
⊙如果index為整數(shù)(小數(shù)點(diǎn)后為0),四分位的值就是數(shù)組中索引為index的元素
⊙如果index不為整數(shù),則四分位位置介于ceil(index)[向上取整]與floor(index)[向下取整]之間,根據(jù)這兩個(gè)位置的元素確定四分位值

離散程度分析

  • 極差

    (一組數(shù)據(jù)中,最大值與最小值之差)

  • 方差

    (一組數(shù)據(jù)中,每個(gè)元素與均值偏離的大小)

    :數(shù)組中的每個(gè)元素

    :數(shù)組中所有元素的均值

    :數(shù)組元素的個(gè)數(shù)

  • 標(biāo)準(zhǔn)差

    (方差的開(kāi)方)

分布形狀

  • 偏度

    (是統(tǒng)計(jì)數(shù)據(jù)分布偏斜方向和程度的度量,是統(tǒng)計(jì)數(shù)據(jù)分布非對(duì)稱程度的數(shù)字特征)

    • 如果數(shù)據(jù)對(duì)稱分布(例如正態(tài)分布) ? 偏度為0

    • 如果數(shù)據(jù)左偏分布 ? 偏度小于0

    • 如果數(shù)據(jù)右偏分布 ? 則偏度大于0

  • 峰度

    (是描述總體中所有取值分布形態(tài)陡緩程度的統(tǒng)計(jì)量,可理解為數(shù)據(jù)分布的高矮程度

    峰度的比較是相對(duì)于標(biāo)準(zhǔn)正態(tài)分布的)

    • 對(duì)于標(biāo)準(zhǔn)正態(tài)分布,峰度為0

    • 如果峰度大于0,則密度圖高于標(biāo)準(zhǔn)正態(tài)分布

      • 數(shù)據(jù)在分布上比標(biāo)準(zhǔn)正態(tài)分布密集,方差(標(biāo)準(zhǔn)差)較小

    • 如果峰度小于0,則密度圖低于標(biāo)準(zhǔn)正態(tài)分布

      • 數(shù)據(jù)在分布上比標(biāo)準(zhǔn)正態(tài)分布分散,方差(標(biāo)準(zhǔn)差)較大

變量

  • 類別變量

    (變量是一種分類,e.g. 顏色,性別,職位...)

    • 無(wú)序類別變量

      (無(wú)大小順序等級(jí)之分,又稱名義變量)

    • 有序類別變量

      (可按大小順序等級(jí)區(qū)分,又稱等級(jí)變量)

  • 數(shù)值變量

    (變量是一個(gè)具體的值,e.g. 1, 0.1...)

    • 連續(xù)變量

      (在一定區(qū)間內(nèi)可以任意取值)

    • 離散變量

      (按一定順序一一列舉,通常以整數(shù)位取值的變量)

Q&A:

當(dāng)數(shù)據(jù)中用0和1表示性別(或其他類別變量)時(shí),此時(shí)0和1在實(shí)際意義上不做數(shù)值計(jì)算,應(yīng)映射為類別變量。

均值、中位數(shù)與眾數(shù):

  • 數(shù)值變量通常使用均值與中值表示集中趨勢(shì)

  • 類別變量通常使用眾數(shù)表示集中趨勢(shì)

  • 在正態(tài)分布下,三者是相同的。在偏態(tài)分布下,三者會(huì)有所不同

  • 均值使用所有的數(shù)據(jù)進(jìn)行計(jì)算,因此容易受到極端值的影響

  • 中位數(shù)與眾數(shù)不受極端值的影響,因此會(huì)相對(duì)穩(wěn)定

  • 眾數(shù)在一組數(shù)據(jù)中可能不是唯一的

三者的數(shù)量關(guān)系如下:

極差、方差與標(biāo)準(zhǔn)差:

  • 極差的計(jì)算非常簡(jiǎn)單,但是極差沒(méi)有充分的利用數(shù)據(jù)信息

  • 方差(標(biāo)準(zhǔn)差)可以體現(xiàn)數(shù)據(jù)的分散性。方差(標(biāo)準(zhǔn)差)越大,數(shù)據(jù)越分散,方差(標(biāo)準(zhǔn)差)越小,數(shù)據(jù)越集中

  • 方差(標(biāo)準(zhǔn)差)也可以體現(xiàn)數(shù)據(jù)的波動(dòng)性(穩(wěn)定性)。方差(標(biāo)準(zhǔn)差)越大,數(shù)據(jù)波動(dòng)性越大,方差(標(biāo)準(zhǔn)差)越小,數(shù)據(jù)波動(dòng)性越小

  • 當(dāng)數(shù)據(jù)較大時(shí),也可以使用n代替n-1

代碼實(shí)現(xiàn)

import?numpy?as?np
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
import?seaborn?as?sns
from?sklearn.datasets?import?load_iris
import?warnings

#?設(shè)置seaborn繪圖的樣式
sns.set(style?=?"darkgrid")
plt.rcParams["font.family"]?=?"SimHei"?#?正常顯示中文標(biāo)簽
plt.rcParams["axes.unicode_minus"]?=?False?#?正常顯示負(fù)號(hào)

#?忽略警告信息
warnings.filterwarnings("ignore")

#?加載鳶尾花數(shù)據(jù)集
iris?=?load_iris()?#?dict[花萼的長(zhǎng)度,花萼的寬度,花瓣的長(zhǎng)度,花瓣的寬度]

# iris.data:鳶尾花數(shù)據(jù)集
# iris.target:每朵鳶尾花對(duì)應(yīng)的類別(三種類別,取值為0,1,2)
print(iris.data[0:10],iris.target[:10])?#?取前10條數(shù)據(jù)

# iris.feature_names:特征列的名稱
# iris.target_names:鳶尾花類別的名稱
print(iris.feature_names,iris.target_names)

輸出結(jié)果:

#?將鳶尾花數(shù)據(jù)與對(duì)應(yīng)的類型合并,組合成完整的記錄
data?=?np.concatenate([iris.data,?iris.target.reshape(-1,1)],?axis=1)?#?橫向拼接
data?=?pd.DataFrame(data,?columns=["sepal_length","sepal_width","petal_length","petal_width","type"])
data.sample(10)?#?任意取出10條數(shù)據(jù)

輸出結(jié)果:

iris.target.reshape(? -1,1) ?表示將一維數(shù)組轉(zhuǎn)為二維數(shù)組

1頻數(shù)與頻率#?計(jì)算鳶尾花數(shù)據(jù)中,每個(gè)類別出現(xiàn)的頻數(shù)
frequency?=?data["type"].value_counts()
print(frequency)
#?計(jì)算每個(gè)類別出現(xiàn)的頻率,通常使用百分比表示
percentage?=?frequency?*?100?/?len(data)
print(percentage)
#?繪制條狀圖
frequency.plot(kind="bar")

輸出結(jié)果:

2均值、中位數(shù)以及眾數(shù)#?計(jì)算花萼長(zhǎng)度的均值
mean?=?data["sepal_length"].mean()

#?計(jì)算花萼長(zhǎng)度的中位數(shù)
median?=?data["sepal_length"].median()

#?方法一:計(jì)算花萼長(zhǎng)度的眾數(shù)
s?=?data["sepal_length"].mode()
print(s)
#?注意:mode方法返回的是Series類型
mode?=?s.iloc[0]
print(mean,?median,?mode)

#?方法二:使用scipy中的stats模塊獲取花萼長(zhǎng)度的眾數(shù)
from?scipy?import?stats

stats.mode(data["sepal_length"]).mode

#?繪制數(shù)據(jù)的分布(直方圖+密度圖)
sns.distplot(data["sepal_length"])

#?繪制垂直線
plt.axvline(mean,?ls="-",?color="r",?label="均值")
plt.axvline(median,?ls="-",?color="g",?label="中位數(shù)")
plt.axvline(mode,?ls="-",?color="indigo",?label="眾數(shù)")
plt.legend()

輸出結(jié)果:

3分位數(shù)#?index為整數(shù)的情況
x?=?np.arange(10,19)
n?=?len(x)

#?計(jì)算四分位的索引(index)
q1_index?=?(n-1)?*?0.25
q2_index?=?(n-1)?*?0.5
q3_index?=?(n-1)?*?0.75
print(q1_index,?q2_index,?q3_index)

#?將index轉(zhuǎn)換成整數(shù)類型
index?=?np.array([q1_index,?q2_index,?q3_index]).astype(np.int32)
print(x[index])

plt.figure(figsize=(15,4))
plt.xticks(x)
plt.plot(x,?np.zeros(len(x)),?ls="",?marker="D",?ms=15,?label="元素值")
plt.plot(x[index],?np.zeros(len(index)),?ls="",?marker="X",?ms=15,?label="四分位置")
plt.legend()

輸出結(jié)果:

#?index不為整數(shù)的情況
x?=?np.arange(10,20)
n?=?len(x)
q1_index?=?(n-1)?*?0.25
q2_index?=?(n-1)?*?0.5
q3_index?=?(n-1)?*?0.75
print(q1_index,?q2_index,?q3_index)

#?使用該值臨近的兩個(gè)整數(shù)來(lái)計(jì)算四分位置
index?=?np.array([q1_index,?q2_index,?q3_index])

#?計(jì)算index左邊的整數(shù)值
left?=?np.floor(index).astype(np.int32)

#?計(jì)算index右邊的整數(shù)值
right?=?np.ceil(index).astype(np.int32)

#?獲取index的小數(shù)部分與整數(shù)部分(整數(shù)部分不使用,變量名用下劃線)?
weight,?_?=?np.modf(index)

#?根據(jù)左右兩邊的整數(shù),加權(quán)計(jì)算四分位數(shù)的值。權(quán)重與距離成反比
q?=?x[left]?*?(1-weight)?+?x[right]?*?weight
print(q)

plt.figure(figsize=(15,4))
plt.xticks(x)
plt.plot(x,?np.zeros(len(x)),?ls="",?marker="D",?ms=15,?label="元素值")
plt.plot(q,?np.zeros(len(q)),?ls="",?marker="X",?ms=15,?label="四分位置")
for?v?in?q:
????plt.text(v,?0.01,?s=v,?fontsize=15)
plt.legend()

輸出結(jié)果:

#?Numpy中計(jì)算分位數(shù) np.quantile(x,?q)/np.percentile(x,?q)
x?=?[1,?3,?10,?15,?18,?20,?23,?40]

print(np.quantile(x,?q=[0.25,?0.5,?0.75]))
print(np.percentile(x,?q=[25,?50,?75]))

輸出結(jié)果:

quantile與percentile都可以計(jì)算分位數(shù)
quantile方法中 q(要計(jì)算的分位數(shù))的取值范圍為[0,1]
percentile方法中 q 的取值范圍為[0,100]

#?Pandas中計(jì)算分位數(shù) s.describe(percentiles)
x?=?[1,?3,?10,?15,?18,?20,?21,?23,?40]
s?=?pd.Series(x)
print(s.describe())

輸出結(jié)果:

獲取四分之一分位的值的方法:

A. s.describe()[4]

B.?s.describe()["25%"]

C.?s.describe().iloc[4] (推薦使用)

D.?s.describe().loc["25%"](推薦使用)

E.?s.describe().ix[4]

F.?s.describe().ix["25%"]

4極差、方差以及標(biāo)準(zhǔn)差#?計(jì)算極差
sub1?=?data["sepal_length"].max()?-?data["sepal_length"].min()
sub2?=?np.ptp(data["sepal_length"])?
#?pandas?新版本中無(wú)法使用ptp(),舊版本的可以使用如下
#?sub2?=?data["sepal_length"].ptp()

#?計(jì)算方差
var?=?data["sepal_length"].var()

#?計(jì)算標(biāo)準(zhǔn)差
std?=?data["sepal_length"].std()
print(sub1,?sub2,?var,?std)

輸出結(jié)果:

5偏度以及峰度#?構(gòu)造左偏分布數(shù)據(jù)
t1?=?np.random.randint(1,?11,?size=100)
t2?=?np.random.randint(11,?21,?size=500)
t3?=?np.concatenate([t1,?t2])
left_skew?=?pd.Series(t3)

#?構(gòu)造右偏分布數(shù)據(jù)
t1?=?np.random.randint(1,?11,?size=500)
t2?=?np.random.randint(11,?21,?size=100)
t3?=?np.concatenate([t1,?t2])
right_skew?=?pd.Series(t3)

#?計(jì)算偏度
print(left_skew.skew(),?right_skew.skew())

#?繪制核密度圖
sns.kdeplot(left_skew,?shade=True,?label="左偏")
sns.kdeplot(right_skew,?shade=True,?label="右偏")
plt.legend()

輸出結(jié)果:

#?標(biāo)準(zhǔn)正態(tài)分布
standard_normal?=?pd.Series(np.random.normal(0,?1,?size=10000))
print("標(biāo)準(zhǔn)正態(tài)分布峰度:",?standard_normal.kurt(),?"標(biāo)準(zhǔn)差:",?standard_normal.std())
print("花萼寬度峰度:",?data["sepal_width"].kurt(),?"標(biāo)準(zhǔn)差:",?data["sepal_width"].std())
print("花瓣長(zhǎng)度峰度:",?data["petal_length"].kurt(),?"標(biāo)準(zhǔn)差:",?data["petal_length"].std())
sns.kdeplot(standard_normal,?label="標(biāo)準(zhǔn)正態(tài)分布")
sns.kdeplot(data["sepal_width"],?label="花萼寬度峰度")
sns.kdeplot(data["petal_length"],?label="花瓣長(zhǎng)度峰度")

輸出結(jié)果:

學(xué)習(xí)課程:開(kāi)課吧-大數(shù)據(jù)分析全棧課程

總結(jié)

以上是生活随笔為你收集整理的dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。