机器学习入门 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)
posted @ 2022-04-11 21:24  咸鱼QwQ  阅读(85)  评论(0)    收藏  举报