以前做實驗或看論文時,通常在看資料或進行資料處理前我可能會先大致瀏覽一下資料的輪廓,或許會把它排個序來看看有沒有特別大或小的值,或許會觀察一下資料裡是不是有某個名稱出現很多次之類的。以上這些行為在資料科學裡也會有,當資料量巨大的時候肯定不太適合一個一個慢慢觀察,所以可以借助Pandas裡的一些工具來協助。
不免俗地先建立一個適合接下來練習的dataframe,是台積電從2月3日至2月18日的每日收盤價和漲跌。
import pandas as pd
df = pd.DataFrame(
{
"date": ["114/02/03", "114/02/04", "114/02/05", "114/02/06",
"114/02/07", "114/02/10", "114/02/11", "114/02/12",
"114/02/13", "114/02/14", "114/02/17", "114/02/18"],
"price": ["1070.00", "1095.00", "1110.00", "1115.00",
"1125.00", "1105.00", "1110.00", "1100.00",
"1090.00", "1065.00", "1065.00", "1085.00"],
"change": ["-65", "+25", "+15", "+5", "+10", "-20",
"+5", "-10", "-10", "-30", "+25", "+15"]
}
)
取前幾列的資料進行觀察
head()
可以截取dataframe中的前幾列資料來進行觀察,預設是5列:
df.head()
head()預設是顯示前5列
當然,在括號中填入其他數字就能獲得不同列數的資料:
df.head(3)
在head()中輸入3,你就能得到前3列的資料
取倒數幾列的資料進行觀察
tail()
和head()
功能差不多,差別在tail()
是截取倒數幾列的資料。它的預設值同樣是5列,也能自由調整想觀察的列數。
df.tail()
tail()預設是顯示倒數5列
顯示dataframe的詳細資訊
df.info()
可以從輸出的結果看到有以下幾項資訊:
這些資訊可以讓我們對dataframe中的資料有個大致上的輪廓。
計算並呈現各項資料常用的統計值
當dataframe中同時有數值型 (Numerical)資料和和類別型 (Categorical)資料時,describe()
會預設處理數值型資料。
在我的dataframe中,price和change兩項資料在使用時應該會是以數值的型別在操作,所以我先用昨天學的方法把這兩項資料分別轉為float(浮點數)和int(整數):
df["price"] = df["price"].astype("float")
df["change"] = df["change"].astype("int")
然後再使用describe()
df.describe()
對於數值型資料,describe()
會幫我們計算出以下幾項常用的統計值:
各項資料究竟是集中或是分散?是常態分布或是偏重一邊?從這些統計值就可以大致上瞭解各項資料的狀況。
那類別型資料呢?
describe()
有一個參數include
可以選擇要處理的對象,以下是如何使用它來處理類別型資料:
df.describe(include=["O"])
# 也可以寫成下面這樣
df.descibe(include="object")
對於類別型資料,describe(include=["O"])
會得到以下幾項統計值:
從輸出結果來看,在date欄位中有12筆資料,這些資料每個都不同而且都只出現1次,而最上方的資料是114/02/03。
隨機取出幾列資料
預設是隨機取出1列資料,在括號中填入數字可以決定要隨機取出的資料列數,例如df.sample(5)
代表從df中隨機取出5列資料。
計算特定欄位中每個值出現的次數,並按照出現次數由多到少往下排列呈現。
df["date"].value_counts()
日期數量全部都是1好像不是個好例子
這個函數對類別型資料比較好用,可以馬上知道是哪個/些值的數量名列前茅。數值型資料雖然也能用value_counts()
,但採用describe()
來觀察平均數、標準差等常見的統計值顯然更好一些。
今天的內容在我之前直接拿Kaggle的鐵達尼號生存預測來看時就知道個大概了,但也是有一些不知道的,既然有不知道的那就值得學對吧!
感謝大家的閱讀!