標籤:

Python數據處理:關於Pandas你需要知道的都在這裡了

使用Python 處理數據

數據整理是數據科學研究流程中的一個重要步驟。本文要介紹的pandas就是一個廣受歡迎的數據整理庫。這個應用最早基於NumPy開發,那麼NumPy又是什麼東西?NumPy其實是Python里進行數學計算的基礎工具。Pandas庫提供了快速、簡捷、易懂的數據結構,簡化了數據整理步驟。

然而,pandas簡捷的數據結構並不是那麼容易上手。正因為pandas數據結構比較簡潔,所以許多常用的功能放置只能被在其他的函數當中。將這些極其常用的功能和數據本身進行了分離,這就是pandas剛開始不那麼容易上手的原因。對新手來說,需要找到一個好的學習的切入點。現在市面上有許多pandas學習資料,涵蓋了方方面面。但建議初學者列印一份pandas操作指南(或者叫它小抄)以備不時之需。

溫馨提示:帶好小抄再上路!

pandas操作指南

要在python裡面使用pandas,第一件要做的事情就是導入。首先你需要了解python裡面導入外部庫的規範。一般來說,導入的時候將pandas簡稱為pd。這樣的好處在於,在程序的任意位置,你都可以使用pd命令來調用pandas。

pandas數據結構

當你首先了解了如何導入pandas,你就可以開始了解pandas數據結構了。你可能會想,數據結構究竟是什麼東西?最簡單的答案是,當你有幾千幾萬個數據點時,每一個存放數據點的位置之間的排列關係就是數據結構。如果你懂得一些NumPy,你肯定會想到這些數據結構就是可以用數字索引的數列。進一步的解釋可以參考一個視頻,講述了pandas數據結構和NumPy數列之間的關係。

A Visual Guide To Pandas: youtube.com/watch?

pandas使用的數據結構基本上包括兩類:Series和DataFrames。一個Series可以看作一個一維的向量,每個元素根據其位置被標上一個數字,從0到n,n是這個向量的長度。使用pd.Series()函數可以創造一個Series。在括弧里你可以放一個list(python中最常見的數據結構),甚至你還可以加進去一個特定的索引數列。上圖展示了這個過程。

注意,你可以把任意一種數據放入Series中,可以是整數、字元串等等。

使用pd.DataFrames( )可以創建DataFrames,它至少包括兩列包含不同數據的Series。括弧中你可以放字典進去,然後加上一些數字索引來明確地指出列的元素。

輸入輸出

當你使用pandas進行數據整理的時候,自己手動輸入數據創造一個DataFrames並不是一個好選擇。你可以選擇直接從文件中導入數據,讓pandas自己創建DataFrames。這就是pandas的簡潔之處。

包含數據的文件有多種多樣的儲存形式,包括txt、csv、xlsx、SQL表格等。其中後三種將是你經常碰到的儲存形式。pandas針對這三種儲存方式,分別有一個對應的函數讓你導入:pd.read_csv(), pd.read_excel()和pd.read_sql( )。

pandas甚至有專門對應SQL資料庫查詢(query)文件的導入函數:pd.read_sql_query( )。to_sql( )函數可以同時應對SQL表格和搜索文件,但是它其實只是上面提到的後兩種函數的結合。使用to_sql( )函數時系統會自動探測文件類型,調用正確的函數。

當從python中輸出文件的時候,可以使用pd.to_csv( ), pd.to_excel()和 pd.to_sql()。

如何求助

help( )函數始終能夠方便地幫助你理解如何使用pandas函數。始終記住:當使用help( )函數的時候,盡量把你想了解的函數拼寫完整,然後把指令放在help函數的括弧裡面:

選擇特定的數據點

當你終於導入了外部的文件之後,你想進一步看看這些文件中的數據長什麼樣、結構如何時,你可以選擇特定的元素進行查看。提示一下,你還可以順便學習下NumPy中應該如何選取元素。

當然,pandas選擇的過程和NumPy選擇元素的過程很相似。如果你不懂NumPy也沒有關係。其實很簡單的。如果你想看一個Series中的一個元素,在Series 後面加上方括弧[ ],方括弧中間填上你想要看的元素的位置號碼。如圖所示,[ ]中是』b』,返回值是-5。去對照本文之前的內容,我們就會發現這是正確的數字。同樣的,如果你要處理一個兩維的序列(DataFrames),[ ]中就需要兩個數字,用分號(;)隔開。分號前面的數字代表第幾行,後面的數字代表第幾列。第二個例子中,df[1:]會返回給你所有行,但是每一行都從第2個元素開始。

選擇DataFrames裡面的元素的第二種方法是使用iloc( )和iat( )。

第三種方法,則是通過行和列的名字(標籤)進行選擇。

再比如說你在之前章節已經看見每個列都有一個標籤:「Country」、 「Capital」和「Population」。你可以通過把標籤輸入到這兩個函數中:loc()和at(),選擇你想要的元素。這是第四個方法。

第五種方法,則是輸入標籤到ix()函數中得到相應的元素,但如果DataFrames沒有標籤,ix函數也可以利用列的位置來進行選擇。

操作指南中中還介紹了布爾索引,布爾索引能夠幫助你選擇DataFrames裡面滿足一定條件的元素。這些條件可以包括等於、不等、大於、小於和它們的和、或的並用。

最後,還可以改變一個Series的索引元素,比如說一個索引值可以從3改為6。

去除元素

你不僅可以選取、索引、設置你的數據結構中的元素的值,你還可以隨意地去去除掉一些你不需要的值。使用drop( )來去除那些元素。在默認設置之下(axis=0),受到drop函數影響的是橫行;如果你想對豎列進行改動,那麼就必須明確的設置axis=1。

排序和排名

你還有可能要對你的數據進行排序或者排列。使用sort_index( )沿某一個方向進行索引排序,使用sort_values( )沿某一個方向進行值排序。相信你也理解了rank( )的功能,它能夠沿著某一個方向排列值的大小,然後將排名輸出為新的一列索引。

得到數據結構的信息

當你最終拿到你所要的數據後,你一定想對數據及其結構有個大概的認識。你可能想知道表格的大小、索引值、空值、列標籤等。info()函數能夠幫你總結出很多數據結構的特徵和信息,能夠幫助你快速地熟悉這個陌生的數據集。

上圖左欄列出了一些得到數據結構特徵的函數,還有一些常見的總結性指標,比如你肯定已經很熟悉的求和、平均、中位數等。

應用函數

在某些情況下,你想對你的DataFrames或Series應用一些計算函數。你的選擇包括lambda函數,apply( )函數和applymap( )函數。其中apply( )函數將計算應用於整個數據集,applymap( )則將計算應用於每一個元素。

數據排列

你所需要知道的最後一件事情是,當你的兩個數據集的索引不統一的時候,你的跨數據集操作將產生什麼結果。指令參考中給出了一個例子,當新的數據集與已有的數據集的索引不同時,會發生:

這種事情經常發生。而pandas的默認設置是將那些兩個表不共享的索引值的位置上填滿NA(無值)。如果你想避免這種情況,可以設置fill_value參數,設置的值將取代原來的NA。

現在你已經非常懂得pandas的基本操作了。

原文:Pandas Cheat Sheet for Data Science in Python

作者:Karlijn Willems

鏈接:goo.gl/wmnpSy


推薦閱讀:

學Python到找工作-資源匯總
使用 Python 3 編寫系列實用腳本
跟黃哥學習python第四章
使用python操縱metasploit簡單小記

TAG:Python |