1. 程式人生 > 其它 >機器學習入門 04 資料探索+資料預處理

機器學習入門 04 資料探索+資料預處理

資料探索

1.統計量分析:

1.集中趨勢的度量:

1.均值、中位數、眾數

2.離散趨勢的度量:

極值()
極差
標準差、方差
四分位數間距
案例data.csv檔案在這

import pandas as pd

if __name__ == '__main__':

    df = pd.read_csv(r"D:\ \python-sk\0408study\data.csv",index_col="年份")

    #1.1 集中趨勢的度量
    gdp_mean = df['人均GDP(元)'].mean() # 均值

    gdp_median = df['人均GDP(元)'].median()  # 中位數

    print(f"人均GDP均值${gdp_mean}")
    print(f"人均GDP中位數${gdp_median}")

    #2.離散趨勢的度量
    '''
    極值()
    極差
    標準差、方差
    '''
    gdp_max = df['人均GDP(元)'].max()
    gdp_min = df['人均GDP(元)'].min()
    gdp_std = df['人均GDP(元)'].std()
    gdp_var = df['人均GDP(元)'].var()

    print(f"人均GDP最大{gdp_max}")
    print(f"人均GDP最小{gdp_min}")
    print(f"人均GDP標準差{gdp_std}")
    print(f"人均GDP方差{gdp_var}")
    print(f"人均GDP極差{gdp_max-gdp_min}")

    #3.描述性統計分析
    describe = df.describe()
    print(describe)

    describe.loc["range"] = describe.loc["max"] - describe.loc["min"]
    print(describe)

2.相關性分析:

通過散點圖 獲取 相關係數
案例

import pandas as pd

if __name__ == '__main__':

    df = pd.read_csv(r"D:\ \python-sk\0408study\BankData.csv",index_col="分行編號")
    print(df.head())

    # 指定預設字型(防止中文出現亂碼)
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定‘仿宋’字型

    # 相關性分析
    # 1.畫散點圖
    x = df['不良貸款(億元)']
    y = df['各項貸款餘額']

    import matplotlib.pyplot as plt
    fig,ax = plt.subplots()
    ax.scatter(x,y,alpha=0.5)
    ax.set_xlabel('不良貸款')
    ax.set_ylabel('各項貸款餘額')
    plt.show()

    #2.多個指標,兩兩 進行 相關性分析 維度組合
    import pandas.plotting as pd_plt
    pd_plt.scatter_matrix(df,figsize=(5,5),marker="o",alpha=0.5)
    plt.show()

    #3.獲取相關係數
    #1.獲取所有指標 兩兩 行相關性係數
    df_corr = df.corr()
    print(df_corr.head())
    #2.獲取第一列
    print(df_corr['不良貸款(億元)'].head())
    #3.取不同列的直接的相關係數
    print(df['不良貸款(億元)'].corr(df['各項貸款餘額']))

資料預處理

資料透視表 也可以對資料進行分析【聚合統計】
group by + agg

案例pivot_table_demo.xlsx檔案在這

import pandas as pd

if __name__ == '__main__':

    df = pd.read_excel(r"D:\ \python-sk\0411study\pivot_table_demo.xlsx")
    print(df.head())

    #1. 求 各個 學習中心的 已繳納的學費的總合 sql =》 group by 學習中心 sun(已繳納的學費)
        # 1.用 pandas運算元來做
    df_res = df.groupby(by=['學習中心']).agg({"已繳納學費":["sum"]})
    df_res.columns = pd.Series(['已繳納學費總和'])
    print(df_res.head())
        # 2.用資料透視表來做
    import numpy as np
    df_res1 = df.pivot_table(index="學習中心",values=["已繳納學費"],aggfunc=np.sum)
    print(df_res1)

    # 2. 求 各個 學習中心的 報名人數 sql =》 group by 學習中心 count(已繳納的學費)
        # 1.用 pandas運算元來做
    df_res2 = df.groupby(by=['學習中心']).agg({"已繳納學費": ["count"]})
    df_res2.columns = pd.Series(['人數'])
    print(df_res2.head())
        # 2.用資料透視表來做
    import numpy as np
    df_res3 = df.pivot_table(index="學習中心", values=["已繳納學費"], aggfunc=np.count_nonzero)
    print(df_res3)

    # 3.求 各個 學習中心的 報名人數、已繳納的學費的總合
    import numpy as np
    df_res4 = df.pivot_table(index="學習中心", values=["已繳納學費",'身份證號碼'],
                             aggfunc={"已繳納學費":np.sum,"身份證號碼":np.count_nonzero})
    print(df_res4)