在處理股票或財務資料的時候,我們常常會遇到一個小問題:數字欄位裡面帶有「千分位逗號」。
像是成交量 24,841,820,或價格 1,285,它們其實是「文字 (string)」,而不是「真正的數字 (int/float)」。
這樣的格式看起來比較容易閱讀,但在 數據分析或數學運算 時就會卡住。例如:
所以今天的重點,就是把這些「帶逗號的文字數字」清理乾淨,轉換成真正的數字格式。
我們先建立一個簡單的 DataFrame,模擬從網路上抓到的資料:
import pandas as pd
demo_df = pd.DataFrame({
'Price': ['1,285', '1,265.5'],
'Volume': ['24,841,820', '32,019,276']
})
print(demo_df)
輸出結果:
Price Volume
0 1,285 24,841,820
1 1,265.5 32,019,276
可以看到,這些數字都有逗號,看起來像數字,但實際上是 文字型態 (object)。
我們可以先用 str.replace(',', ''),把字串裡的逗號刪掉:
demo_df['Price'] = demo_df['Price'].str.replace(',', '')
demo_df['Volume'] = demo_df['Volume'].str.replace(',', '')
print(demo_df)
輸出結果:
Price Volume
0 1285 24841820
1 1265.5 32019276
現在看起來已經變成「純數字字串」,但仍然是文字型態。
接下來用 pd.to_numeric() 把欄位轉換成數字:
demo_df['Price'] = pd.to_numeric(demo_df['Price'])
demo_df['Volume'] = pd.to_numeric(demo_df['Volume'])
這樣 Price 就會自動變成 float(因為有小數點),
而 Volume 會變成 int(因為是整數)。
我們可以用 dtypes 來檢查欄位型態:
print(demo_df.dtypes)
結果會是:
Price float64
Volume int64
dtype: object
這就表示我們已經完成轉換,資料可以放心拿來做計算。
今天我們學會了如何清理數字欄位:
這個技巧在處理財務數據、股市資料、甚至一般的統計報表時都會用到,是非常實用的一步。
那今天先這樣。