首页 > 编程问答 >to_numeric() 为所有数值添加小数

to_numeric() 为所有数值添加小数

时间:2024-07-25 04:38:53浏览次数:7  
标签:python pandas dataframe data-analysis pandas-melt

我有一个如下所示的数据集:

profession     Australia_F   Australia_M      Canada_F      Canada_M    Kenya_F   Kenya_M
Author         #DIV/0!       80               55            34          60        23
Librarian      10            34               89            33          89        12
Pilot          78            12               67            90          12        55

要根据这些数据创建热图,我将其融化并将值转换为数值。

melted_df = pd.melt(df, id_vars='Profession', var_name='Country_Gender', value_name='Number')


melted_df[['Country', 'Gender']] = melted_df['Country_Gender'].str.split('_', expand=True)
melted_df['Number'] = pd.to_numeric(melted_df['Number'], errors='coerce')

pd.to_numeric 步骤之前,数字很好。但是,应用此函数后,会发生两件事:

  • 小数点 (.0) 会添加到所有数值中。例如 80 变为 80.0
  • #DIV/0!更改为 NULL

我可以将未知值更改为 NULL,但我想避免使用小数。我在这里可以做什么?

此步骤之后我需要做什么:

heatmap_data = melted_df.pivot_table(index='Profession', columns=['Country', 'Gender'], values='Percentage')
...generating heatmap...

可以使用 .astype('Int64') 方法而不是 pd.to_numeric 将一列转换为整数,同时还允许空值。以下是如何修改代码的方法:

melted_df = pd.melt(df, id_vars='Profession', var_name='Country_Gender', value_name='Number')
melted_df[['Country', 'Gender']] = melted_df['Country_Gender'].str.split('_', expand=True)

# 使用 .astype('Int64') 将 'Number' 列转换为整数,同时允许空值
melted_df['Number'] = melted_df['Number'].replace('#DIV/0!', pd.NA)
melted_df['Number'] = melted_df['Number'].astype('Int64')

heatmap_data = melted_df.pivot_table(index='Profession', columns=['Country', 'Gender'], values='Number')
# ...生成热图...

这将执行以下操作:

  1. 将 '#DIV/0!' 替换为 pd.NA : 这确保了任何错误值都表示为 pandas 可以识别的空值。
  2. 将“Number”列转换为整数 : .astype('Int64') 方法将该列转换为整数数据类型,同时仍然允许空值(由 pd.NA 表示)。

通过此更改,的数字应不再包含小数,并且仍然可以创建热图。

标签:python,pandas,dataframe,data-analysis,pandas-melt
From: 78469275

相关文章

  • 用于打印脚本输出的 Python 实用程序
    我可以发誓有一个实用程序可以打印一个python脚本,其输出交织在一起。例如,给定一个脚本:a=2b=3print(a+b)print(a*b)该实用程序将输出a=2b=3print(a+b)#>5print(a*b)#>6有人知道该实用程序的名称吗?我最难找到它。谢谢你!描述的实用程序没有标......
  • a method to make some handy tools with python
    Inmyworkingofcomputer,therearealotofsimplejobsthatarefrequentlyrepeated.Itriedtofindawaytomakethesejobbeenprocessedeasily.Method1:Themethodiswritingascripttodothejob,andexecutingthescriptbyutoolsextensionuto......
  • Python网络爬虫详解:实战豆瓣电影信息采集
    文章目录前言一、爬虫是什么?二、常用库及其作用1.Requests2.BeautifulSoup3.lxml4.Scrapy5.Selenium6.PyQuery7.Pandas8.JSON9.Time三、实现步骤步骤一:环境准备步骤二:数据采集步骤三:数据处理步骤四:数据存储总结前言随着互联网的迅猛发展和数据分析需求的不......
  • python学习之内置函数
    Python拥有许多内置函数,这些函数是Python的一部分,不需要额外导入即可直接使用。这些函数提供了对Python解释器功能的直接访问,涵盖了从数学计算到类型检查、从内存管理到异常处理等各个方面。下面是一些常用的Python内置函数及其简要说明:一、Printprint函数大家都不会......
  • Python中以函数为作用域
    点击查看代码#第一题foriteminrange(10):#不报错,没有函数,所有操作在全局作用域里面执行,item最后赋值为:9,此时item在缩进与全局都可以使用passprint(item)#第二题item=10deffunc():foriteminrange(10):#优先在本地查找,找不到在到全局查找p......
  • 掌握IPython宏:%%macro命令的高效使用指南
    掌握IPython宏:%%macro命令的高效使用指南在编程中,宏是一种允许你定义可重用代码片段的强大工具。IPython,这个增强版的Python交互式环境,提供了一个名为%%macro的魔术命令,允许用户创建宏,从而提高代码的可重用性和效率。本文将详细介绍如何在IPython中使用%%macro命令创建宏,并......
  • 7月24号python:库存管理
    7月24号python:库存管理题目:​ 仓库管理员以数组stock形式记录商品库存表。stock[i]表示商品id,可能存在重复。原库存表按商品id升序排列。现因突发情况需要进行商品紧急调拨,管理员将这批商品id提前依次整理至库存表最后。请你找到并返回库存表中编号的最小的元素以便及......
  • IPython的Bash之舞:%%bash命令全解析
    IPython的Bash之舞:%%bash命令全解析IPython的%%bash魔术命令为JupyterNotebook用户提供了一种在单元格中直接执行Bash脚本的能力。这个特性特别适用于需要在Notebook中运行系统命令或Bash特定功能的场景。本文将详细介绍如何在IPython中使用%%bash命令,并提供实际的代码示......
  • Python数据分析与可视化大作业项目说明(含免费代码)
    题目:对全球和中国互联网用户的数据分析与可视化代码下载链接:https://download.csdn.net/download/s44359487yad/89574688一、项目概述1.1.项目背景:互联网是当今时代最重要和最有影响力的技术之一,它已经深刻地改变了人们的生活、工作、学习等方面。互联网用户数据是反映......
  • IPython的跨界魔术:%%javascript命令深度解析
    IPython的跨界魔术:%%javascript命令深度解析IPython,作为Python编程的强大交互式工具,提供了多种魔术命令来扩展其功能。其中,%%javascript魔术命令允许用户在IPythonNotebook中直接执行JavaScript代码,打通了Python和JavaScript两个世界,为数据可视化、Web内容操作等提供了便......