如何用 Python 轉換 Costco 數據?

0. 序言web


Costco 是全球第一家會員制的倉儲批發賣場,中文翻譯過來叫「開市客」或「好市多」,始創於 1976 年的美國加州,截止到 2019 年 1 月,有 736 家門店,9270 萬會員,年營業額 1310 億美圓,會員續費率 90%,全球擁有 24 萬名員工。app


2019 年 8 月 27 日,中國大陸第一家 Costco 在上海開業,由於人滿爲患,Costco 實行限流,將賣場人數控制在 2000 人之內,有人早上 4:30 就去排隊。ide


Costco 把零售效率作到極致,是零售企業學習的標杆。函數


做爲數據分析師,也要學習 Costco 死磕本身、爲用戶創造價值的精神。學習


下面,咱們從網上讀取一些 Costco 的股價數據,學習用 Python 對這些數據進行轉換,爲未來的數據分析作好準備。spa


首先,咱們從網頁中讀取Costco 的歷史股價數據。翻譯

v2-20f691e5500f13a2b8c8c9870a860833_720w.webp


而後,咱們對數據進行清洗,獲得一個乾淨整潔的數據表格。3d


v2-f7bd1391d682d8bff2ac5926e7a99e1c_720w.webp


接下來,咱們就能夠正式開始對數據進行轉換。orm


1. 如何轉換爲時間?字符串


使用 transform() 函數,結合 dateutil 模塊中的 parse() 函數,咱們能夠將字符轉換爲時間。


v2-3a8856819dff122523b2d6de18a42d6e_720w.webp


大部分常見的字符形式,均可以使用 parse() 進行轉換,例如:


v2-3ec31f063b278d6a9be0ded886126f18_720w.webp


須要注意的是,要防止出現意外狀況,例如:parse('80') 的結果是 1980 年的當前日期,若是這不是你想要的結果,那麼在轉換以前,建議把相應的字符串寫得更具體明確一些。


使用 pd.to_datetime() 函數,不只能將字符轉換爲時間,並且能將數值轉換爲時間,還能指定時間單位和起始日期等參數,例如:


v2-536462d859e27d40d58fc1489c2c184b_720w.webp


2. 如何轉換爲數值?


使用 pd.to_numeric() 函數,結合自由度比較高的 apply() 函數,咱們能夠實現將每一列都強制轉換爲數值,沒法轉換的元素用 nan 表示。



v2-9dd90aab8ca07707185a232f33015471_720w.webp


其中 errors='coerce' 是 pd.to_numeric() 函數的一個參數,若是把 coerce 替換爲 ignore,那麼將忽略沒法轉換的元素,讓其保持原樣。


v2-18744ce673b806b7dc16307189c842ed_720w.webp


3. 如何轉換爲字符?


使用 astype() 函數,咱們能夠實現數據類型的相互轉換。好比說,下面的代碼實現把數據框所有轉換爲字符型。


v2-3ddf8a470c32c8656555785965194feb_720w.webp


對於時間型的數據,咱們可使用 strftime() 函數,轉換爲指定的字符格式,例如:


v2-eb9a2cbf99fda59393427d721cae3c05_720w.webp


4. 如何轉換爲區間?


使用 pd.cut() 函數,咱們能夠將數值切割爲指定的區間,例如:


v2-53d4c534fcd765eb221c74ad1d22195f_720w.webp


其中 right = True 表明左開右閉,默認爲 False,即左閉右開。


咱們可使用 labels 參數,爲每一個區間指定想要顯示的內容,例如:


v2-6b3b0e7290f1f36fed5b94522e1ef74f_720w.webp


若是把 bins 參數定義爲一個整數,那麼數值將被切割爲等分的區間。



v2-7200a1218b680837dd7147b804e3a259_720w.webp



5. 如何作分組轉換?


結合使用 groupby() 和 transform() 函數,咱們能夠在行數保持不變的狀況下,對某列進行分組求和,例如:


v2-9c60dee592dcf3551a4a7af110e6c793_720w.webp


這樣分組轉換數據的好處是,可以方便地計算每一個數據對應各自分組的佔比。好比說,下面代碼的計算結果是:天天成交量佔當月總成交量的比例。


v2-f48d984a811bd8b7dfcd7e701e2e0d92_720w.webp



若是使用 apply() 函數,那麼返回結果會聚合成 5 行。


v2-c3fea1826efd31dd1e52b7f8b0ee08a0_720w.webp


如何使用 agg() 函數,那麼返回的結果也是聚合成 5 行,並且能夠同時應用多個函數。


v2-d959c72934f5422476c40ab70e3fa834_720w.webp


Pandas 從  0.25 版本開始,agg() 函數獲得加強,能夠對多個不一樣的列,應用不一樣的函數,並對聚合的結果進行自定義命名。


好比說,相似於 Excel 中經典的數據透視表功能,咱們可使用下面的代碼,實現按月份分組,同時對日期進行計數、對開盤價求平均值和最大值、對成交量求和。


v2-4a8c0f5a3741f420adac0e37f851a44a_720w.webp


能夠看出,與 Excel 相比,Python 的功能要強大不少,靈活運用相關函數,可以明顯提高數據分析的效率。


6. 如何標準化轉換?


爲了消除單位量綱的影響,讓不一樣變量之間可以進行對比分析,咱們能夠對數據進行標準化轉換,0-1 標準化是一種經常使用的標準化轉換的方法。好比說,下面的代碼實現了 Costco 開盤價的 0-1 標準化。


v2-08f49e2e6ddb226d96c3141380f4cfcd_720w.webp


通過 0-1 標準化轉換以後,原來的最小值變成 0,原來的最大值變成 1,其餘的值都變成了介於 0 到 1 之間的值。


7. 小結


最後,咱們仍是用一張思惟導圖,對轉換數據的方法作個小結。


v2-f6c26d7528eb014f27146e6c9a16d4ec_720w.webp

相關文章
相關標籤/搜索