dataframe 眾數的方法_學習數據分析數據方法論 [描述性統計分析]

7efa55762873ae42c2fe85f1cea93156.gif

數理統計:

數理統計是以概率論為基礎,研究社會和自然界中大量隨機現象數量變化基本規律的一種方法。分為:

  • 描述統計

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

  • 推斷統計

    (推斷統計是在描述統計的基礎上,根據樣本資料歸納出的規律性,對總體進行推斷和預測。)

6a8ba843952f5b580e8c8ff1efe7baa3.png

概念

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

在統計的過程中,通常會配合繪制相關的統計圖來進行輔助。

描述性統計所提取統計的信息,稱為統計量

統計量

  • 頻數與頻率

    (數據的頻數與頻率統計適用于類別變量)

    • 頻數

      (數據中類別變量每個不同取值出現的次數)

    • 頻率

      (每個類別變量的頻數與總次數的比值,通常采用百分數表示)

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

集中趨勢分析

  • 均值

    (即平均值,其為一組數據的總和除以數據的個數)

  • 中位數

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

  • 眾數

    (一組數據中出現次數最多的值)

  • 分位數

    (通過n-1個分位將數據劃分為n個區間,使得每個區間的數值個數相等,或近似相等。其中,n為分位數的數量。

    常用的分位數有四分位數與百分位數)

    以四分位數為例,通過3個分位,將數據劃分為4個區間

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

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

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

四分位值的計算

1.首先,計算四分位的位置

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

離散程度分析

  • 極差

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

  • 方差

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

    eb45d0535697bd57db078a7945358847.png

    5e9f0ee34ce6149d21273c7847faece5.png:數組中的每個元素

    8df2222d5b68692ce19f5c5d948a5352.png:數組中所有元素的均值

    706f48f7c85a4112a2286a07b6a02ca2.png:數組元素的個數

  • 標準差

    (方差的開方)

    dbe2e0bf40d1315d8c9448924d3b182c.png

分布形狀

  • 偏度

    (是統計數據分布偏斜方向和程度的度量,是統計數據分布非對稱程度的數字特征)

    • 如果數據對稱分布(例如正態分布) ? 偏度為0

    • 如果數據左偏分布 ? 偏度小于0

    • 如果數據右偏分布 ? 則偏度大于0

  • 峰度

    (是描述總體中所有取值分布形態陡緩程度的統計量,可理解為數據分布的高矮程度

    峰度的比較是相對于標準正態分布的)

    • 對于標準正態分布,峰度為0

    • 如果峰度大于0,則密度圖高于標準正態分布

      • 數據在分布上比標準正態分布密集,方差(標準差)較小

    • 如果峰度小于0,則密度圖低于標準正態分布

      • 數據在分布上比標準正態分布分散,方差(標準差)較大

變量

  • 類別變量

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

    • 無序類別變量

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

    • 有序類別變量

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

  • 數值變量

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

    • 連續變量

      (在一定區間內可以任意取值)

    • 離散變量

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

Q&A:

當數據中用0和1表示性別(或其他類別變量)時,此時0和1在實際意義上不做數值計算,應映射為類別變量。

均值、中位數與眾數:

  • 數值變量通常使用均值與中值表示集中趨勢

  • 類別變量通常使用眾數表示集中趨勢

  • 在正態分布下,三者是相同的。在偏態分布下,三者會有所不同

  • 均值使用所有的數據進行計算,因此容易受到極端值的影響

  • 中位數與眾數不受極端值的影響,因此會相對穩定

  • 眾數在一組數據中可能不是唯一的

三者的數量關系如下:

92af2ba26b07f606e418e4a8732bbffa.pngbb08d19416d65d898440ab8401cbc949.pnge69975027c1c2fb9c7ef533201d052cf.png

極差、方差與標準差:

  • 極差的計算非常簡單,但是極差沒有充分的利用數據信息

  • 方差(標準差)可以體現數據的分散性。方差(標準差)越大,數據越分散,方差(標準差)越小,數據越集中

  • 方差(標準差)也可以體現數據的波動性(穩定性)。方差(標準差)越大,數據波動性越大,方差(標準差)越小,數據波動性越小

  • 當數據較大時,也可以使用n代替n-1

代碼實現

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

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

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

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

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

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

輸出結果:

eb9aa43f41d9293c738d0da816cf8d69.png

#?將鳶尾花數據與對應的類型合并,組合成完整的記錄
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條數據

輸出結果:

4a082f1fff6a2f1601ac9a4de9c40a8e.png

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

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

輸出結果:

0ffdadfb7238ab4cac775fcd5928e7e1.png

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

#?計算花萼長度的中位數
median?=?data["sepal_length"].median()

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

#?方法二:使用scipy中的stats模塊獲取花萼長度的眾數
from?scipy?import?stats

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

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

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

輸出結果:

c98473453f46e09148da0bd440e302a0.png

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

#?計算四分位的索引(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轉換成整數類型
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()

輸出結果:

4a96ac7fb665b1f02088d27841bc33d1.png

#?index不為整數的情況
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)

#?使用該值臨近的兩個整數來計算四分位置
index?=?np.array([q1_index,?q2_index,?q3_index])

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

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

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

#?根據左右兩邊的整數,加權計算四分位數的值。權重與距離成反比
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()

輸出結果:

a5f60b09b42a18541e43194b94df3807.png

#?Numpy中計算分位數 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]))

輸出結果:

3ed7ddc5cc263d70c4ca4a059958a9b2.png

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

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

輸出結果:

feb290df2dac50d4ea3559b31c68afd4.png

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

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極差、方差以及標準差
#?計算極差
sub1?=?data["sepal_length"].max()?-?data["sepal_length"].min()
sub2?=?np.ptp(data["sepal_length"])?
#?pandas?新版本中無法使用ptp(),舊版本的可以使用如下
#?sub2?=?data["sepal_length"].ptp()

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

#?計算標準差
std?=?data["sepal_length"].std()
print(sub1,?sub2,?var,?std)

輸出結果:

e614b28ae65af15fa890af95a8006ebc.png

5偏度以及峰度
#?構造左偏分布數據
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)

#?構造右偏分布數據
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)

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

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

輸出結果:

6861fca679cfcfc68bfbc98f06eb76e2.png

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

輸出結果:

e7d821deb1eede83bacb2bed574070a3.png

學習課程:開課吧-大數據分析全棧課程

419dc813bc4e46ce17e481e796dc58fb.pngcdc5778e8080e8e07319072b12e426ee.png47d13efb96f29a75f67421f2a6d3f7f7.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397862.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言高級語言期中測試答案,上海理工大學C語言2011期中試題和答案

C語言2010/2011學年 第二學期 期中測試高級語言程序設計(C)試卷 A □BA1. 輸入一行字符&#xff0c;統計其中的英文字母個數。#include void main(){ char ch;int n0;printf(“Input a string:\n”);while(1){ chgetchar();if (ch \n ) break;if (ch> a && ch< z…

前端基礎進階(十):面向對象實戰之封裝拖拽對象

https://segmentfault.com/a/1190000012646488 https://yangbo5207.github.io/wutongluo/ 說明&#xff1a;此處只是記錄閱讀前端基礎進階的理解和總結&#xff0c;如有需要請閱讀上面的鏈接 1.如何讓元素動起來 要讓元素動起來就要修改元素的top、left 、translate 屬性。因為…

iOS - LocalCache 本地數據緩存

1、自定義方式本地數據緩存 1.1 自定義緩存 1 沙盒路徑下的 Library/Caches 用來存放緩存文件&#xff0c;保存從網絡下載的請求數據&#xff0c;后續仍然需要繼續使用的文件&#xff0c;例如網絡下載的離線數據&#xff0c;圖片&#xff0c;視頻文件等。該目錄中的文件系統不會…

如何構建ASP.NET MVC4JQueryAJaxJSon示例

背景&#xff1a; 博客中將構建一個小示例&#xff0c;用于演示在ASP.NET MVC4項目中&#xff0c;如何使用JQuery Ajax。 直接查看JSon部分 步驟&#xff1a; 1&#xff0c;添加控制器(HomeController)和動作方法(Index),并為Index動作方法添加視圖(Index.cshtml),視圖中HTML如…

echarts 有引導線和內部文字_點、線、面構圖的異同以及相互轉化

點、線、面構圖既有相似性&#xff0c;又有差異性。相似的是都有對齊、強調、群組、重復、突出層次的作用&#xff0c;不同的是點的特點是聚焦、線的特點是運動和方向性&#xff0c;面的特性是體量感、穩定性。點的情感最弱&#xff0c;線、面的情感要比點豐富。一、點、線、面…

c語言上機報告之水仙花數,C語言上機報告之水仙花數..doc

C語言上機報告之水仙花數.C語言程序設計上機報告課題名稱&#xff1a;水仙花數的算法院 (系)&#xff1a;工程學院專業班 級&#xff1a; 052126學生姓名&#xff1a; 喻培學 號&#xff1a; 20121004040指導教師&#xff1a; 熊慕舟2013年11月24日C語言上機報告之水仙花數上機…

《Python黑帽子:黑客與滲透測試編程之道》 Web攻擊

Web的套接字函數庫&#xff1a;urllib2 一開始以urllib2.py命名腳本&#xff0c;在Sublime Text中運行會出錯&#xff0c;糾錯后發現是重名了&#xff0c;改過來就好&#xff1a; #!/usr/bin/python #codingutf-8 import urllib2url "http://www.baidu.com"headers …

vCenter Converter Standalone使用文檔

文檔目的能夠使用vCenter Converter Standalone 將物理機操作系統遷移到虛擬機操作系統基礎知識vCenter Converter Standalone 能將物理機上的操作系統、VMware虛擬機上的操作系統或者Hype-V 上的虛擬機操作系統遷移到VMware上。系統環境操作系統&#xff1a;Windows Server 20…

1093芯片做正弦波逆變器_正弦波逆變器中的SPWM調制(鐘任生)

歡迎加入技術交流QQ群(2000人)&#xff1a;電力電子技術與新能源 905723370高可靠新能源行業頂尖自媒體在這里有電力電子、新能源干貨、行業發展趨勢分析、最新產品介紹、眾多技術達人與您分享經驗&#xff0c;歡迎關注我們&#xff0c;搜索微信公眾號&#xff1a;電力電子技術…

android 手機短信恢復,安卓手機短信刪除了怎么恢復?簡單恢復的方法

原標題&#xff1a;安卓手機短信刪除了怎么恢復&#xff1f;簡單恢復的方法安卓手機短信刪除了怎么恢復&#xff1f;手機短信是生活中不經常使用到&#xff0c;但是依然是十分重要的存在&#xff0c;因為我們現在比較喜歡用社交軟件與別人進行交流&#xff0c;但是在一些相對重…

Oracle-查看oracle是否有表被鎖

問題現象&#xff1a; 查看oracle是否有表被鎖 解決方法&#xff1a; select sid,serial#,program,terminal,username,b.object_id,c.object_name from v$session a, v$locked_object b, dba_objects c where a.sid b.session_id and b.object_id c.object_id;轉載于:http…

Python循環的一些基本練習

#1:# name input(請輸入你的身份)# if name egon:# print(--> 超級管理員)# elif name tom:# print(--> 普通管理員)# elif name jack,rain:# print(--> 業務主管)# elif name 其他:# print(--> 普通用戶)#2# today input(今天是星期幾&…

bash下個人習慣的一些文件設置

2019獨角獸企業重金招聘Python工程師標準>>> bash_profile export PATH/usr/local/bin:$PATH export EDITORviinputrc set editing-mode vi #set editing-mode emacs set show-all-if-ambiguous on set completion-ignore-case on set meta-flag on set conver…

docker打包鏡像上傳_Jenkins | 一鍵打包部署Spring Boot 應用的Docker鏡像

一、前言1、本文主要內容將在項目中實際使用到的相關東西整理記錄一波&#xff0c;同時可以方便其他同學在使用到的時候參考一下(自己也備忘)&#xff0c;有不對的地方&#xff0c;歡迎指出~~Docker部署SpringBoot 項目通用Dockerfile文件、腳本Jenkins新建任務圖文詳解3、本文…

android 發送短信 廣播 demo,向Android模擬器打電話發短信的簡單方法

在開發android應用程序時&#xff0c;有時候需要測試一下向android手機撥打電話發送短信時該應用程序的反應。譬如編寫一個廣播接收器&#xff0c;來提示用戶有短信收到或者處理短信&#xff0c;就需要向該手機發送短信來進行測試。這里介紹一種簡單的向android模擬器打電話發短…

android 隱藏鍵盤時ui延遲恢復,android 軟鍵盤的顯示與隱藏問題的研究

在android中&#xff0c;常常會和輸入法的軟件鍵盤交互。在Manifest文件中&#xff0c;系統給activity的一個屬性-windowSoftInputMode來控制輸入法的顯示方式。該屬性提供了Activity的window與軟鍵盤的window交互的方式。這里的屬性設置有雙方面的影響&#xff1a;1.軟鍵盤的顯…

天才基本法_《天才基本法》強推!年度神仙小說,看完這本書我竟然愛上了數學...

《天才基本法》——長洱小說文案元寶的書評這個真的是本年度的神仙小說&#xff0c;講述了女主回到少女時代&#xff0c;可以和他一直暗戀的數學天才重來一遍。女主讓男主改變了覺得她碌碌無為的看法&#xff0c;也改變了自己的人生。本書最大的主角其實是數學&#xff01;天知…

dataTables插件使用

引用文件 <!-- DataTables CSS --> <link rel"stylesheet" type"text/css" href"http://cdn.datatables.net/1.10.7/css/jquery.dataTables.css"><!-- jQuery --> <script type"text/javascript" charset"u…

一行代碼,發送郵件

朋友讓我給他媳婦兒肚子里的孩子想個名字 走的越來越快了&#xff0c;有天看到一個論點關于說地域會影響人的一輩子。其實想想的確有這個理兒&#xff0c;這使我想起來每天早上擠地鐵的時候&#xff0c;其中有一個A站的人總是特別彪悍的往里擠&#xff0c;但B站的人就是永遠不會…

js call,apply,bind三個方法的區別

相同點&#xff1a; 都是能夠改變this的指向 不同點&#xff1a; 1.call()&#xff1a;傳參方式跟bind一樣&#xff08;都是以逗號隔開的傳參方式&#xff09;&#xff0c;但是跟apply&#xff08;以數組的形式傳參&#xff09;不一樣&#xff0c; 2.bind(): 此方法應用后的情形…