iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

我與熊貓Pandas相處的日子系列 第 15

Day15- 資料探索(8)統計方法

  • 分享至 

  • xImage
  •  

資料到手後,首先觀察資料的組成特性,除了先前提過的shape()、len()、describe(),來看看還有其他統計方法可以更了解資料特性。

匯入表格

import pandas as pd
data = [[8,7,6,5,4], [3,4,2,9,5], [4,6,7,2,8], [6,None,4,None,3], [2,7,6,3,9]]
df1=pd.DataFrame(data, index=['小明','小美','小英','小玉','小翔'], columns=['蘋果','芭樂','香蕉','橘子','檸檬'])
print(df1)

執行結果:
    蘋果   芭樂  香蕉   橘子  檸檬
小明   8  7.0   6  5.0   4
小美   3  4.0   2  9.0   5
小英   4  6.0   7  2.0   8
小玉   6  NaN   4  NaN   3
小翔   2  7.0   6  3.0   9

shape()回傳一個具有(列, 行)數量的tuple。

df1.shape

執行結果:
(5, 5)

DataFrame中資料總數(行列的乘積)。

df1.size

執行結果:
25

回傳軸數(若為series會回傳1,若為DataFrame則會回傳2)。

df1.ndim

執行結果:
2

len()->回傳列數

len(df1)

執行結果:
5

count()->DataFrame每一個欄位中,非缺失值的數量,並輸出一個以欄位名稱為索引的series。

df1.count()

執行結果:
蘋果    5
芭樂    4
香蕉    5
橘子    4
檸檬    5
dtype: int64

同樣的 min()、max()、mean()、median()、std()等統計方法,都會回傳一個以欄位名稱為索引的series。
最小值

df1.min()

執行結果:
蘋果    2.0
芭樂    4.0
香蕉    2.0
橘子    2.0
檸檬    3.0
dtype: float64

最大值

df1.max()

執行結果:
蘋果    8.0
芭樂    7.0
香蕉    7.0
橘子    9.0
檸檬    9.0
dtype: float64

平均數

df1.mean()

執行結果:
蘋果    4.60
芭樂    6.00
香蕉    5.00
橘子    4.75
檸檬    5.80
dtype: float64

標準差

df1.std()

執行結果:
蘋果    2.408319
芭樂    1.414214
香蕉    2.000000
橘子    3.095696
檸檬    2.588436
dtype: float64

describe()會回傳一個以統資料名稱作為索引的DataFrame,其預設為會忽略缺失值去做計算。
若使用T轉置來重排結果,可以在畫面將欄位名稱變索引,資料更清楚顯示。

df1.describe().T

執行結果:
	count	mean	std	min	25%	50%	75%	max
蘋果	5.0	4.60	2.408319	2.0	3.00	4.0	6.0	8.0
芭樂	4.0	6.00	1.414214	4.0	5.50	6.5	7.0	7.0
香蕉	5.0	5.00	2.000000	2.0	4.00	6.0	6.0	7.0
橘子	4.0	4.75	3.095696	2.0	2.75	4.0	6.0	9.0
檸檬	5.0	5.80	2.588436	3.0	4.00	5.0	8.0	9.0

若想知道describe()中四分位數外的其他分位數,可透過percentiles參數指定其他分位數,需指定介於0-1之間數值,以串列方式傳入。
找出每一欄位中前1%數值

df1.describe(percentiles=[.99]).T

執行結果:
	count	mean	std	min	50%	99%	max
蘋果	5.0	4.60	2.408319	2.0	4.0	7.92	8.0
芭樂	4.0	6.00	1.414214	4.0	6.5	7.00	7.0
香蕉	5.0	5.00	2.000000	2.0	6.0	6.96	7.0
橘子	4.0	4.75	3.095696	2.0	4.0	8.88	9.0
檸檬	5.0	5.80	2.588436	3.0	5.0	8.96	9.0

統計資料計算,皆為預設為會忽略缺失值去做計算。可將函式的參數skipna參數改為False,
則describe()計算統計資料將不會忽略缺失值,則沒有缺失值欄位才能回傳確切數字,若有缺失值則回傳NaN。
以max()為列

df1.max(skipna=False)

執行結果:
蘋果    8.0
芭樂    NaN
香蕉    7.0
橘子    NaN
檸檬    9.0
dtype: float64

今天先到這,連假愉快,月餅不要吃太多喔~ /images/emoticon/emoticon61.gif


上一篇
Day14- 資料探索(7)布林索引
下一篇
Day16- 資料探索(9)串連方法
系列文
我與熊貓Pandas相處的日子30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言