Pandas概論

作者|Billy Fetzner
編譯|VK
來源|Towards Data Science

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

如何接觸Pandas

由於Pandas的流行,它有自己的傳統縮寫,所以無論何時將Pandas導入python,請使用以下命名:

import pandas as pd

Pandas包的主要用途是數據框

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章