Pandas概論

做者|Billy Fetzner
編譯|VK
來源|Towards Data Sciencehtml

我認爲,既然你點開了這個頁面,你可能有大量的數據須要分析,你可能正在想最好和最有效的方法來解決你數據的一些問題。你問題的答案能夠經過Pandas解決。python

如何接觸Pandas

因爲Pandas的流行,它有本身的傳統縮寫,因此不管什麼時候將Pandas導入python,請使用如下命名:數據庫

import pandas as pd

Pandas包的主要用途是數據框api

Pandas API將Pandas數據幀定義爲:數組

二維、大小可變、潛在的異構表格數據。數據結構還包含軸(行和列)。算術運算對行標籤和列標籤進行對齊。能夠認爲是一個相似於dict的容器,用於存儲序列對象。是Pandas主要的數據結構。數據結構

基本上,這意味着你有包含在格式中的數據,以下所示。在行和列中找到的數據:框架

數據幀很是有用,由於它們提供了一種高效的方法來可視化數據,而後按你但願的方式操做數據。機器學習

這些行能夠很容易地被索引引用,索引是數據幀最左邊的數字。索引將是從零開始的編號,除非你指定每一行的名稱。列也能夠很容易地被列名稱(例如「Track name」)或其在數據幀中的位置進行引用。咱們將在本文後面詳細討論引用行和列。工具

建立數據幀

建立Pandas數據幀的方法有幾種:學習

  1. 從.csv文件導入數據(或其餘文件類型,例如Excel、SQL數據庫)

  2. 從列表中

  3. 從字典裏

  4. 從numpy數組

  5. 其餘

一般,你將主要將.csv文件或某種類型的數據源的數據放入Pandas數據框架中,而不是從頭開始,由於這將須要很是長的時間來完成,這取決於你擁有的數據量。如下是python字典中的一個快速、簡單的示例:

import pandas as pd
dict1 = {'Exercises': ['Running','Walking','Cycling'],
         'Mileage': [250, 1000, 550]}
df = pd.DataFrame(dict1)
df

輸出:

字典鍵(「Exercises」和「Mileage」)成爲相應的列標題。字典中的值是本示例中的列表,成爲數據幀中的單個數據點。Running是「Exercises」列表中的第一個,250將被列在第二列的第一個。另外,你會注意到,因爲我沒有爲數據幀的索引指定標籤,所以它會自動標記爲0、1和2。

可是,就像我以前所說的,建立Pandas數據幀的最可能方法是從csv或其餘類型的文件中導入,你將導入該文件來分析數據。只需如下內容便可輕鬆完成:

df = pd.read_csv("file_location.../file_name.csv")

pd.read_csv是一種很是強大和通用的方法,根據你但願如何導入數據,它將很是有用。若是csv文件已經附帶了頭或索引,則能夠在導入時指定。爲了充分了解pd.read_csv,我建議你看看這裏的PandasAPI:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html?highlight=read_csv

第一件事

如今你已經準備好了這個巨大的數據集,你必須查看它,看看它的外觀。做爲一個分析這些數據的人,首先必須對數據集熟悉,並真正瞭解數據集中發生了什麼。我喜歡用四種方法來了解個人數據。

  1. .head() & .tail()
  2. .info()
  3. .describe()
  4. .sample()
raw_song.head()

它顯示數據幀的前5行和每一個列,以便你輕鬆地總結數據的外觀。你還能夠在方法中指定必定數量的行,以顯示更多行。

.tail僅顯示最後5行。

raw_song.tail()

從這兩個快速方法中,我對列名和數據的外觀有了一個大體的瞭解,這只是從數據集的一個小樣本中獲得的。這些方法也很是有用,尤爲是對於Spotify數據集這樣的數據集,處理超過300萬行的數據時,你能夠輕鬆地顯示數據集並快速瞭解數據,並且你的計算機也不會花很長時間來顯示數據。

.info也頗有用,它向我顯示了全部列、它們的數據類型以及是否有null數據點。

raw_song.info(verbose=True, null_counts=True)

若是你有完整的整型或浮點型列(即'Position'、'Streams'),那麼.describe是一個有用的方法,能夠幫助你更好地瞭解數據集,由於它將顯示關於這些列的許多描述性統計信息。

raw_song.describe()

最後,.sample將容許你隨機對數據幀進行採樣,並查看你所作的任何操做是否錯誤地更改了數據集中的某些內容,並且當你第一次探索數據集時,也能夠很好地瞭解數據集包含哪些內容

raw_song.sample(10)

在探索和準備數據集進行分析時,我始終使用這些方法。每當我更改列中的數據、更改列名或添加/刪除行/列時,我都會經過至少快速運行前面5個方法中的一些來確保全部更改都按我但願的方式進行。

選擇行或列

太棒了,如今你知道如何將數據集做爲一個總體來看待,但實際上你只想查看幾列或幾行,而後將其他部分排除在外。

.loc[]和.iloc[]

這兩個方法將以不一樣的方式來實現這一點,這取決於你可以引用特定行或列的方式。

若是知道行或列的標籤,請使用.loc[]。

若是知道行或列的索引,請使用.iloc[]。

若是你二者都知道,就選你最喜歡的。

所以,回到Spotify數據集。你可使用.loc[]或.iloc[]查看列「Track Name」。若是知道列的標籤可使用.loc[],因此我將使用如下內容:

raw_song.loc[:,'Track Name']

第一個括號後面的冒號指定我引用的行,因爲我但願全部行都位於「Track Name」列中,因此我使用「:」。

我將收到與.iloc[]相同的輸出,但此次須要指定「Track Name」列的索引:

raw_song.iloc[:,1]

.loc[]和.iloc[]對行的做用相同,但在本例中,由於行的標籤和索引都是相同的,因此它們看起來徹底相同。

切片

另外一種獲取DataFrame部分的簡單方法是使用[]並在方括號內指定列名。

raw_song[['Artist','Streams']].head()

若是你只使用一列和一組括號,你將獲得Pandas Series。

raw_song['Streams']

從數據幀添加行、列

利用咱們已經從.loc[]得到的信息,咱們可使用this或.insert將行或列添加到數據幀中。

添加行

若是決定使用.loc[]將行添加到dataframe,則只能將其添加到dataframe的底部。指定dataframe中的任何其餘索引,刪除當前在該行中的數據,並用要插入的數據替換它。

raw_song.loc[3441197] = [0,'hello','bluemen',1,"https://open.spotify.com/track/notarealtrack", '2017-02-05','ec']

你也可使用.loc[]將列添加到數據幀中。

raw_song.loc[:,'new_col'] = 0
raw_song.tail()

除了在末尾以外,還有兩種方法能夠將新列插入數據幀中。

insert方法容許你指定要將列放入數據幀的位置。它接受3個參數、要放置它的索引、新列的名稱以及要做爲列數據放置的值。

raw_song.insert(2,'new_col',0)
raw_song.tail()

將列添加到dataframe的第二種方法是經過使用[]命名新列並使其與新數據相等,從而使其成爲dataframe的一部分。

raw_song['new_col'] = 0
raw_song.tail()

經過這種方式,我沒法指定新列的位置,但這是執行該操做的另外一種有用方法。

從數據幀中刪除行、列

若是你想刪除一些行或列,這很簡單,只需刪除它們。

只需指定要刪除的軸(行爲0,列爲1)和要刪除的行或列的名稱,就能夠開始了!

raw_song.drop(labels='new_col',axis=1)

重命名索引或列

若是要將dataframe的索引更改成dataframe中的其餘列,請使用.set_index並在括號中指定列的名稱。可是,若是你確切知道要爲索引命名的內容,請使用.rename方法。

raw_song.rename(index={0:'first'}).head()

要重命名列,請在.rename方法中指定要重命名的列以及在{}中要爲其命名的名稱,相似於重命名索引。

raw_song.rename(columns={'Position':'POSITION_RENAMED'}).head()

如何迭代數據幀

不少時候,當你處理數據幀中的數據時,你須要以某種方式更改數據並迭代數據幀中的全部值。最簡單的方法是在pandas中內置for循環:

for index, col in raw_song.iterrows():
    # 在此處操做數據

如何將數據幀寫入文件

在完成對數據幀的全部操做以後,如今是導出數據幀的時候了,以即可以將其發送到其餘地方。與從文件導入數據集相似,如今正好相反。Pandas有多種不一樣的文件類型,你能夠將數據幀寫入其中,但最多見的是將其寫入csv文件。

pd.to_csv('file_name.csv')

如今你知道Pandas和數據幀的基本知識了。這些是數據分析工具箱中很是強大的工具。

原文連接:https://towardsdatascience.com/an-introduction-to-pandas-29d15a7da6d

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索