歡迎光臨
每天分享高質量文章

學習|每位資料分析師應該要知道的基本資料分析技術

在我作為一名資料分析師的日常工作中,我看到了來自客戶的各種資料和分析請求。我註意到,在大多數專案中都需要一些基本的技術,這與您所從事的專案型別無關。我相信每個資料分析師/科學家都應該很好地理解這些技術。因此,本文的標的是帶領讀者瞭解這些技術,併在基本層面上解釋這些技術。

以下是我們將討論的主題:

  1. 基本過濾
  2. 多條件過濾
  3. 聚合
  4. 連接

為了便於分析,我們將使用Python中的panda庫。因此,如果您還沒有安裝這個庫,請在命令提示符中使用以下代碼之一來安裝panda:

# If you use Anaconda, type the following in anaconda prompt
conda install -c anaconda pandas
# If you use pip, type the following in command prompt
pip install pandas

此外,我假定您已經對Python和pandas庫有了基本的瞭解。但是不用擔心,如果你還沒有接觸到上面的任何一個,我們將從頭到尾進行詳細介紹。

我們的資料集

為了能夠使用上述技術,我們需要資料。我們可以匯入csv檔案或excel檔案,但現在我們只需要用pandas簡單地創建一個小資料集。

以下代碼將生成一個pandas資料框。

import pandas as pd

df = pd.DataFrame({'ID': ['A1''A1''B1''B1''C1''C1''D1''D1'],
                   'Value': [10012090801403060210],
                   'Date': pd.date_range('20190407', periods=8)})

這裡顯示以下資料框。

如上所述,你可以看到ID,Value和Date。

1 基本的過濾

我們已經加載了pandas庫和創建了資料集,我們開始第一個技術。當你想基於列的值獲得資料的子集時,我們在談論過濾資料。

在pandas我們有多種方式做這個事情,現在我們看一下最常用的方式。

  1. 用[]的布爾索引
  2. .loc的布爾索引

用[]過濾資料如下

# Boolean indexing with square brackets

df[df['Value'] > 100]

在pandas中的過濾邏輯是將條件傳遞給方括號之間的DataFrame.

df[condition]

給我們輸出如下結果

.loc過濾

Boolean indexing with .loc

df.loc[df['Value'] > 100]

正如所料,它給出了相同的輸出,因為我們應用了相同的過濾器。

哪個更適合使用?對於基本過濾器,正如我們上面看到的,沒有區別或首選項,這取決於您更喜歡哪種代碼語法。但是,當您想應用更高級的資料選擇時,.loc提供了這一功能,並且可以執行更複雜的選擇和切片。但現在不用擔心。

2 基於條件過濾

我們使用了第一個過濾器,非常直接。但是假設你想應用一個有多個條件的過濾器。我們如何在pandas做到這一點?為此,我們研究了Python運算子。

2.1 &運算子

例如,您希望過濾ID等於C1且值大於100的所有行。

要應用這個過濾器,我們必須用&運算子連接兩個條件。這看起來像這樣:

# Filtering with multiple conditions '&' operator

df[(df['ID'] == 'C1') & (df['Value'] > 100)]

並將傳回以下輸出:

正如預期的那樣,我們傳回一行,因為只有這一行滿足我們在過濾器中設置的條件。

2.2 |運算子

Python中的|運算子代表or,如果滿足其中一個條件,則傳回True。

我們可以通過應用以下過濾器來顯示這一點:給出日期晚於2019-04-10或值大於100的所有行。

在Python代碼中,它看起來像這樣:

# Filtering with multiple conditions 'or' operator

condition = (df['Date'] > '2019-04-10') | (df['Value'] > 100)

df[condition]

並將傳回以下輸出:

正如預期的那樣,傳回的所有行都具有大於100的值,或者日期在2019-04-10之後。

3 聚合

有時需要聚合資料,以便創建特定的視圖或進行一些計算。在pandas中,我們使用groupby。

那麼groupby到底是什麼呢?如果我們取用pandas文件:

我們所說的“分組”是指涉及下列一項或多項步驟的程式:
根據一些標准將資料分成若干組。
獨立地對每個組應用一個函式。
將結果組合成資料結構。

基本上,它是根據一些指標,將資料分組,讓你自己對這些組做一些操作。

3.1 Groupby 獲得總和

讓我們看一個例子。假設我們想要基於ID得到每個組的value的總值。這就像下麵的Python代碼:

# Get the total value of each group based on ID

df.groupby('ID', as_index=False)['Value'].sum()

將為我們提供以下結果

所以如果我們再看看我們的DataFrame,我們可以看到這是正確的:

例如ID A1的總value是100 + 120 = 220,這是正確的。

Groupby:獲得最大日期

pandas提供了一個大範圍的函式,您可以在使用groupby之後對您的組使用這些函式。讓我們再看一個。例如,我們可以使用.max()函式獲得每個組的最大日期。
就像這樣

# Get the highest date of each group

df.groupby('ID', as_index=False)['Date'].max()

輸出結果如下:

4 連接

連接是基於一個公共列以併排的方式組合兩個資料框。大多數情況這些列被當做主鍵列。

join這個術語起源於資料庫語言SQL,之所以需要它,是因為SQL資料庫的資料建模大多是通過關係建模來完成的。

連接有很多型別,您的輸出將基於執行的連接型別。由於這是一個入門教程,我們將介紹最常見的一個:inner join。在本系列後面的部分中,我們將研究更複雜的連接。

內部連接來自韋恩圖表示兩個集合的交集部分。因此,當我們將其轉換為資料時,內部連接將傳回兩個資料框中都存在的行。

4.1 我們的資料集
因為我們想合併兩個資料框,所以我們將創建新的資料。這兩個虛構的資料集表示customer主表和orders表。

使用下麵的代碼,我們創建了兩個新的資料框:

# Dataset 1 - Customer Table
dfA = pd.DataFrame({'Customer_ID':[1, 2, 3, 4, 5],
                    'Name': ['GitHub''Medium''Towardsdatascience''Google''Microsoft'],
                    'City': ['New York''Washington''Los Angeles''San Francisco''San Francisco']})

# Dataset 2 - Orders 
dfB = pd.DataFrame({'Order_ID': [1, 2, 3, 4, 5, 6, 7],
                    'Order_date': pd.date_range('20190401', periods=7),
                    'Amount':[440, 238, 346, 637, 129, 304, 892],
                    'Customer_ID':[4, 3, 4, 1, 2, 5, 5]})

它們看起來像這樣:

因此,我們要對新資料進行邏輯分析,得到orders表中每個訂單表的客戶名稱和城市。這是一個典型的連接問題,按行匹配兩個dataframes,並用更多的列充實資料。在本例中,鍵列是Customer_ID。

在pandas中,我們使用merge方法進行連接。我們將把以下引數傳遞給這個方法:

  • 您想加入哪個資料框(dfA、dfB)。
  • 關鍵列是什麼(Customer_ID)。
  • 您希望執行哪種型別的連接(內部連接)。

在merge方法中,我們可以使用的引數比上面列出的更多,但目前這些引數已經足夠了。

我們想要執行的合併在pandas中看起來如下:

pd.merge(left=dfB, right=dfA, on='Customer_ID', how='inner' )

正如我們所期望的,name和city列被添加到每個對應的customer_ID旁邊。

以上就是本部分的內容:使用Python,每個資料分析師都應該知道的基本資料分析技術。

你可以在我的GitHub上以Jupyter Notebook的形式找到這篇文章的代碼:
https://github.com/ErfPy/MediumArticles

如果這篇文章對你有用,請考慮給這篇文章點贊,並與朋友和/或同事分享。
如有任何問題或其他討論,請隨時發表留言。

原文鏈接:
https://towardsdatascience.com/basic-data-analysis-techniques-every-data-analyst-should-know-using-python-4de80ab52396

已同步到看一看
赞(0)

分享創造快樂