搜索

查看: 3124|回复: 11

[Python] pandas如何将表中的字符串转成数值型

[复制链接]
发表于 2023-5-4 17:22:27 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:22:27 3124 11 看全部
目录
  • pandas将表中的字符串转成数值型
  • 扩展:pandas 把某一列中字符串变数值_Pandas对文本数据处理
  • 一、str属性
  • 二、替换和分隔
  • 三、提取子串
  • 1、提取第一个匹配的子串
  • 四、生成哑变量
    pandas将表中的字符串转成数值型
    在用pd.read_csv读数据时,将要转换数据类型的列名和类型名构成字典,传给dtype
    import numpy as np
    import pandas as pd
    path = 'house_data.csv'
    col = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS',
           'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
    dict_dtype = {}
    for i in col:
        dict_dtype = np.float64
    # print(dict_dtype)
    data = pd.read_csv(path, header=None, names=col, sep=',', dtype=dict_dtype)
    扩展:pandas 把某一列中字符串变数值_Pandas对文本数据处理
    在处理数据的时候,对数值型的数据处理还是比较方便的,但是有时候数值型数据出现问题后就会比较头痛了,因为文本数据的排列组合可是有很多很多的,今天我们就学习一下如何对文本数据进行处理,这样我们接下来在工作中遇到了这些情况就可以少掉一下头发啦。

    20230221151523115.jpg

    20230221151523115.jpg


    一、str属性
    文本数据也就是我们常说的字符串,pandas为series提供了str属性,通过它可以方便对每个元素进行操作。

    20230221151523116.jpg

    20230221151523116.jpg


    为了防止数据被弄坏,我们先预留一个备份以防万一。

    20230221151523117.jpg

    20230221151523117.jpg


    这里我们是不能使用backup_user_info = user_info的因为这样的话一个更改另外一个也会更改。
    在之前我们也已经了解过,在对series中每个元素处理时,我们可以使用map或apply方法,比如我们想把星球列下面的地球和外星转换为英文,可以使用下面的方式。

    20230221151523118.jpg

    20230221151523118.jpg


    这时候我们在将表恢复成原来的样子。

    20230221151523119.jpg

    20230221151523119.jpg


    将哪个星球列下的星球改为大写的英文后再改为小写
    首先更改为英文

    20230221151523120.jpg

    20230221151523120.jpg


    然后设置一个函数,将星球改为大写,原理为upper()方法

    20230221151523121.jpg

    20230221151523121.jpg


    然后在设置为小写,原理为lower方法

    20230221151523122.jpg

    20230221151523122.jpg


    给英雄们的身高加上一个单位

    20230221151524123.jpg

    20230221151524123.jpg


    我们通过str属性来访问之后用到的方法名与 Python 内置的字符串的方法名一样。并且能够自动排除缺失值。 我们再来试试其他一些方法。例如,统计每个字符串的长度。

    20230221151524124.jpg

    20230221151524124.jpg


    将cm替换成空白的字符串

    20230221151524125.jpg

    20230221151524125.jpg


    将身高列的元素类型转换为整数型

    20230221151524126.jpg

    20230221151524126.jpg


    生成一个新的列,列名为姓名的长度,元素为英雄姓名的长度(len方法)

    20230221151524127.jpg

    20230221151524127.jpg


    查看表的元素类型

    20230221151524128.jpg

    20230221151524128.jpg


    将年不年轻列的中的中年属性更改为中老年属性

    20230221151524129.jpg

    20230221151524129.jpg


    查看城市列中每个元素有几个字

    20230221151524130.jpg

    20230221151524130.jpg


    查看年不年轻列中每个元素是否有轻这个字符串

    20230221151524131.jpg

    20230221151524131.jpg


    二、替换和分隔
    使用.srt属性也支持替换与分割操作。先来看下替换操作,例如:将大写的R转换为小写的r。

    20230221151524132.jpg

    20230221151524132.jpg


    将列中的数据进行分隔

    20230221151524133.jpg

    20230221151524133.jpg


    将是否年轻按年进行分隔,结果如上所述。
    分割列表中的元素可以使用 get 或 [] 符号进行访问:

    20230221151524134.jpg

    20230221151524134.jpg


    比如说电影的主演有很多人, 可能是用逗号, 或者/ 进行分割, 这是可以用这种方法转换成列表
    在表中添加一列英雄的爱人列

    20230221151524135.jpg

    20230221151524135.jpg


    20230221151524136.jpg

    20230221151524136.jpg


    将爱人列以,号分隔

    20230221151524137.jpg

    20230221151524137.jpg


    这时候就可以让某一行的这个元素以列表表现出来。

    20230221151525138.jpg

    20230221151525138.jpg


    将索引列改为英雄姓名,并查看蜘蛛侠和灭霸的爱人

    20230221151525139.jpg

    20230221151525139.jpg


    三、提取子串
    既然是在操作字符串,很自然的大家可能会想到是否可以从一个长的字符串中提取出子串。答案是可以的。

    1、提取第一个匹配的子串
    extract方法接受一个正则表达式并至少包含一个捕获组,指定参数 expand=True可以保证每次都返回DataFrame。例如,现在想要匹配空字符串前面的所有的字母,可以使用如下操作:
    查看哪位英雄的所在的星球包括E这个字符串

    20230221151525140.jpg

    20230221151525140.jpg


    查看哪位英雄所在的城市包括纽这个字符串

    20230221151525141.jpg

    20230221151525141.jpg


    四、生成哑变量
    首先我们先了解一下什么是哑变量:
    哑变量原名为虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到两个方程的作用,而且接近现实。
    在pandas中我们可以通过get_dummies 方法可以将字符串转为哑变量,sep 参数是指定哑变量之间的分隔符。

    20230221151525142.jpg

    20230221151525142.jpg


    对英雄姓名进行哑变量转换

    20230221151525143.jpg

    20230221151525143.jpg


    从结果可以看出,第0行的英雄姓名是蜘蛛侠,第1行的英雄姓名是灭霸,哑变量转换就是将每一个选择匹配哪一行的数据。
    对那个星球进行哑变量转换

    20230221151525144.jpg

    20230221151525144.jpg


    从结果可以看出,在地球的英雄是第0、2、3、4、6行的,对应的英雄名称为(蜘蛛侠、奇异博士、钢铁侠、蝙蝠侠、黑寡妇)
    到此这篇关于pandas将表中的字符串转成数值型的文章就介绍到这了,更多相关pandas字符串转成数值型内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-29 02:09:27 | 显示全部楼层
    dxf17 2023-6-29 02:09:27 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 20:04:23 | 显示全部楼层
    123456823 2023-6-29 20:04:23 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 20:30:45 | 显示全部楼层
    永远爱你冰塘 2023-6-29 20:30:45 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    发表于 2023-6-30 01:17:22 | 显示全部楼层
    123456819 2023-6-30 01:17:22 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-30 03:09:19 | 显示全部楼层
    无人岛屿颈 2023-6-30 03:09:19 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-30 03:18:19 | 显示全部楼层
    哈哈SE7 2023-6-30 03:18:19 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-6-30 13:08:13 | 显示全部楼层
    音乐之家1 2023-6-30 13:08:13 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-7-3 11:50:54 | 显示全部楼层
    米老鼠和蓝精鼠v 2023-7-3 11:50:54 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-4 05:50:29 | 显示全部楼层
    胡37 2023-7-4 05:50:29 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表