【大数据】机器学习 -----关于data.csv数据集分析案例

打开表

python 复制代码
import  pandas  as  pd
df2 = pd.read_csv("data.csv",encoding="gbk")
df2.head()

查看数据属性(列标题,表形状,类型,行标题,值)

python 复制代码
print("列标题:",df2.columns)

DataFrame表的形状,类型,行标题,值属性

python 复制代码
print("表形状:",df2.shape)
print("类型:",df2.dtypes)
print("行标题:",df2.index)
print("值属性:",df2.values)

定性数据的分析

要求:统计每一类性别的人数

1.提取性别列

python 复制代码
sex_v2 = df2["性别"]
sex_v2

2.统计男性人数

python 复制代码
import  numpy  as  np   # 数据统计库
maleV2 = np.sum(sex_v2==1)
print("男性人数:",maleV2)

3.统计女性人数

python 复制代码
femaleV2 = np.sum(sex_v2==0)
print("女性人数:",femaleV2)

将以上统计结果绘制成饼图

1.准备画布

python 复制代码
import  matplotlib.pyplot  as  plt   # 绘图库
plt.rcParams["font.sans-serif"] = "SimHei"

2.准备数据

python 复制代码
data = [maleV2,femaleV2]
dataLabel = ["男","女"]

3.绘制图形

python 复制代码
plt.pie(data,labels=dataLabel)

4.保存和显示

python 复制代码
plt.show()

统计不同性别的是否按期还款人数

python 复制代码
useDF2 = df2.loc[:,["是否按期还款","性别"]]      # 取出源表的两列数据

seleDF2 = useDF2.loc[useDF2["性别"]==1,:]   # 取出性别为男的数据

统计不同性别的是否按期还款人数

python 复制代码
useDF2 = df2.loc[:,["是否按期还款","性别"]]      # 取出源表的两列数据

seleDF2 = useDF2.loc[useDF2["性别"]==1,:]   # 取出性别为男的数据

提取男性中不能按期还款的人数

python 复制代码
nopayDF2 = seleDF2.loc[seleDF2["是否按期还款"]==0,:]    # 男性中不能按期还款
payDF2 = seleDF2.loc[seleDF2["是否按期还款"]==1,:]    # 男性中能按期还款


python 复制代码
import  pandas  as  pd
import  numpy  as  np
import  matplotlib.pyplot  as  plt   # 绘图库
plt.rcParams["font.sans-serif"] = "SimHei"

df2 = pd.read_csv("data.csv",encoding="gbk")

def  paydef(type_v2,vList):
    payDict = {}    # 用来存放不同的统计情况
    for i in range(len(vList)):
        # 统计不同性别的是否按期还款人数
        useDF2 = df2.loc[:,["是否按期还款",type_v2]]      # 取出源表的两列数据

        seleDF2 = useDF2.loc[useDF2[type_v2]==vList[i],:]   # 取出性别为男的数据

        # 提取男性中不能按期还款的人数
        nopayDF2 = seleDF2.loc[seleDF2["是否按期还款"]==0,:]    # 男性中不能按期还款
        payDF2 = seleDF2.loc[seleDF2["是否按期还款"]==1,:]    # 男性中能按期还款
        print(f"第{i+1}个统计结果:{nopayDF2.shape}")
        # 将统计结果放到字典中
        payDict[vList[i]] = [seleDF2.shape[0],payDF2.shape[0],
                             nopayDF2.shape[0],
                             payDF2.shape[0]/seleDF2.shape[0]]
        # print(payDict)
    return payDict
        
    
# 
def changedef(d2,d3):
    # 
    nDict = {}
    for k in d2.keys():
        nDict[d3[k]] = d2[k]
    
    return nDict

# 绘图函数 
def figdef(dataDict):
    # 1.准备画布
    plt.figure(figsize=(8,6),dpi=80)
    # 2.准备数据
    data = []
    dataLabel = []
    for k,v in dataDict.items():
        data.append(v[1])
        dataLabel.append(k)
    # 3.绘制图形
    plt.pie(data,labels=dataLabel)
    # 4.保存和显示
    plt.show()
# 主函数
def  main():
    
    type_v2 = input("请输入分类关键词:")
    # 学生完成:将已婚_未婚,已育_未育的数据添加到字典中
    typeDict = {"性别":{0:"女",1:"男"},"教育水平":{1:"高中及以下",2:"本科",3:"研究生",4:"研究生以上"},
                "英语水平":{1:"四级以下",2:"四级",3:"六级",4:"六级以上"},
               "已婚_未婚":{1:"已婚",2:"未婚"},
               "已育_未育":{1:"已育",2:"未育"}}
    # 统计性别的取值个数
    vList = np.unique(df2[type_v2])
    print(vList)
    # 调用统计函数
    payDict = paydef(type_v2,vList)
    nDict = changedef(payDict,typeDict[type_v2])
    print(nDict)
    figdef(nDict)

# 入口
if  __name__ == "__main__":
    main()


python 复制代码
import  pandas  as  pd
import  numpy  as  np
import  matplotlib.pyplot  as  plt   # 绘图库
plt.rcParams["font.sans-serif"] = "SimHei"

df2 = pd.read_csv("data.csv",encoding="gbk")
df2.head()

定量数据分析--收入

python 复制代码
incomeV2 = df2["收入"]

集中趋势(平均值,中位数,众数)

python 复制代码
print("平均值:",incomeV2.mean())
print("中位数:",incomeV2.median())
print("众数:",incomeV2.mode())

分散程度(最大值,最小值,方差,标准差)

python 复制代码
print("最小值:",incomeV2.min())
print("最大值:",incomeV2.max())
print("方差:",incomeV2.var())
print("标准差:",incomeV2.std())

处理异常值

1.提取异常值

python 复制代码
f2 = p2["fliers"][0].get_ydata()
print(f2)

2.删除异常值

2-1:找到异常值对应的行索引

python 复制代码
f_index = []      # 存放异常值,对应的行索引

for  i  in range(len(incomeV2)):
    if  incomeV2[i]   in  f2:
        f_index.append(incomeV2.index[i])

print(f_index)

2-2:使用命令drop删除异常值

python 复制代码
clear_f_df2 = df2.drop(f_index,axis=0)
print("清除异常值后:",clear_f_df2.shape)

直方图

1.绘制画布

python 复制代码
plt.figure(figsize=(8,6),dpi=80)

2.准备数据

python 复制代码
data = incomeV2.values
labelV2 = ["收入"]

3.绘制图形

python 复制代码
h2 = plt.hist(data,10)
plt.title("收入直方图")

4.显示图形

python 复制代码
plt.show()
print(h2)

箱线图

1.绘制画布

python 复制代码
plt.figure(figsize=(8,6),dpi=80)

2.准备数据

python 复制代码
data = incomeV2.values
labelV2 = ["收入"]

3.绘制图形

python 复制代码
p2 = plt.boxplot(data)
plt.title("收入箱线图")

4.显示图形

python 复制代码
plt.show()
print(p2)
python 复制代码
import  pandas  as  pd
import  numpy  as  np
import  matplotlib.pyplot  as  plt   # 绘图库
plt.rcParams["font.sans-serif"] = "SimHei"

df2 = pd.read_csv("data.csv",encoding="gbk")
df2.head()

# 函数1-直方图
def  histdef(ax,data):
    ax.hist(data,10)
    

# 函数2-箱线图
def  boxplotdef(ax,data):
    p2 = ax.boxplot(data)
    return p2

def clearFdef(p2):
    # 处理异常值
    # 1.提取异常值
    f2 = p2["fliers"][0].get_ydata()
    incomeV2 = df2["收入"]
    print(f2)
    # 2.删除异常值
    # 2-1:找到异常值对应的行索引
    f_index = []      # 存放异常值,对应的行索引
    for  i  in range(len(incomeV2)):
        if  incomeV2[i]   in  f2:
            f_index.append(incomeV2.index[i])

    print(f_index)

    # 2-2:使用命令drop删除异常值
    clear_f_df2 = df2.drop(f_index,axis=0)
    print("清除异常值后:",clear_f_df2.shape)
    return clear_f_df2

# 主函数
def  main():
    # 1.绘制画布
    fig = plt.figure(figsize=(12,10),dpi=80)
    # 2.分割画布
    # 图1
    ax1 = fig.add_subplot(2,2,1)
    data2 = df2["收入"]
    histdef(ax1,data2)
    plt.title("清洗前的收入直方图")
    
    # 图2
    ax2 = fig.add_subplot(2,2,2)
    p2 = boxplotdef(ax2,data2)
    clear_f_df2 = clearFdef(p2)
    plt.title("清洗前的收入箱线图")
    
    # 图3
    ax3 = fig.add_subplot(2,2,3)
    data3 = clear_f_df2["收入"]
    histdef(ax3,data3)
    plt.title("清洗前的收入箱线图")
    
    # 图4
    ax4 = fig.add_subplot(2,2,4)
    p3 = boxplotdef(ax4,data3)
    clear_f_df2 = clearFdef(p3)
    plt.title("清洗前的收入箱线图")

# 入口
if  __name__ == "__main__":
    main()



相关推荐
奔跑中的小象6 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南6 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang6 小时前
LangGraph 状态机实战
人工智能
刹那芳华19926 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作7 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门7 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜7 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟7 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦7 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生8 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能