Pandas是一個python庫,用於處理數據、生成統計數據、聚合數據等等。在這篇文章中,我們將討論如何使用Pandas庫進行數據選擇、聚合和統計分析。
我們開始吧!
我們將使用銀行客戶流失建模數據集。數據可以在這裡找到。
https://www.kaggle.com/sanjanavoona1043/bank-churn
首先,我們導入Pandas庫,列印前五行數據:
import pandas as pddf = pd.read_csv("Bank_churn_modelling.csv")pd.set_option('display.max_columns', None)pd.set_option('display.max_rows', None)print(df.head())
數據選擇
這裡我們將考慮使用Pandas數據幀進行數據選擇。我們可以使用「[]」來選擇數據列。例如,如果要選擇「CreditScore」、「Gender」、「Age」和「Exited」,可以執行以下操作:
df_select = df[['CreditScore', 'Gender', 'Age', 'Exited']]print(df_select.head())
還可以按列值過濾原始數據幀。讓我們過濾原始數據,使其只包括40歲以上的客戶:
df_age_gt_40 = df[df['Age'] > 40]print(df_age_gt_40.head())
我們還可以篩選40歲或以下的客戶:
df_age_lte_40 = df[df['Age'] <=40]print(df_age_lte_40.head())
或者只有40歲的客戶:
df_age_e_40 = df[df['Age'] ==40]print(df_age_e_40.head())
我們也可以按類別過濾。例如,我們可以選擇「Geography」為France的數據:
df_france = df[df['Geography'] == 'France']print(df_france.head())
還可以使用「.loc[]」運算符來完成相同的任務:
df_france_loc = df.loc[df.Geography == 'France']print(df_france_loc.head())
我們還可以過濾多個分類值。我們只考慮來自德國和西班牙的客戶:
geography_list = ['Germany', 'Spain']df_germany_spain = df[df['Geography'].isin(geography_list)]print(df_germany_spain.head())
統計
我們也可以用Pandas來生成一些基本的統計數據。例如,如果我們想計算信用評分的平均值和標準差,可以執行以下操作:
mean_credit_score = df['CreditScore'].mean()print('Mean credit Score: ', mean_credit_score)std_credit_score = df['CreditScore'].std()print('Standard Deviation in Credit Score: ', std_credit_score)
還可以查看最小值和最大值:
min_credit_score = df['CreditScore'].min()print('Min credit Score: ', min_credit_score)max_credit_score = df['CreditScore'].max()print('Standard Credit Score: ', max_credit_score)
還可以計算特徵的相關性並繪製熱圖。來看看「年齡」、「信用評分」、「估計年資」和「任期」之間的相關性:
corr = df[['Age', 'CreditScore', 'EstimatedSalary', 'Tenure']].corr()print(corr)
可以使用seaborn繪製相關值的熱圖:
import seaborn as sns sns.heatmap(corr)
數據聚合
我們也可以用Pandas來收集數據。具體來說,可以使用groupby方法來生成類別級別的統計信息。例如,我們可以從原始數據生成一個新的dataframe,其中包含每個「Geography」值的平均「CreditScore」。這將使我們能夠分析和比較法國、西班牙和德國的平均信用評分:
df_groupby_mean = df.groupby('Geography')['CreditScore'].mean()print(df_groupby_mean.head())
還可以查看信用評分的標準差:
df_groupby_std = df.groupby('Geography')['CreditScore'].std()print(df_groupby_std.head())
讓我們看看另一個數字列。我們來計算每個國家的平均年齡和年齡標準差:
df_groupby_age_mean = df.groupby('Geography')['Age'].mean()print(df_groupby_age_mean.head())df_groupby_age_std = df.groupby('Geography')['Age'].std()print(df_groupby_age_std.head())
我們也可以按多個列分組:
df_groupby_multiple_category = df.groupby(['Geography', 'Gender'])['Age'].mean()print(df_groupby_multiple_category.head())
結論
本文討論了如何與Pandas庫一起執行數據選擇、數據聚合和統計分析等任務。