当前位置: 首页 > article >正文

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

打开表

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

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

print("列标题:",df2.columns)

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

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

在这里插入图片描述

定性数据的分析

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

1.提取性别列

sex_v2 = df2["性别"]
sex_v2

2.统计男性人数

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

3.统计女性人数

femaleV2 = np.sum(sex_v2==0)
print("女性人数:",femaleV2)

在这里插入图片描述

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

1.准备画布

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

2.准备数据

data = [maleV2,femaleV2]
dataLabel = ["男","女"]

3.绘制图形

plt.pie(data,labels=dataLabel)

4.保存和显示

plt.show()

在这里插入图片描述

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

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

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

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

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

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

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

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

在这里插入图片描述
在这里插入图片描述

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()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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()

在这里插入图片描述

定量数据分析–收入

incomeV2 = df2["收入"]

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

print("平均值:",incomeV2.mean())
print("中位数:",incomeV2.median())
print("众数:",incomeV2.mode())

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

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

在这里插入图片描述

处理异常值

1.提取异常值

f2 = p2["fliers"][0].get_ydata()
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)

在这里插入图片描述

直方图

1.绘制画布

plt.figure(figsize=(8,6),dpi=80)

2.准备数据

data = incomeV2.values
labelV2 = ["收入"]

3.绘制图形

h2 = plt.hist(data,10)
plt.title("收入直方图")

4.显示图形

plt.show()
print(h2)

在这里插入图片描述

箱线图

1.绘制画布

plt.figure(figsize=(8,6),dpi=80)

2.准备数据

data = incomeV2.values
labelV2 = ["收入"]

3.绘制图形

p2 = plt.boxplot(data)
plt.title("收入箱线图")

4.显示图形

plt.show()
print(p2)

在这里插入图片描述

在这里插入图片描述

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()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/504451.html

相关文章:

  • PostgreSQL技术内幕22:vacuum full 和 vacuum
  • 【大数据】机器学习-----线性模型
  • golang运维开发-gopsutil(1)
  • 使用 versions-maven-plugin 和 flatten-maven-plugin 插件惯例 maven 项目版本
  • 语音技术与人工智能:智能语音交互的多场景应用探索
  • 013:深度学习之神经网络
  • 如何在Ubuntu上安装和配置Git
  • LLM 智能视频字幕助手,支持生成、断句、优化、翻译、视频合成全流程
  • 从0开始学习搭网站第二天
  • 《计算机网络》课后探研题书面报告_网际校验和算法
  • SLAM后端处理
  • uniapp 小程序 五星评分精确到0.1
  • Lua语言的软件开发工具
  • 设计模式-工厂模式/抽象工厂模式
  • 免 root 开启 Pixel 手机 VoLTE 功能
  • 使用Python实现疫情监测系统
  • STM32 FreeRTOS 介绍
  • 【机器学习:十四、TensorFlow与PyTorch的对比分析】
  • 微服务主流框架和基础设施介绍
  • 关于编写测试用例的细枝末节
  • STM32 FreeRTOS 的任务挂起与恢复以及查看任务状态
  • 【算法学习】——整数划分问题详解(动态规划)
  • Nginx是什么?怎么用?
  • 【大数据】机器学习------决策树
  • react Hooks 父组件调用子组件函数、获取子组件属性
  • react与nodejs实现流式传输,并可以进行中断(fetch聊天版)