轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?
現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?
現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:
- 第一句主要是為了最後結果的標題與原數據標題一致而已
- 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
- .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
- 第三句,只是把結果的數組變為一個 DataFrame
- 至於最後的 dropna ,是把那些空行去掉
案例2:豎向堆疊
你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?
現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:
- 第一句主要是為了最後結果的標題與原數據標題一致而已
- 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
- .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
- 第三句,只是把結果的數組變為一個 DataFrame
- 至於最後的 dropna ,是把那些空行去掉
案例2:豎向堆疊
你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。
但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?
現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:
- 第一句主要是為了最後結果的標題與原數據標題一致而已
- 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
- .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
- 第三句,只是把結果的數組變為一個 DataFrame
- 至於最後的 dropna ,是把那些空行去掉
案例2:豎向堆疊
你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。
但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:
- 這次還是先橫向轉換,而第二句代碼則是處理的關鍵
- [arr[i::3] for i in range(3)],我們需要從橫向的結果每3行取出作為一個數組,進行3次,即可得到3個數組
- np.vstack() ,通過 numpy 的 vstack 方法 把3個數組進行豎向堆疊。
直接看示意圖吧:
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。
案例1
公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:
你心中期望的數據是這樣子的:
現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?
現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:
- 第一句主要是為了最後結果的標題與原數據標題一致而已
- 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
- .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
- 第三句,只是把結果的數組變為一個 DataFrame
- 至於最後的 dropna ,是把那些空行去掉
案例2:豎向堆疊
你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。
但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:
- 這次還是先橫向轉換,而第二句代碼則是處理的關鍵
- [arr[i::3] for i in range(3)],我們需要從橫向的結果每3行取出作為一個數組,進行3次,即可得到3個數組
- np.vstack() ,通過 numpy 的 vstack 方法 把3個數組進行豎向堆疊。
直接看示意圖吧:
你怎麼這次沒有給出 Excel 的解決方式啊?
- 因為如果我用公式解決,又不能自動化,不夠靈活。
- 如果我用 vba ,又要自己寫循環,太繁瑣了。
用 pandas 不就是為了既可自動化處理,又可以少寫點代碼嗎
總結
- numpy 的 reshape 方法,可以快速把數組轉換成指定行數或列數
- 用 -1 可以讓 numpy 自動計算行或列的數量
需要源碼的小夥伴請轉發本文並私信我"python"
如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。