成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實戰|Python數據分析可視化并打包

大數據 數據分析 后端
大家好,關于Python數據分析的工具我們已經講了很多了,相信一直關注的讀者對于Pandas、NumPy、Matplotlib的各種操作一定不陌生,今天我們就用一份簡單的數據來學習如何使用Python進行數據分析。

大家好,關于Python數據分析的工具我們已經講了很多了,相信一直關注的讀者對于Pandas、NumPy、Matplotlib的各種操作一定不陌生,今天我們就用一份簡單的數據來學習如何使用Python進行數據分析,本文主要涉及下面三個部分:

  • Pandas數據處理
  • Matplotlib繪圖
  • 利用pyinstaller將py文件打包為exe

雖然本文使用的數據(醫學相關)不會出現在你平時的工作學習中,但是處理的過程比如導入數據、缺失值處理、數據去重、計算、匯總、可視化、導出等操作卻是重要的,甚至還教你如何將程序打包之后對于重復的工作可以一鍵完成!

數據與需求說明

今天分享的案例來源于一個著名的實驗Cell Counting Kit-8。首先我們來看下原始數據:

 

實戰|Python數據分析可視化并打包

我們需要完成的工作主要有四塊:

  1. 去除各組所有重復中的最大值和最小值
  2. 所有數據根據D0的對應分組進行標準化
  3. 計算各組數據的均值和標準差表格:均值匯總表和均值-標準差匯總表
  4.  繪制折線圖

所以我們需要的結果應該是:在自己的桌面上建一個文件夾命名data,將原始數據data.xlsx放進去,之后運行完程序后文件夾會新增3個文件:

 

實戰|Python數據分析可視化并打包

而這三個文件就是我們需要的結果

均值匯總表

 

實戰|Python數據分析可視化并打包

均值-標準差匯總表

 

實戰|Python數據分析可視化并打包

折線圖

 

實戰|Python數據分析可視化并打包

現在我們就來講解如何實現。

代碼實現

首先導入庫并調用函數獲取桌面文件夾路徑并寫在全局

  1. import pandas as pd 
  2. import matplotlib.pyplot as plt 
  3. import os 
  4. import random 
  5. def GetDesktopPath(): 
  6.     return os.path.join(os.path.expanduser("~"), 'Desktop'
  7.  
  8. path = GetDesktopPath() + '/data/' 

導入原始數據并去除缺失值

  1. dat = pd.read_excel(path + 'data.xlsx'
  2.                     sheet_name=0, 
  3.                     header=None, 
  4.                     index_col=0) 
  5. dat = dat.dropna(how='any', axis=0) 

 

實戰|Python數據分析可視化并打包

獲取重復次數,分組個數和天數。原始數據有6天、5組、5次重復,雖然也可以直接使用這三個數據,但以后的實驗這三個可能會更改,為了讓代碼能夠復用,最好不要寫死

  1. # 獲取分組個數 
  2. ngroup = dat.index.value_counts().shape[0] 
  3. # 獲取列數即重復次數 
  4. nrep = dat.shape[1] 
  5. # 獲取天數(操作的批次數)即用總行數除以組數,用整除是為了返回int 
  6. nd = dat.shape[0] // ngroup 

去掉極大值和極小值。這里用的解決辦法是逐行升序排序,然后去掉第一個和最后一個數據,可以用apply+lambda處理

  1. df = dat.apply(lambda x: sorted(x)[1:nrep - 1], axis=1) 
  2.  
  3. df = df.to_frame(name='total'
  4. for i in range(nrep - 2): 
  5.     df[f'{i + 1}'] = df['total'].str[i] 
  6.  
  7. df.drop(columns=['total'], inplace=True

用匿名函數排序返回的是Series的升序列表,須有轉換回DataFrame再拆成三列,最后去掉原來返回那一列即可。因此有了如上代碼

 

實戰|Python數據分析可視化并打包

在常規列中添加分組信息和批次信息,便于后續做匯總表

  1. df['group'] = df.index 
  2.  
  3. day_lst = [] 
  4. for i in range(nd): 
  5.     day_lst.append(f'Day{i}'
  6. # 用列表推導式做列表內元素重復并添加新列 
  7. df['day'] = [i for i in day_lst for _ in range(ngroup)] 

效果如圖:

 

實戰|Python數據分析可視化并打包

根據D0的各組均值對所有數據標準化,可以簡單理解為DO批次5個組去除兩個極值后各求平均值,這5個批次的5個組各自除于D0對應組的均值)

  1. # 根據組數取出D0的所有行數,然后按行求均值,會自動忽略文本信息 
  2. mean_lst = df.iloc[0:ngroup, :].mean(axis = 1).tolist() 
  3.  
  4. # 由于接下來要按行進行迭代,且索引的分組信息已經有一個新列來表述,這里重置索引方便迭代 
  5. df.reset_index(drop=True, inplace=True
  6.  
  7. # 迭代的內容看起來復雜實際上不難 
  8. # 本質上就是將迭代行的數據和D0對應分組均值相除 
  9. for index, i in df.iterrows(): 
  10.     df.iloc[index, 0:nrep - 2] = i[0:nrep - 2] / mean_lst[index % ngroup] 

 

實戰|Python數據分析可視化并打包

標準化結束后即可獲取均值和標準差

  1. # 同樣mean和std均會忽略非數值列 
  2. # 謹慎一點用df['mean'] = df.iloc[:, 0:nrep - 2].mean(axis=1)也可以 
  3. df['mean'] = df.mean(axis=1) 
  4. df['std'] = df.std(axis=1) 
  5.  
  6. # 獲取最后四列 
  7. results = df.iloc[:, -4:] 

 

實戰|Python數據分析可視化并打包

制作數據透視表并導出

  1. # 用round保留4位有效數字 
  2. tb1 = pd.pivot_table(data=results, 
  3.                      index='group'
  4.                      columns='day'
  5.                      values='mean').round(4) 
  6.  
  7. tb2 = pd.pivot_table(data=results, 
  8.                      index='group'
  9.                      columns='day'
  10.                      values=['mean''std']).round(4) 
  11.  
  12. tb1.to_excel(path + '/result(mean).xlsx'
  13.              index=True
  14.              header=True
  15.  
  16. tb2.to_excel(path + '/result(mean+std).xlsx'
  17.              index=True
  18.              header=True

在Jupyter Notebook呈現結果如下,在Excel的呈現如本文開頭所示

 

實戰|Python數據分析可視化并打包

利用matplotlib畫圖,補充兩個細節,如果在Jupyter Notebook希望出圖需要加上如下代碼

  1. %matplotlib inline 

如果有中文字符需要呈現也同樣需要用代碼設置

  1. plt.rcParams['font.sans-serif'] = ['SimHei'

匯總表的索引(組名)可以用做圖像的標簽。而顏色和折線上標記樣式所用的測量是根據所需的個數隨機無放回抽樣

  1. group_lst = tb1.index.tolist() 
  2. colors = ['b''g''r''c''m''y'
  3. color_lst = random.sample(colors, ngroup) 
  4. markers = ['.'',''o''v''^''<''>'
  5.            '1''2''3''4''s''p''*''h''H''+''x''D''d'
  6. marker_lst = random.sample(markers, ngroup) 

最后的畫圖代碼:

  1. # 設置畫布大小 
  2. plt.figure(figsize=(8, 5)) 
  3.  
  4. for i in range(ngroup): 
  5.     plt.plot(tb1.iloc[i, :].tolist(), 
  6.              f'{color_lst[i]}{marker_lst[i]}-', lw=2) 
  7.  
  8. plt.xticks(range(0, nd), day_lst, fontsize=18) 
  9. plt.ylabel('Relative Cell Amount', fontsize=18) 
  10. plt.legend(group_lst, loc='best', fontsize=12) 
  11. # 讓圖像的顯示分布正常 
  12. plt.tight_layout() 
  13. # 保存一定要在調用展示之前 
  14. plt.savefig(path + "/折線圖.png"
  15. plt.show() 

exe打包

首先在命令行使用pip安裝pyinstaller

  1. pip install pyinstaller 

將完整代碼保存成py文件,這里我保存為cck8.py,然后放在桌面上data文件夾內,然后打開命令行,cd進入該文件夾,然后調用第二行命令即可以編譯成exe

  1. cd C:\Users\chenx\Desktop\data 
  2. pyinstaller --onefile --clean cck8.py 

當然第二行的命令可以自定義如添加圖標等等,這里不做介紹,有興趣的可以自己探索。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2023-11-24 14:02:00

Python數據分析

2018-12-03 16:50:23

數據可視化數據分析薪水

2017-01-12 17:28:59

數據分析數據可視化可視化

2017-03-09 09:54:13

分析數據可視化

2017-09-15 10:23:06

可視化Bug數據分析

2017-04-18 11:01:14

數據分析數據可視化

2019-09-02 15:40:25

可視化數據分析

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2023-08-28 16:19:32

2018-11-21 14:38:09

分析在數據電影

2021-10-11 08:04:22

Python數據行程

2021-09-03 08:58:00

數據分析可視化

2020-12-07 05:51:49

數據分析數據可視化數據科學

2024-07-01 08:51:19

可視化數據分析漏斗

2021-10-08 09:27:11

Python圖形化工具

2017-10-14 13:54:26

數據可視化數據信息可視化

2016-12-29 20:05:56

數據可視化大數據產品分析

2022-08-26 09:15:58

Python可視化plotly

2018-12-26 15:55:50

數據分析數據可視化圖表

2017-08-15 18:55:57

大數據數據可視化圖表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日干夜夜干 | 日韩视频在线免费观看 | 久久国产精品网 | 视频在线一区 | 精品无码久久久久久国产 | 日本大片在线播放 | 国产电影一区二区在线观看 | 午夜99| 日本免费一区二区三区四区 | 81精品国产乱码久久久久久 | 日本一区二区三区免费观看 | av播播| 久久久激情视频 | 亚洲资源在线 | av中文在线播放 | 天天综合天天 | 天天操夜夜操免费视频 | 男女啪啪高潮无遮挡免费动态 | 国产精品一区二区三区四区 | 午夜久久久久久久久久一区二区 | 精品视频久久久久久 | 中文字幕免费中文 | 亚洲一区二区视频 | 亚洲国产自产 | 日韩不卡一区二区 | 欧美日韩不卡合集视频 | 欧美黄在线观看 | 国产成人精品一区二三区在线观看 | 国产色 | 国产在线观看网站 | 久久久精彩视频 | 精品国产乱码久久久久久1区2区 | 亚洲天堂一区 | 成人毛片一区二区三区 | 亚洲精品久久久蜜桃 | 超碰激情| 亚洲三区在线观看 | 成人av影院 | 欧美日高清 | 欧美日韩一区在线观看 | 91社区在线高清 |