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 的歷史股價數據。翻譯
而後,咱們對數據進行清洗,獲得一個乾淨整潔的數據表格。3d
接下來,咱們就能夠正式開始對數據進行轉換。orm
1. 如何轉換爲時間?字符串
使用 transform() 函數,結合 dateutil 模塊中的 parse() 函數,咱們能夠將字符轉換爲時間。
大部分常見的字符形式,均可以使用 parse() 進行轉換,例如:
須要注意的是,要防止出現意外狀況,例如:parse('80') 的結果是 1980 年的當前日期,若是這不是你想要的結果,那麼在轉換以前,建議把相應的字符串寫得更具體明確一些。
使用 pd.to_datetime() 函數,不只能將字符轉換爲時間,並且能將數值轉換爲時間,還能指定時間單位和起始日期等參數,例如:
2. 如何轉換爲數值?
使用 pd.to_numeric() 函數,結合自由度比較高的 apply() 函數,咱們能夠實現將每一列都強制轉換爲數值,沒法轉換的元素用 nan 表示。
其中 errors='coerce' 是 pd.to_numeric() 函數的一個參數,若是把 coerce 替換爲 ignore,那麼將忽略沒法轉換的元素,讓其保持原樣。
3. 如何轉換爲字符?
使用 astype() 函數,咱們能夠實現數據類型的相互轉換。好比說,下面的代碼實現把數據框所有轉換爲字符型。
對於時間型的數據,咱們可使用 strftime() 函數,轉換爲指定的字符格式,例如:
4. 如何轉換爲區間?
使用 pd.cut() 函數,咱們能夠將數值切割爲指定的區間,例如:
其中 right = True 表明左開右閉,默認爲 False,即左閉右開。
咱們可使用 labels 參數,爲每一個區間指定想要顯示的內容,例如:
若是把 bins 參數定義爲一個整數,那麼數值將被切割爲等分的區間。
5. 如何作分組轉換?
結合使用 groupby() 和 transform() 函數,咱們能夠在行數保持不變的狀況下,對某列進行分組求和,例如:
這樣分組轉換數據的好處是,可以方便地計算每一個數據對應各自分組的佔比。好比說,下面代碼的計算結果是:天天成交量佔當月總成交量的比例。
若是使用 apply() 函數,那麼返回結果會聚合成 5 行。
如何使用 agg() 函數,那麼返回的結果也是聚合成 5 行,並且能夠同時應用多個函數。
Pandas 從 0.25 版本開始,agg() 函數獲得加強,能夠對多個不一樣的列,應用不一樣的函數,並對聚合的結果進行自定義命名。
好比說,相似於 Excel 中經典的數據透視表功能,咱們可使用下面的代碼,實現按月份分組,同時對日期進行計數、對開盤價求平均值和最大值、對成交量求和。
能夠看出,與 Excel 相比,Python 的功能要強大不少,靈活運用相關函數,可以明顯提高數據分析的效率。
6. 如何標準化轉換?
爲了消除單位量綱的影響,讓不一樣變量之間可以進行對比分析,咱們能夠對數據進行標準化轉換,0-1 標準化是一種經常使用的標準化轉換的方法。好比說,下面的代碼實現了 Costco 開盤價的 0-1 標準化。
通過 0-1 標準化轉換以後,原來的最小值變成 0,原來的最大值變成 1,其餘的值都變成了介於 0 到 1 之間的值。
7. 小結
最後,咱們仍是用一張思惟導圖,對轉換數據的方法作個小結。