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

7. Pandas 字符串与类别数据处理

Pandas 字符串与类别数据处理

本文将介绍 Pandas 中字符串与类别数据的处理方法,涵盖字符串操作(大小写转换、替换、分割、匹配与查找等)以及类别变量的类型转换与优化。通过示例展示如何在 数据清洗、统计分析与特征工程 中高效处理文本和离散型数据,为后续建模与可视化打下基础。


1. 字符串操作方法

在 Pandas 中,Series 对象的字符串方法可通过 .str 访问,提供了丰富的文本处理功能。

import pandas as pddata = {"姓名": ["张三", "李四", "王五", "赵六"],"城市": ["北京", "上海", "广州", "深圳"],"邮箱": ["ZhangSan@example.com", "Lisi@example.com", "WANGwu@sample.com", "zhaoLIU@test.com"]
}df = pd.DataFrame(data)
print(df)
   姓名  城市                    邮箱
0  张三  北京  ZhangSan@example.com
1  李四  上海      Lisi@example.com
2  王五  广州     WANGwu@sample.com
3  赵六  深圳      zhaoLIU@test.com

1.1 大小写转换

df1 = pd.DataFrame(df['邮箱'])# 全部大写
df1['邮箱_upper'] = df['邮箱'].str.upper()# 全部小写
df1['邮箱_lower'] = df['邮箱'].str.lower()print(df1)
                     邮箱              邮箱_upper              邮箱_lower
0  ZhangSan@example.com  ZHANGSAN@EXAMPLE.COM  zhangsan@example.com
1      Lisi@example.com      LISI@EXAMPLE.COM      lisi@example.com
2     WANGwu@sample.com     WANGWU@SAMPLE.COM     wangwu@sample.com
3      zhaoLIU@test.com      ZHAOLIU@TEST.COM      zhaoliu@test.com

1.2 字符串替换

# 将邮箱中的 example.com 替换为 demo.com
df['邮箱'] = df['邮箱'].str.replace('example.com', 'demo.com')
print(df)
   姓名  城市                 邮箱
0  张三  北京  ZhangSan@demo.com
1  李四  上海      Lisi@demo.com
2  王五  广州  WANGwu@sample.com
3  赵六  深圳   zhaoLIU@test.com

1.3 字符串分割

# 提取邮箱用户名(@ 前的部分)
df['邮箱用户名'] = df['邮箱'].str.split('@').str[0]
print(df)
   姓名  城市                 邮箱     邮箱用户名
0  张三  北京  ZhangSan@demo.com  ZhangSan
1  李四  上海      Lisi@demo.com      Lisi
2  王五  广州  WANGwu@sample.com    WANGwu
3  赵六  深圳   zhaoLIU@test.com   zhaoLIU

1.4 字符串匹配与查找

# 检查邮箱中是否包含 'demo'
df['包含_demo'] = df['邮箱'].str.contains('demo')
print(df)
   姓名  城市                 邮箱     邮箱用户名  包含_demo
0  张三  北京  ZhangSan@demo.com  ZhangSan     True
1  李四  上海      Lisi@demo.com      Lisi     True
2  王五  广州  WANGwu@sample.com    WANGwu    False
3  赵六  深圳   zhaoLIU@test.com   zhaoLIU    False

更多常用字符串方法

  • 去除空格:str.strip()
  • 提取子串:str.slice(start, end)
  • 正则匹配:str.extract(pattern)

2. 类别变量处理

类别变量(Categorical Variable)表示有限的离散型特征,例如 性别、地区、等级、学历 等。
在 Pandas 中,可使用 astype('category') 将字符串类型转换为 类别类型,以优化内存并提升计算效率。

# 新增性别列
df['性别'] = ['男', '女', '男', '女']# 转换为类别类型
df['性别'] = df['性别'].astype('category')
print(df.dtypes)
# 新增性别列
df['性别'] = ['男', '女', '男', '女']# 转换为类别类型
df['性别'] = df['性别'].astype('category')
print(df.dtypes)
姓名           object
城市           object
邮箱           object
邮箱用户名        object
包含_demo        bool
性别         category
dtype: object

2.1 类别属性与编码

# 查看类别
print(df['性别'].cat.categories)print()# 查看类别编码
print(df['性别'].cat.codes)
Index(['女', '男'], dtype='object')0    1
1    0
2    1
3    0
dtype: int8

2.2 排序类别

# 删除多余的列
df.drop(['邮箱用户名', '包含_demo'], axis=1, inplace=True)# 定义有序类别
df['学历'] = pd.Series(['本科', '硕士', '博士', '本科'])
学历类型 = pd.CategoricalDtype(categories=['本科', '硕士', '博士'], ordered=True)
df['学历'] = df['学历'].astype(学历类型)# 排序
df_sorted = df.sort_values('学历')
print(df_sorted)
   姓名  城市                 邮箱 性别  学历
0  张三  北京  ZhangSan@demo.com  男  本科
3  赵六  深圳   zhaoLIU@test.com  女  本科
1  李四  上海      Lisi@demo.com  女  硕士
2  王五  广州  WANGwu@sample.com  男  博士

3. 小结

  • 字符串处理:通过 .str 可以实现大小写转换、替换、分割、匹配、正则提取等常用操作,便于 文本数据清洗与特征构造
  • 类别变量处理:使用 astype('category') 可减少内存消耗、提升计算效率;结合 CategoricalDtype 可以定义 有序类别 并进行排序。
  • 应用场景:字符串与类别数据处理在 数据清洗、特征工程和建模 中至关重要,能够为后续的统计分析与机器学习提供更高质量的输入数据。
http://www.dtcms.com/a/442192.html

相关文章:

  • 【iOS】简单的四则运算
  • Tomcat的CATALINA_BASE
  • 嵌入式 Tomcat 与 Spring MVC 集成
  • MyBatis 进阶
  • 软件设计师-软件工程-软件过程模型
  • 论坛网站方案手机网站建设的趋势
  • LeetCode每日一题——单调数列
  • LeetCode 100题(10题)
  • 后端开发网站做一些什么建设部网站官网 造价鉴定
  • day52-Zabbix(第一部分)
  • 依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索
  • 7-1-查询练习
  • Numpy 手搓线性回归
  • 昆明网站服务器湖北seo推广
  • 医院网站建设怎么样盐城网站建设效果
  • dockerfile理解
  • SpringBoot集成Druid连接池_配置优化与监控实践指南
  • 12380网站建设打算公众号小程序开发公司
  • 高并发场景下的前后端数据同步策略:长轮询、SSE与WebSocket对比分析
  • 网站推广对接北京手机网站搭建费用
  • Raydium
  • 动态Vault
  • 量化交易策略中ATR与波动率的配合
  • 便宜的网站设计企业永久免费自动建站系统
  • 深入解析JS事件循环机制 (Event Loop)
  • 亭湖区建设局网站小红书推广计划
  • 吃透大数据算法-时间轮(TimingWheel)
  • 从输入URL到展示出页面的这个过程~
  • WebDAV 与 SMB 在钓鱼攻击中的区别
  • 8. Pandas 日期与时间序列数据处理