'懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊'

Python Excel 文章 外星人玩Python 2019-09-09
"
"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?

現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?

現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 第一句主要是為了最後結果的標題與原數據標題一致而已
  • 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
  • .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
  • 第三句,只是把結果的數組變為一個 DataFrame
  • 至於最後的 dropna ,是把那些空行去掉

案例2:豎向堆疊

你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?

現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 第一句主要是為了最後結果的標題與原數據標題一致而已
  • 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
  • .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
  • 第三句,只是把結果的數組變為一個 DataFrame
  • 至於最後的 dropna ,是把那些空行去掉

案例2:豎向堆疊

你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?

現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 第一句主要是為了最後結果的標題與原數據標題一致而已
  • 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
  • .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
  • 第三句,只是把結果的數組變為一個 DataFrame
  • 至於最後的 dropna ,是把那些空行去掉

案例2:豎向堆疊

你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 這次還是先橫向轉換,而第二句代碼則是處理的關鍵
  • [arr[i::3] for i in range(3)],我們需要從橫向的結果每3行取出作為一個數組,進行3次,即可得到3個數組
  • np.vstack() ,通過 numpy 的 vstack 方法 把3個數組進行豎向堆疊。

直接看示意圖吧:

"
懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)

經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas

前言

Excel 是奇葩不規範數據的重災區,這主要是因為他有高度的靈活性,今天來看看一個多列堆疊問題。


案例1

公司一次線下促銷活動,讓運營部的小夥伴用 Excel 簡單記錄了商品數量,但是他們卻把3天的記錄分別記錄在不同的列上:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你心中期望的數據是這樣子的:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


現在你要做各種統計數據,3天的數據手工完成當然沒問題,但是如果是3個月的數據呢?

現在來看看,在 pandas 中怎麼簡單轉換成規範的2列數據:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 第一句主要是為了最後結果的標題與原數據標題一致而已
  • 關鍵是第二句,這裡直接使用 numpy 的 reshape 方法,即可完成需求。那麼裡面的 -1 與 2是啥意思?
  • .reshape(-1,2) ,其中的2就是2列,而 -1 是讓 numpy 你根據數據來計算最終的行數
  • 第三句,只是把結果的數組變為一個 DataFrame
  • 至於最後的 dropna ,是把那些空行去掉

案例2:豎向堆疊

你可能已經注意到,上面的結果是"橫向的"。也就是一行行掃過,轉換成2列。

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


但你可能希望轉換過程是豎向完成,這時我們可以這樣子做:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊

  • 這次還是先橫向轉換,而第二句代碼則是處理的關鍵
  • [arr[i::3] for i in range(3)],我們需要從橫向的結果每3行取出作為一個數組,進行3次,即可得到3個數組
  • np.vstack() ,通過 numpy 的 vstack 方法 把3個數組進行豎向堆疊。

直接看示意圖吧:

懂Excel就能輕鬆入門Python數據分析包pandas(十二):多列堆疊


你怎麼這次沒有給出 Excel 的解決方式啊?

  • 因為如果我用公式解決,又不能自動化,不夠靈活。
  • 如果我用 vba ,又要自己寫循環,太繁瑣了。

用 pandas 不就是為了既可自動化處理,又可以少寫點代碼嗎


總結

  • numpy 的 reshape 方法,可以快速把數組轉換成指定行數或列數
  • 用 -1 可以讓 numpy 自動計算行或列的數量

需要源碼的小夥伴請轉發本文並私信我"python"

如果希望從零開始學習 pandas ,那麼可以看看我的 pandas 專欄。

"

相關推薦

推薦中...