機器學習入門 04 資料探索+資料預處理
阿新 • • 發佈:2022-04-11
資料探索
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)