'用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表'

Python Excel 腳本語言 可視化技術 外星人玩Python 2019-09-10
"
"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .stack(dropna=False) ,把 apm 從列索引移回去行索引,dropna=False ,讓其保留 nan 的值。
  • 此時即可確保所有的教師都有上下午2行數據。
"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .stack(dropna=False) ,把 apm 從列索引移回去行索引,dropna=False ,讓其保留 nan 的值。
  • 此時即可確保所有的教師都有上下午2行數據。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


直接看可視化吧:

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .stack(dropna=False) ,把 apm 從列索引移回去行索引,dropna=False ,讓其保留 nan 的值。
  • 此時即可確保所有的教師都有上下午2行數據。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


直接看可視化吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 上圖可以看出來,n4 這教師是最多課時(20課時)
  • 大部分的教師都是上午比下午課時多(這很可能是因為本來下午的課時就比上午少啊)- 有4位教師只有下午有課。

再看看每天分別是哪位教師比較忙的。

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .stack(dropna=False) ,把 apm 從列索引移回去行索引,dropna=False ,讓其保留 nan 的值。
  • 此時即可確保所有的教師都有上下午2行數據。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


直接看可視化吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 上圖可以看出來,n4 這教師是最多課時(20課時)
  • 大部分的教師都是上午比下午課時多(這很可能是因為本來下午的課時就比上午少啊)- 有4位教師只有下午有課。

再看看每天分別是哪位教師比較忙的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • n4 這位教師星期二下午就完全沒有課時。

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼

"
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

請關注本號,後續會有更多相關教程。轉發本文並私信我"python",即可獲得按水平領域分類好的Python資料

系列文章

  1. "替代Excel Vba"系列(一):用Python的pandas快速彙總
  2. "Python替代Excel Vba"系列(二):pandas分組統計與操作Excel
  3. "Python替代Excel Vba"系列(三):pandas處理不規範數據

前言

上一節我們已經成功把一份教師課程表整理成規範的形式,本節我們就看一下怎麼利用這份數據得到一些信息。並且儘可能讓每個部分都有可視化輸出。

本文要點:

  • 使用 pandas 快速按需求做彙總整理。

注意:雖然本文是"Python替代Excel Vba"系列,但希望各位讀者明白,工具都是各有所長,選擇適合的工具,才是最好的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

案例

這次的數據是基於上一節已整理的教師課程表。如下圖:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 表中的一行表示 某一天的某課時是哪位教師負責的哪門科目。
  • 這裡的名字按照原有數據做了脫敏(teach 列)。

本文所用到的 pandas 技巧都在之前的章節已有詳細介紹,因此本文只對重點細節做講解


設定問題

本文的目標問題如下:

  • 科目的分配情況如何?
  • 教師的課時分配如何?

導入包

本文所需的包,安裝命令如下:

pip install pandas
pip install numpy
pip install pyecharts

建議你安裝 anaconda ,那麼最難安裝的 pandas 和 numpy 都不會是問題。

腳本中導入

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 本文使用 pyecharts 做可視化輸出

加載數據

代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次直接從 csv 文件讀取即可。

主科目佔比

要看主科目佔比,那麼首先根據科目劃分主次科目。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df['sj'].apply(lambda x: '語數英' if x in cond else '其他') ,根據科目列,劃分為"語數英"或"其他"
  • 把劃分結果添加的新列 sj_class 。

現在數據如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


現在可以看看主科目的數量。我們把彙總問題的主鍵列出,利用 pandas 的 groupby 方法即可快速做彙總。 如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • df.groupby(['sj_class']) ,按 sj_class 分組。
  • .size() ,即可求得每組的個數。這裡使用 count 也可以,但你會注意到使用 count ,pandas 會把所有列都進行計數。並且 count 會忽略 nan ,而 size 則不會。
  • .reset_index() ,調用 groupby 後,分組的 sj_class 會作為 index ,因此這裡只是把 sj_class 重新設置為列。

來看看實際佔比吧。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼


按班級看科目佔比

只是看整體的佔比情況不太可以瞭解數據。我們試試再深入一些維度去看看數據。 看看每個級別的主科目佔比情況。如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這次我們的彙總主鍵是 級別和主科目。
  • 可以看到其實與之前的流程基本一致,只是在分組時加上了 grade 字段。

看看圖表吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 可以看到五年級的語數英課時佔比最大(為什麼不是六年級的主科目佔比最大?)。
  • 七、八年級語數英沒有其他科目佔比大(初一初二語數英課時減少了?)。

教師分配情況

來個複雜一點的需求,看教師分配情況,我們設定如下要求:

  • 每位教師的上下午課時數量,並且按課時數量排序。
  • 每位教師每天的上下午課時數量,並且按課時數量排序。

首先,每位教師的上下午課時數量。主鍵是 教師和上下午。 代碼如下:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 分組彙總與之前的一致。只是主鍵不同而已。
  • res.groupby('teach')['value'].transform('sum') ,求出每位教師的總課時
  • res['total'].rank(ascending=False) ,做一個排名。

這裡重點說一下這段代碼:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 這裡為了做圖表,需要確保每位教師都有上午和下午2行數據。但實際數據中有些教師只有半天的課(如下圖的教師 n56)。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .set_index(['teach','apm']) ,先讓 teach 和 apm 做行索引。
  • 此時 apm 行索引中都有上午和下午的值。
  • .unstack() ,把 apm 從行索引移到列索引。那麼就會有 上午列 和 下午列。
  • 注意此時,如果一位教師只有下午的課,那麼此列他的值就為 nan。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


  • .stack(dropna=False) ,把 apm 從列索引移回去行索引,dropna=False ,讓其保留 nan 的值。
  • 此時即可確保所有的教師都有上下午2行數據。
用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


直接看可視化吧:

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • 上圖可以看出來,n4 這教師是最多課時(20課時)
  • 大部分的教師都是上午比下午課時多(這很可能是因為本來下午的課時就比上午少啊)- 有4位教師只有下午有課。

再看看每天分別是哪位教師比較忙的。

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表

  • n4 這位教師星期二下午就完全沒有課時。

上述2次彙總其實是可以定義為一個通用的方法。這裡是為了方便解析因此複製了2段差不多的代碼

用Python處理了數據還要導入Excel做圖表?直接Python做漂亮圖表


最後

本文重點

  • 從分析問題出提取主鍵,使用 groupby 即可快速得到數據。
  • 靈活運用 stack 與 unstack ,可以快速做一些數據增補。

[源碼地址](https://github.com/CrystalWindSnake/Creative/tree/master/python/excel_pandas/4)

請關注本號,後續會有更多相關教程。

"

相關推薦

推薦中...