数据的分布和映射

news/2024/12/11 17:28:56/文章来源:https://www.cnblogs.com/u3516528/p/18600091

数据的分布和映射是数据分析中的两个重要概念。它们帮助我们理解数据的特征,并为后续的数据处理和分析提供基础。

数据的分布

定义:数据的分布描述了数据集中每个值出现的频率或概率。它提供了数据集的形状、中心趋势和离散程度的信息。

目的:通过分析数据的分布,我们可以了解数据的特征,比如数据是否对称、是否有异常值、数据的集中趋势等。

常见分布类型

  • 离散分布:数据只能取特定的、可数的值。例如,抛掷一个骰子的结果就是一个离散分布,可能的值是1、2、3、4、5和6。
  • 连续分布:数据可以取一个区间内的任何值。例如,人的身高或体重就是连续分布,因为它们可以取无限多的值。

常见的数据分布

  • 均匀分布:每个值出现的概率相同。
  • 二项分布:描述了在固定次数的独立实验中成功次数的分布,每次实验有两种可能的结果。
  • 正态分布:也称为高斯分布,是一种对称的、钟形的连续分布,其均值、中位数和众数相同。
  • 指数分布:描述了在泊松过程中事件之间的时间间隔。
  • 泊松分布:描述了在固定的时间或空间间隔内事件发生的次数。

数据的映射

定义:数据的映射是指将数据从一种形式转换为另一种形式的过程。这可以包括数据的清洗、转换、归一化、标准化等。

目的:数据映射的目的是使数据更适合于分析或机器学习模型的输入。通过映射,我们可以将数据转换为更易于处理的形式,比如将分类数据转换为数值数据。

常见的数据映射方法

  • 数据清洗:去除或纠正数据集中的错误、不一致或不完整的数据。
  • 数据转换:将数据从一种格式或结构转换为另一种,例如,将非结构化数据转换为结构化数据。
  • 归一化:将数据缩放到一个特定的范围,通常是0到1,以便于比较和处理。
  • 标准化:将数据转换为具有特定均值和标准差的分布,通常是均值为0,标准差为1的正态分布。

以下是对医疗花费预测的数据分布和映射

代码说明

  1. 导入库

    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    • pandas用于数据处理和分析。
    • matplotlib.pyplot用于绘制基本图形。
    • seaborn是基于matplotlib的高级可视化库,提供更美观的图表。
  2. 读取CSV文件

    train_df = pd.read_csv('D:/迅雷下载/第6章 医疗花费预测(1)/第6章 医疗花费预测/train.csv')
    test_df = pd.read_csv('D:/迅雷下载/第6章 医疗花费预测(1)/第6章 医疗花费预测/test.csv')
    
    • 使用pd.read_csv读取训练和测试数据集。
  3. 查看数据结构

    print("Train Data Head:")
    print(train_df.head())
    print("\nTest Data Head:")
    print(test_df.head())
    
    • 打印数据集的前几行,以便了解数据的结构和内容。
  4. 绘制年龄分布图

    plt.figure(figsize=(10, 6))
    sns.histplot(train_df['age'], bins=20, kde=True)
    plt.title('Age Distribution')
    plt.xlabel('Age')
    plt.ylabel('Frequency')
    plt.show()
    
    • 使用seabornhistplot绘制年龄的直方图,并添加核密度估计(KDE)曲线。
  5. 绘制BMI分布图

    plt.figure(figsize=(10, 6))
    sns.histplot(train_df['bmi'], bins=20, kde=True)
    plt.title('BMI Distribution')
    plt.xlabel('BMI')
    plt.ylabel('Frequency')
    plt.show()
    
    • 同样的方法绘制BMI的分布图。
  6. 绘制费用分布图

    plt.figure(figsize=(10, 6))
    sns.histplot(train_df['charges'], bins=20, kde=True)
    plt.title('Charges Distribution')
    plt.xlabel('Charges')
    plt.ylabel('Frequency')
    plt.show()
    
    • 绘制医疗费用的分布图。
  7. 数据映射

    train_df['sex'] = train_df['sex'].map({'male': 0, 'female': 1})
    test_df['sex'] = test_df['sex'].map({'male': 0, 'female': 1})train_df['smoker'] = train_df['smoker'].map({'yes': 1, 'no': 0})
    test_df['smoker'] = test_df['smoker'].map({'yes': 1, 'no': 0})region_mapping = {'northeast': 0, 'northwest': 1, 'southeast': 2, 'southwest': 3}
    train_df['region'] = train_df['region'].map(region_mapping)
    test_df['region'] = test_df['region'].map(region_mapping)
    
    • 将性别、吸烟状态和区域信息映射为数值,以便后续分析和建模。
  8. 查看映射后的数据

    print("\nTrain Data Head (After Mapping):")
    print(train_df.head())
    print("\nTest Data Head (After Mapping):")
    print(test_df.head())
    
    • 打印映射后的数据集前几行以确认映射成功。
  9. 绘制性别分布图

    plt.figure(figsize=(10, 6))
    sns.countplot(x='sex', data=train_df)
    plt.title('Sex Distribution')
    plt.xlabel('Sex (0: Male, 1: Female)')
    plt.ylabel('Count')
    plt.show()
    
    • 使用countplot绘制性别的分布图。
  10. 绘制吸烟状态分布图

    plt.figure(figsize=(10, 6))
    sns.countplot(x='smoker', data=train_df)
    plt.title('Smoker Distribution')
    plt.xlabel('Smoker (0: No, 1: Yes)')
    plt.ylabel('Count')
    plt.show()
    
    • 绘制吸烟状态的分布图。
  11. 绘制区域分布图

    plt.figure(figsize=(10, 6))
    sns.countplot(x='region', data=train_df)
    plt.title('Region Distribution')
    plt.xlabel('Region (0: Northeast, 1: Northwest, 2: Southeast, 3: Southwest)')
    plt.ylabel('Count')
    plt.show()
    
    • 绘制不同区域的分布图。

总结

这个示例展示了如何使用Python进行数据分析与可视化,涵盖了数据读取、数据结构查看、数据分布分析和数据映射等步骤。通过这些可视化图表,可以更直观地理解数据的特征和分布情况,为后续的分析和建模打下基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/850946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu18.04手动编译官网内核kernel

前言全局说明ubuntu18.04手动编译官网内核kernel系统默认是 5.4.0-84 内核,尝试升级到 5.4.286一、说明 1.1 环境: Ubuntu 18.04.6 LTS (Linux test-vm 5.4.0-84-generic #94~18.04.1-Ubuntu SMP Thu Aug 26 23:17:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux)二、 下载官…

DC3靶机渗透测试

*概述* *测试目的* *测试范围*序号 系统 IP1 本地 192.168.152.1282 靶机 192.168.152.133*详细测试流程* *1、发现测试目标**2、信息收集*开放了80端口,是Joomla服务 扫描目录利用joomscan工具探测服务版本 Joomscan工具利用方法: https://cn.linux-console.net/?p=10704 J…

CFS靶机三层(1)

*搭建环境* *下载解压* 【网盘链接】https://pan.baidu.com/s/1slqp3878JawT_QDrzyC7Ig?pwd=9da6 靶场就在刚才的网盘链接中,下载之后有很多个7z文件,按照下面的步骤合并解压 下载完是很多个7z格式的压缩文件,直接合并解压就行,就是用 copy /b CFS三层靶机环境.7z* 靶机.7…

集合基础案例

1.案例一答:2.案例二对于该案例,我们首先是要创建学生类,否则集合的泛型会不知道该怎么填创建完学生对象,在创建集合,走后面的流程,注意,这个案例有个易错点 如图我们在集合中存入的是什么类型的数据,取出来的就是什么类型的数据,所以,打印的每个stu都是学生对象,而…

powershell配置

powershell配置 0.结果展示1.配置输出符号 function Prompt {$curdir = "$(Get-Location)".Split("\") | Select-Object -Last 1return "⚡" + $curdir + "💨" }先创建函数 函数中创建变量$curdir写入路径;路径由Split以“\”分割,…

【推荐算法】单目标精排模型——DIEN

key word: 阿里巴巴,广告点击率预测 Motivation: 截至2018年,还没有相关的推荐算法考虑到用户兴趣的趋势。作者认为大多数的模型是直接将行为视为兴趣,无法直接提取用户真正的潜在兴趣特征。因此,作者提出了DIEN模型,利用interest extractor layer通过用户历史行为序列捕…

datagridview点击列头对当前列进行排序的功能无效

DataGridView 的默认行为是支持通过单击列头对列进行排序,但在以下情况下可能会取消该功能或无法使用: 1. 绑定的数据源不支持排序 如果 DataGridView 的数据源是绑定到一个不支持排序的集合(例如,List 或未实现 IBindingList 的对象),排序功能会被禁用。 2. 列的 SortMo…

Salesforce Q3财报:营收94亿美金,净利润同比增长25%,靠什么实现逆风翻盘?

Salesforce在发布第三季度财报后,其股价迎来了久违的高光时刻。周三上午,Salesforce股票(CRM)报收367美元,较前一交易日的331.43美元上涨了10%,一跃成为市场关注的焦点。 本季度我们在收入、利润率、现金流和cRPO等各项财务指标上再次实现了卓越的表现。Agentforce,作为…

c# 创建Access数据库文件,并创建表,增加一行数据

需求:每隔一段时间存一条数据到Access数据库,数据库文件以日期命名,把这个功能封装以供调用 分解任务:1新建数据库文件 2新建数据库表 3向数据库表中增加数据 4需要有日志记录执行结果 5由于过多的dll不易于传播维护,需要将这些dll封装 参考资料: 关闭ADOX.Catalo…

转载:【AI系统】AI 系统与程序代码关系

模型算法的开发者一般会通过使用 AI 框架提供 Python 等高级语言的 API,来编写对应的 AI 算法,而 AI 算法的底层系统问题被当前层抽象隐藏。到底在代码背后 AI 系统的每一层发生和执行了什么?有哪些有意思的系统设计问题? 本文我们将从一个具体的 PyTorch 实现一个 LeNet5 …

VUE使用Canvas元素实现手绘签名(重新签名+撤回一笔)

VUE使用Canvas元素实现手绘签名(重新签名+撤回一笔) 效果:代码实现:本文来自博客园,作者:じ逐梦,转载请注明原文链接:https://www.cnblogs.com/ZhuMeng-Chao/p/18599924

雷池社区版的防爬虫功能之Bot 防护 - 人机验证

​ 介绍 互联网上有来自真人用户的流量, 但更多的是由爬虫, 漏洞扫描器, 蠕虫病毒, 漏洞利用程序等自动化程序发起的流量. 识别真人用户对提升网站的安全性至关重要, 也是防爬虫, 防扫描的关键. 该功能开启后,当用户访问您的网站时,雷池会预先检查客户端环境的合法性,如下图…