快速提高Python數據分析速度的八個技巧

2021-02-13 Python愛好者社區

今天整理了幾個在使用python進行數據分析的常用小技巧、命令。記得搭配Pandas+Jupyter Notebook使用哦。


這個神器我們在之前的文章中就詳細講過,使用Pandas  Profiling可以在進行數據分析之前對數據進行快速預覽,拿我們使用過很多次的NBA數據集來說,導入數據集之後

import pandas as pd
import pandas_profiling
nba = pd.read_csv('nba_all_elo.csv') #導入數據

nba.profile_report()

可以看到,除了之前我們需要的一些描述性統計數據,該報告還包含以下信息:

類型推斷:檢測數據幀中列的數據類型。

要點:類型,唯一值,缺失值

分位數統計信息,例如最小值,Q1,中位數,Q3,最大值,範圍,四分位數範圍

描述性統計數據,例如均值,眾數,標準偏差,總和,中位數絕對偏差,變異係數,峰度,偏度

最常使用的值

直方圖

相關性矩陣

缺失值矩陣,計數,熱圖和缺失值樹狀圖

文本分析:了解文本數據的類別(大寫,空格),腳本(拉丁,西裡爾字母)和塊(ASCII)

上一個神器Pandas  Profiling可以快速幫助我們預覽數據,那麼這個神器cufflinks可以幫我們直接使用DataFrame快速繪製交互式圖表。就像seaborn封裝了matplotlib一樣,cufflinks在plotly的基礎上做了一進一步的包裝,方法統一,參數配置簡單。

對pandas熟悉的同學可能知道pandas可以直接調用.plot()繪圖,我們來看看


如果使用cufflinks來繪製,也是一行代碼

是不是交互式的圖表更得人心?當然還可以直接使用DataFrame繪製其他複雜的圖表

如果在數據分析工作中經常需要數據可視化的話就考慮使用cufflinks吧!


Magic命令是Jupyter notebook中的一組便捷功能,數熟練使用該命令可以解決數據分析中的一些常見問題。使用%lsmagic就可以查看所有的Magic命令,下面我們介紹幾個常用的

不知道大家有沒有經歷過在一個notebook中進行數據預處理數據清洗等相關工作,在另一個notebook中進行可視化相關工作,那麼怎樣在繪圖時直接調用另一個notebook中的數據呢?使用%store就可以輕鬆解決

%store 變量 #保存變量
%store -r 變量 #在另一個notebook中調用變量

在大型數據分析過程中,你是否遇到過忘記定義了哪些變量或者忘記某個變量是否賦值還是忘記了變量名甚至刪除了賦值語句。沒關係使用%who命令可以列出這個notebook中的全部變量

有時候我們寫了一大段代碼執行發現報錯,這時調試是比較痛苦的,那麼我們可以在新的一行中鍵入%debug並運行。這將打開一個交互式調試環境,它能直接定位到發生異常的位置。還可以檢查程序中分配的變量值,並在此處執行操作

notebook的magic命令還有很多就不一一介紹,如果感興趣可以自己查詢使用或者關注公眾號『早起python』後續文章。

Jupyter作為生成嵌入式代碼的優秀編輯器自帶了很多快捷鍵,熟練使用快捷鍵將會省去很多繁瑣的滑鼠點擊操作,可以使用Cmd + Shift + P或Ctrl + Shift + P在Linux和Windows上查看有哪些快捷鍵。

常用的比如

Tab : 代碼補全或縮進
Shift-Tab : 提示
Ctrl-] : 縮進
Ctrl-[ : 解除縮進
Ctrl-Home : 跳到單元開頭
Ctrl-Up : 跳到單元開頭
Ctrl-End : 跳到單元末尾
Ctrl-Down : 跳到單元末尾
Ctrl-Left : 跳到左邊一個字首
Ctrl-Right : 跳到右邊一個字首

pprint 是pretty printer 的縮寫,用來列印 Python 數據結構,與 print 相比,它列印出來的結構更加整齊,便於閱讀。



在使用python進行數據分析時,如果數據集中出現缺失值、空值、異常值,那麼數據清洗就是尤為重要的一步。因此掌握多種使用python處理異常值處理的方法,並在開始數據分析之前對異常值進行預處理會大大提升數據分析效率。例如,將丟失的數據替換為'*'。我們可以使用.fillna('*') 將所有缺失值替換為*,或者data.fillna(axis=1,method='ffill')來橫向/縱向用缺失值前面的值替換缺失值,那麼更多的異常值處理方法可以參閱python數據分析之清洗數據:缺失值處理

我們都知道在命令行執行python腳本可以使用python filename.py,而我推薦使用python -i filename.py去執行python腳本,因為這樣在腳本執行完畢之後,python不會退出編譯器。從而我們可以檢查變量的值或繼續進行操作。

而如果我們的代碼發生了報錯的話,該命令會直接定位到代碼發生異常的位置,然後我們可以更方便的去處理代碼,我們來看看

有時當我們使用pandas讀取的數據文件非常大的時候,如果直接一次性讀取全部數據會出現內存不夠用的情況,所以這時我們應該對該數據進行分批次讀取,並處理每一批次然後保存每一批次的結果,最後對全部批次結果進行匯總。

import pandas as pd
data = pd.read_csv("data.csv",chunksize=10000) #chunksize是每一批次處理的數量
result = [] #用於儲存結果
for chunk in data:
    #寫一個函數處理每一個批次
    filter_result = chunk_manipulate(chunk)
    result.append(filter_result)
#合併所有批次
df = pd.concat(result)

相關焦點

  • 【引體向上技巧.短期內快速提高3-5個的技巧】
    事先聲明,這裡討論的是在短期內提升引體向上3-5個的技巧,換言之,就是假設你已經具備了一定力量的前提下,倘若只能拉到一兩個,或者根本拉不上去
  • 提高SketchUp建模速度的技巧分享
    小吧將告訴你關於如何提高SketchUp建模速度的小技巧讓新手也能快速玩轉SU!
  • Python訓練營 | 數據分析實戰Kaggle鐵達尼號生還者預測
    如果你已經在入門訓練營中殺出一條血路,初步學習了python數據科學工具包,那麼這一次用一場Kaggle數據實戰,來實現全面進階叭!!學院全力籌備,用心打造,現在為大家打響寒假系列課程第一槍——進階版之數據實戰Kaggle實戰是全方位提高自己數據科學能力的最好方式,本次訓練營將會請來帥帥的Yiyu老師帶領大家挑戰經典Titanic數據集。
  • 發燙原因分析,快速替手機降溫10 個技巧
    有哪些可以防止手機溫度升高甚至發燙技巧,在這篇就要來教大家如何防止手機發燙,當手機溫度升高後可透過哪些方法降溫。NPU (神經網路引擎):專門用來處理大量神經網路算法和機器學習資料的處理器,像是能夠自動分析用戶行為、手機拍攝後藉由AI提升照片品質和識別裡面人臉和景物,全都是靠NPU來負責處理。IMC(記憶體控制器):用來管理記憶體進出的數據。ISP(影像訊號處理器):用來處理圖像傳感器的輸出數據,提供類似DSLR等級的最佳攝影品質及優化。
  • 舉個慄子!Tableau技巧(32):快速製作標靶圖(靶心圖)
    什麼情況下使用標靶圖?參照目標評估指標表現。本期《舉個慄子》,阿達要給大家分享的Tableau技巧是:快速製作標靶圖(靶心圖)。☝在使用Tableau過程中,你有什麼疑問或實操困難,可直接找阿達幫忙:    Email:ada@dkmeco.com、QQ:2851711779☝你還想了解哪些Tableau技巧,請直接微信留言☝投稿《舉個慄子》,請將文字內容和圖片發郵件至dkminfo@dkmeco.com如何快速找到往期【舉個慄子】
  • 【Python教程】pypal數據可視化
    , 包括例子一: 利用餅圖分析繪製圖靈編程俱樂部學員各星座人數比例12星座的比例例子二:利用折線圖分析希文小朋友,每科考試成績趨勢例子三:利用簡單直方圖展示擲骰子1000次6個面的出現次數例子四:豆豆小朋友吃飯不知道吃什麼?
  • 【Python教程】pygal數據可視化
    課程多數題目的解決方案都不是唯一的,這和我們在實際工作中的情況也是一致的。因此,我們的要求功能的實現,更是要多去思考不同的解決方案,評估不同方案的優劣,然後使用在該場景下最優雅的方式去實現。所以,我們列出的參考資料未必是實現需求所必須的。有的時候,實現題目的要求很簡單,甚至參考資料裡就有,但是背後的思考和親手去實踐卻是任務最關鍵的一部分。在學習這些資料時,要多思考,多提問,多質疑。
  • Python數據分析實戰(2)Python,Anaconda安裝
    (3)Mac系統 自帶python 2.7,可以執行brew install python安裝新版本。3.環境變量配置Windows系統需要配置環境變量。常見的conda命令和含義如下:命令含義conda命令conda –h查看幫助基於python3.6版本創建名為python36的環境conda create --name python36 python=3.6激活此環境activate python36(Windows)、source activate python36(linux
  • Python數據分析之時間序列的處理
    收錄於話題 #20天學會Python數據分析23個
  • datatable-讓Python數據分析更快 (101個高頻操作)
    之前分享過一篇👉誰是Python/R/Julia數據處理工具庫中的最強武器?,結果顯示呼聲很高的pandas性能並沒那麼優秀👇本文主角:Python的datatable,在一定程度上不乏為pandas有力競爭者,其模仿R中data.table的核心算法和接口,致力於更快的、處理size更大的數據。
  • 101個Python數據分析提速操作-基於datatable
    默存之前分享過一篇👉誰是Python/R/Julia數據處理工具庫中的最強武器?,結果顯示呼聲很高的pandas性能並沒那麼優秀👇本文主角:Python的datatable,在一定程度上不乏為pandas有力競爭者,其模仿R中data.table的核心算法和接口,致力於更快的、處理size更大的數據。
  • python數據科學系列:pandas入門詳細教程
    pandas,python+data+analysis的組合縮寫,是python中基於numpy和matplotlib的第三方數據分析庫,與後兩者共同構成了python數據分析的基礎工具包,享有數分三劍客之名。
  • 【視頻教程】0基礎入門PostgreSQL從數據管理到網絡分析丨城市數據派
    我們將了解時空數據的輸入輸出,如何開展空間管理,如何構建拓撲網絡,從而實現最短路徑分析及服務區域分析(DrivingDistance)等高級主題的全過程。全套視頻課程總時長:約140分鐘老師簡介:江蘇省中青年學術技術帶頭人某甲級測繪資質公司  總工程師武漢大學測繪遙感信息工程國家重點實驗室   博士寧波市規劃與地理信息中心高級工程師(2006~2015)地理信息技術作家、特約撰稿人發表論著:《ArcObjects開發基礎與技巧
  • 3個訓練技巧:快速提升速度、力量、耐力!!
    這種訓練強度比較大,類似於最大攝氧量訓練,因此比較適合有一定基礎的跑者,能有效提升跑步速度。短斜坡折返跑的速度較快,斜坡角度也較大,達到6-8%的傾斜角度。跑者可以以5K賽的速度進行8次90秒的訓練,也可以先以10K賽的速度進行3次90秒的跑步,然後速度逐漸加快,再分別進行3次60秒和3次45秒的跑步。
  • 教你提高打字速度小技巧
    對於大部分人來說,達到每分鐘200擊的速度不是高不可攀,但是將錯率控制在3‰就會淘汰大部分人。所以要強調提高速度應建立在準確的基礎上,急於求成欲速則不達。  2. 提高擊鍵的頻率  在訓練中我們常糾正每個人的擊鍵方法,反覆強調要彈擊不要按鍵,物理課講過「彈性碰撞」,去的快回來也快,我們提倡瞬間發力就是這個道理。
  • 豬臉識別(附數據集)
    ,這樣訓練數據集就完成了;訓練數據集:豬主體數據:8700張(1000 * 800左右大小),豬臉數據:4100(500 * 500左右大小),一共12800張圖像。(2)數據預處理: data argumentation。包括數據類型轉換(float32)、在圖像中按一定長寬比和面積比crop圖像區域、隨機左右翻轉、隨機顏色變換、擴大像素區間範圍。
  • 使用Python進行數據降維|線性降維
    直觀地好處是維度降低了,便於計算和可視化,其深層次的意義在於有效信息的提取綜合及無用信息的擯棄,並且數據降維保留了原始數據的信息,我們就可以用降維的數據進行機器學習模型的訓練和預測,但將有效提高訓練和預測的時間與效率。
  • 如何分析和提高(C/C++)程序的編譯速度?
    一個別人的vs 2010 的程序, 編譯, 加載數據, 運行, 需要個把小時。當改代碼然後再運行的時候,又要個把小時才能編譯看結果.這樣豈不是很浪費時間, 怎麼辦?這樣如何修改程序,怎麼提高效率啊?當我們遇到這樣情況的時候,是不是不知所措呢?怎麼防止遇到這樣的情況呢,我們來分析一下程序加速的一些方法。
  • 提高跑速訓練的10個技巧
    如果你剛剛開始跑步,至少得需要3到4個月的逐步訓練才能開始訓練速度。具體是什麼意思?你一周要有三到四次半小時的跑步,踏踏實實,沒有不適。         2、找到合適的訓練路線。避免交通事故和其他危險。還要避免快速下坡跑步。這看起來簡單,但實際上會讓肌肉很費力,還可能一下子使肌肉造成損傷。         3、考慮地面的狀況。草地和泥土小路很不錯,但更重要的是表面光滑。
  • 3 個 Python 編程小技巧
    今天分享 3 個 Python 編程小技巧,來看看你是否用過?4, 'a': 1, 'b': 3}如果在 Python2.x 中,需要這麼做:>>> z = dict(x, **y)>>> z{'a': 1, 'c': 4, 'b': 3}4、其他實用編程小技巧