100天精通Python(数据分析篇)——第71天:Pandas文本数据处理方法之str/object类型转换、大小写转换、文本对齐、获取长度、出现次数、编码

news2024/11/18 12:31:54

在这里插入图片描述

文章目录

  • 每篇前言
  • 1. 文本数据类型介绍
    • 1)类型介绍
    • 2)类型转换
    • 3)类型区别
      • 区别1:统计字符串时
      • 区别2:检查字符串时
  • 2. Python字符串内置方法
    • 1) 大小写转换
    • 2) 文本对齐
    • 3)获取长度
    • 4)获取出现次数
    • 5)编码
  • 3. Pandas怎么使用内置方法?
    • 1) 大小写转换
    • 2) 文本对齐
    • 3)获取长度
    • 4)获取出现次数
    • 5)编码
  • 4. 注意事项
  • 代理IP推荐

每篇前言

  • 🏆🏆作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6

  • 🔥🔥本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
  • 📝​📝​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
  • 🎉🎉订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进千人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
  • 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

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

1. 文本数据类型介绍

  • Pandas文本数据类型有objectstring两种,如果一列数据中包含文本和数据,则会默认为object类型。
  • pandas1.0之前只有文本数据只有object类型,pandas1.01.0朝代之后有了string类型。
  • 如果不特殊指定类型为string,文本类型一般为object

1)类型介绍

(1)一列数据中包含文本和数据,默认情况下为object类型:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print(df)
print(df.dtypes)

运行结果:
在这里插入图片描述

(2)string类型需要通过设置dtype参数进行指定

# 方法1 :dtype='string'
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd']}, dtype='string')
print(df.dtypes)

# 方法2 : dtype=pd.StringDtype()
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd']}, dtype=pd.StringDtype())
print(df.dtypes)

运行结果:
在这里插入图片描述

2)类型转换

方法1:通过astype强制转换为string

df = pd.Series({'A': ['a', 'b', 'c', 'd']})
# 转换前
print(df)
print(df.dtypes)
# 转换后
df = df.astype("string")
print(df)
print(df.dtypes)

运行结果:
在这里插入图片描述

方法2:通过df.convert_dtypes()进行智能数据类型选择

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': ['a', 'b', 'c', 'd'],
    'B': ['ee', 'ff', 'gg', np.nan],
    'C': [1, 2, 3, 4],
    'D': [5, 6, 7, np.nan]
})
print('类型转换前')
print(df.dtypes)

df = df.convert_dtypes()  # 智能数据类型选择
print('类型转换后')
print(df.dtypes)

运行结果:
在这里插入图片描述

3)类型区别

string类型和object类型区别如下:

  • sting来说,返回数字输出的字符串访问器方法将始终返回可为空的整数类型;对于object来说,是 int 或 float,具体取决于 NA 值的存在
  • 对于string类型来说,返回布尔输出的方法将返回一个可为空的boolean布尔数据类型;而object类型还是object

区别1:统计字符串时

统计字符串s.str.count()时:

  • string类型的None返回NaN ,dtype为Int64;通过dropna()去除缺失值后dtype也是Int64
  • object类型的None返回NaN,dtpye为float64;通过dropna()去除缺失值后dtype是Int64

string类型:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

运行结果:
在这里插入图片描述

object类型:

import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='object')
print("去除空值前:")
print(s)
print(s.str.count('小'))

print("去除空值后:")
s.dropna(inplace=True)
print(s)
print(s.str.count('小'))

运行结果:
在这里插入图片描述

区别2:检查字符串时

通过str.isdigit ()检查字符串时:

  • string类型,则返回布尔类型,dtype= boolean,缺失值为NA
  • object类型,虽然返回是布尔类型,但是dtype= object, None返回 None
import pandas as pd
import numpy as np

s = pd.Series(['小明', '小红', None], dtype='string')
print("string类型:")
print(s.str.isdigit())

s = pd.Series(['小明', '小红', None], dtype='object')
print("object:")
print(s.str.isdigit())

运行结果:
在这里插入图片描述

2. Python字符串内置方法

字符串是一种常见的数据类型,我们遇到的文本、json数据等都是属于字符串的范畴。Python内置了很多处理字符串的方法,这些方法为我们处理和清洗数据提供了很大的便利。本文将介绍大小写转换、文本对齐方法、

1) 大小写转换

方法说明
string.lower()转换 string 中所有大写字符为小写
string.upper()转换 string 中的小写字母为大写
string.capitalize()把字符串的第一个字符大写
string.title()把字符串的每个单词首字母大写
string.swapcase()翻转 string 中的大小写

2) 文本对齐

方法说明
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

3)获取长度

方法说明
len(string)返回字符串的长度。

4)获取出现次数

方法说明
count(string)返回每个字符串元素出现的次数。

5)编码

方法说明
encode(‘utf-8’)字符编码,传递字符串

3. Pandas怎么使用内置方法?

  • 在日常进行数据清洗、数据分析的过程中,经常需要对字符串类型数据进行处理。而pandas其内置的基于Series.str访问器的诸多针对字符串进行处理的方法,pandas特定的列经过str之后,就可以使用各种python常用的字符处理方法以及内置函数,可以帮助我们大大提升字符串型数据处理的效率。
  • Pandas通过.str调用就可以在Series对象上使用字符串内置方法(pandas中的字符串处理函数以str开头),对数据框中的某一列进行操作,这种向量化的操作提高了处理效率。

1) 大小写转换

方法说明
series_obj.str.lower()转换 string 中所有大写字符为小写
series_obj.str.upper()转换 string 中的小写字母为大写
series_obj.str.capitalize()把字符串的第一个字符大写
series_obj.str.title()把字符串的每个单词首字母大写
series_obj.str.swapcase()翻转 string 中的大小写

准备数据:

import pandas as pd
import numpy as np

series_obj = pd.Series(['A', 'b', 'ABC', 'Abc', 'abc', 'This is abc', np.nan], dtype='string')
print(df)

运行结果:
在这里插入图片描述

1、转换 string 中所有大写字符为小写:

series_obj.str.lower()

运行结果:
在这里插入图片描述

2、转换 string 中的小写字母为大写:

series_obj.str.upper()

运行结果:
在这里插入图片描述

3、把字符串的第一个字符大写:

series_obj.str.capitalize()

运行结果:
在这里插入图片描述

4、把字符串的每个单词首字母大写(注意和capitalize的区别):

series_obj.str.title()

在这里插入图片描述

5、翻转 string 中的大小写:

series_obj.str.swapcase()

运行结果:
在这里插入图片描述

2) 文本对齐

方法说明
series_obj.str.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
series_obj.str.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
series_obj.str.center(width)返回一个原字符串居中对齐,并使用空格填充至长度 width 的新字符串

1、 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串:

# 左对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.ljust(8, fillchar='-')

运行结果:
在这里插入图片描述

2、返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

# 右对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.rjust(8, fillchar='-')

运行结果:
在这里插入图片描述

3、返回一个原字符串居中对齐,并使用空格填充至长度 width 的新字符串:

# 居中对齐:宽度为10,空余部分用 '-' 填充
series_obj.str.center(8, fillchar='-')

运行结果:

在这里插入图片描述

3)获取长度

方法说明
series_obj.str.len(string)返回字符串的长度。
series_obj.str.len()

运行结果:
在这里插入图片描述

4)获取出现次数

方法说明
series_obj.str.count(string)返回每个字符串元素出现的次数。

统计A出现了多少次,count会区分大小写的:

series_obj.str.count('A')
series_obj.str.count('a')

运行结果:

在这里插入图片描述

5)编码

方法说明
series_obj.str.encode(‘utf-8’)字符编码,传递字符串

字符编码设置为utf8:

series_obj.str.encode('utf-8')

在这里插入图片描述

4. 注意事项

1、.str访问器只能对Series数据结构使用。 除了常规列变量df.col以外,也可以对索引类型df.Index和df.columns使用

2、确保访问的对象类型是字符串str类型。 如果不是需要先astype(str)转换类型,否则会报错

3、某些方法不能在上stringSeries使用,如: series_obj.str.decode(),因为Series存储的是字符串而不是字节:

series_obj.str.decode('utf-8')

运行结果:

在这里插入图片描述

4、访问器可以多个连接使用。 如series_obj.str.lower().str.title(),使用效果叠加:

# 先设置全部小写,然后设置首字母大写
series_obj.str.lower().str.title()

运行结果:
在这里插入图片描述

代理IP推荐

python离不开爬虫,最近有些想学爬虫的小伙伴问我,代理IP哪里找,这里给大家推荐一个高匿稳定爬虫代理IP:神龙HTTP代理(需要的可自行点击了解)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js 右键弹出自定义菜单

演示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>*{margin…

Node.JS(2)--使用node执行js文件

目录 知识回顾 CommentJS规范 ECMAScript标准规范 模块化 CommonJS规范 模块化 知识回顾 I/O (Input/output) I/O操作指的是对磁盘的读写操作 Node Node是对ES标准一个实现&#xff0c;Node也是一个JS引擎通过Node可以使js代码在服务器端执行Node仅仅对ES标准进行了实…

“程序的编译+链接”,深入认识代码生成可执行程序的过程

目录 引入 编译 预编译 编译 汇编 链接 选项总结 记忆方法 运行环境 引入 博主认为学习本章内容&#xff0c;能够认识在代码跑的时候的过程。 首先&#xff0c;粗略笼统的认识程序运行过程的框架图。 编译 其次&#xff0c;再进行细化&#xff0c;细化编译的过程&…

人工智能轨道交通行业周刊-第29期(2023.1.2-1.8)

本期关键词&#xff1a;站台限界测量机器人、智慧云巴、钢轨伸缩调节器、国铁集团会议、4D毫米波雷达、车道线检测1 整理涉及公众号名单1.1 行业类RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道…

node.js+mysql博客全栈系统源码+数据库,含后台完整基础功能,小程序,web前台站点一键置灰,支持移动端适

一个 "开箱即用" 个人博客全栈系统项目&#xff01;下载地址&#xff1a;node.jsmysql博客全栈系统源码数据库 &#x1f96f; 预览 &#x1f440; 前台预览 &#x1f440; 管理端预览 &#x1f96f; v1.0.2 介绍 芒果’个人博客系统&#xff0c;包括前后台完整基…

Linux下buff/cache占用过大问题

当我们在命令行中执行free -h 查看内存时&#xff0c;发现buff/cache占用过大&#xff0c;导致其他软件没有内存可使用 从图上可以看出&#xff0c;buff/cache占用了1G多。 buff/cache是由于系统读写导致的文件缓存&#xff0c;没有及时释放。 解决方案&#xff1a;清理缓存 …

JWT JWT

JWT&#xff08;JSON WEB TOKEN&#xff09; JWT的组成 header&#xff08;头部&#xff09;&#xff1a;中主要存储了两个字段 alg&#xff0c;typ。 alg表示加密的算法默认&#xff08;HMAC SHA256&#xff09;&#xff0c;typ表示这个令牌的类型默认为JWT。 payload&#…

68、Learning Object-Compositional Neural Radi

简介 设计了一种新的双通路架构&#xff0c;其中场景分支编码场景几何和外观&#xff0c;而对象分支编码以可学习的对象激活码为条件的每个独立对象。为在严重杂乱的场景中生存训练&#xff0c;提出一种场景引导的训练策略&#xff0c;以解决遮挡区域的3D空间模糊性&#xff0c…

【ElasticSearch7.X】学习笔记(四)

【ElasticSearch7.X】学习笔记八、SpringData集成ElasticSearch8.1、框架8.1.1、SpringData8.1.2、Spring Data Elasticsearch8.2、搭建8.2.1、maven引入8.2.2、编写配置8.2.3、编写config8.2.4、Product类8.2.5、dao8.2.6、索引操作8.2.7、文档操作8.2.8、文档搜索八、SpringD…

基于 Tensorflow 2.x 从零训练 15 点人脸关键点检测模型

一、人脸关键点检测数据集 在计算机视觉人脸计算领域&#xff0c;人脸关键点检测是一个十分重要的区域&#xff0c;可以实现例如一些人脸矫正、表情分析、姿态分析、人脸识别、人脸美颜等方向。 人脸关键点数据集通常有 5点、15点、68点、96点、98点、106点、186点 等&#x…

ccc-sklearn-14-朴素贝叶斯(2)

文章目录sklearn中的其他贝叶斯算法一、MultinomialNB多项式贝叶斯sklearn中的MultinomialNB二、BernoulliNB伯努利朴素贝叶斯三、ComplementNB补集朴素贝叶斯案例&#xff1a;贝叶斯做文本分类sklearn中的其他贝叶斯算法 一、MultinomialNB多项式贝叶斯 基于原始的贝叶斯理论…

【openGauss实战2】客户端连接工具及配置

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

shell第七天练习

awk题目&#xff1a; 1、获取根分区剩余大小 2、获取当前机器ip地址 3、统计出apache的access.log中访问量最多的5个IP 4、打印/etc/passwd中UID大于500的用户名和uid 5、/etc/passwd 中匹配包含root或net或ucp的任意行 7、请打印出/etc/passwd 第一个域&#xff0c;并且在第一…

广度优先搜索BFS进阶(一):多源BFS、优先队列BFS、双端队列BFS

一、多源BFS 在上一篇博客&#xff1a;广度优先搜索BFS基础中&#xff0c;我们接触到的BFS均是单起点&#xff08;单源&#xff09;的&#xff0c;但是对于某一些问题&#xff0c;其有多个起点&#xff0c;此类问题我们称为多源BFS问题。先思考下面一道例题&#xff1a; 1.腐…

类加载,类初始化,对象创建过程总结

总结&#xff1a;假如一个类还未加载到内存中&#xff0c;那么在创建一个该类的实例时&#xff0c;具体过程是怎样的&#xff1f;父类的类构造器<clinit>() -> 子类的类构造器<clinit>() -> 父类的成员变量和实例代码块 -> 父类的构造函数 -> 子类的成…

Go第 11 章 :面向对象编程(下)

Go第 11 章 &#xff1a;面向对象编程(下) 11.1 VSCode 的使用 11.1.1 VSCode 使用技巧和经验 11.2 面向对象编程思想-抽象 11.2.1 抽象的介绍 我们在前面去定义一个结构体时候&#xff0c;实际上就是把一类事物的共有的属性(字段)和行为(方法)提取 出来&#xff0c;形成一…

手把手教你图文并茂windows10安装VMware创建CentOS-7-x86_64运行linux系统

VMware是什么 VMWare (Virtual Machine ware)可以使你的计算机上同时运行几个系统、例如windows、DOS、LINUX等同时存在&#xff0c;可以将这些系统像程序似的随时切换&#xff0c;并且不会影响主系统&#xff0c;所有系统共享一个IP。 下载 VMware官网 安装 网上搜索一个序…

LeetCode栈和队列经典例题

本期博客给大家带来了几道经典栈和队列题&#xff0c;吃透它简直易如反掌~1.括号匹配问题题目地址&#xff1a;20. 有效的括号 - 力扣&#xff08;Leetcode&#xff09;解题思路&#xff1a;在这里我们创建一个栈&#xff0c;每次将字符入栈之前先对比栈顶元素是否相同&#xf…

蓝桥杯嵌入式之 LED 闪烁

这篇文章将详细为大家介绍如何实现 LED 闪烁。 我们使用的是 HAL 库。 文章目录前言一、STM32CubeMX配置:二、LED 原理图&#xff1a;三、LED闪烁 讲解&#xff1a;1. HAL_GPIO_WritePin 函数&#xff1a;用于操作 *GPIO* 电平。2.HAL_Delay函数&#xff1a;作为毫秒级延迟的函…

【消息队列】Centos7 虚拟机安装 RocketMQ 及启动控制台

文章目录前言目的注意点官网虚拟机1. 环境变量2. 安装并启动rocketmq3. 安装docker4. docker拉取并运行rocketmq-dashboard5. 关闭防火墙6. 宿主机查看控制台7. 关闭虚拟机的进程后记前言 目的 模拟在服务器上运行RocketMQ&#xff0c;并且有控制台的能力。以后本地window可以…