用pandas操作文本数据,涉及到增删改查,快来看看!

本文介绍了如何使用Pandas库在Python中处理文本数据,包括数据导入、查看、文本提取、分割、替换、模式提取以及长度计算。同时提供Python学习资源链接,帮助读者更全面地掌握文本数据分析技巧。

前言

文末有电子书、学习视频等资源免费赠送,不要错过哦!

如果遇到难题:

  • 软件安装报错

  • 项目源码运行有误

  • 需要帮忙编写代码 or 解决BUG

可以看文末,帮忙解决!


Pandas是一个强大的Python库,用于数据分析和处理。除了处理数值和日期数据之外,Pandas还提供了许多功能强大的工具来处理文本数据。本文将介绍如何使用Pandas来处理文本数据。

导入数据

首先,让我们导入Pandas库并加载一个包含文本数据的数据集。

import pandas as pd

# 加载数据集
data = pd.read_excel('text_data.xlsx')

一旦数据集被加载,我们可以使用Pandas提供的各种功能来处理文本数据。

1. 查看数据集

我们可以使用head()方法来查看数据集的前几行。

print(data.head())   

2. 提取文本数据

如果数据集中的某一列包含文本数据,我们可以使用str属性来访问该列,并使用各种方法来处理文本数据。例如,我们可以使用str.lower()方法将文本转换为小写。

data['text_column'] = data['text_column'].str.lower()   

3. 分割文本数据

如果我们想要将文本数据分割成多个部分,可以使用str.split()方法。例如,我们可以将一列包含多个单词的文本数据分割成多个列。

data[['word1', 'word2', 'word3']] = data['text_column'].str.split(' ', expand=True)   

4. 替换文本数据

如果我们想要替换文本数据中的某些部分,可以使用str.replace()方法。例如,我们可以将文本数据中的某个单词替换为另一个单词。

data['text_column'] = data['text_column'].str.replace('old_word', 'new_word')   

5. 删除文本数据

如果我们想要删除文本数据中的某些部分,可以使用str.replace()方法。例如,我们可以删除文本数据中的某个单词。

data['text_column'] = data['text_column'].str.replace('word_to_remove', '')   

6. 提取特定模式的文本数据

如果我们想要提取文本数据中符合特定模式的部分,可以使用str.extract()方法。例如,我们可以提取文本数据中的邮件地址。

data['email'] = data['text_column'].str.extract(r'([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)')   

7. 计算文本数据的长度

如果我们想要计算文本数据的长度,可以使用str.len()方法。例如,我们可以计算文本数据中每个单词的长度。

data['word_length'] = data['text_column'].str.len()   

总结

这只是Pandas处理文本数据的一些基本操作。Pandas还提供了许多其他功能,如删除空白字符、合并文本数据、处理缺失值等。通过灵活运用这些功能,我们可以轻松地处理和分析各种文本数据。

总结起来,Pandas是一个非常强大的工具,用于处理文本数据。它提供了各种功能和方法,使我们能够轻松地处理、分析和转换文本数据。无论是清洗数据、提取特定模式的数据还是计算文本数据的统计量,Pandas都能帮助我们快速高效地完成任务。希望本文能够帮助您更好地理解和使用Pandas来处理文本数据。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
<think>嗯,用户让我写一个Python程序,生成至少400个人的模拟信息,并且实现增删改查功能。首先,我需要考虑如何生成符合现实的数据。姓名、性别、年龄这些字段需要看起来真实。可能需要用一些库,比如Faker或者mimesis来生成假数据。不过用户可能希望自己控制生成的数据结构,特别是年龄要合理,电话号码和地址的格式要正确。然后是写入文件,用户可以选择文本文件或者Excel。可能用csv模块或者pandas库来处理,这样生成Excel文件更方便。接下来是增删改查的功能,需要设计用户交互,可能用命令行菜单,让用户选择操作。模块化编程的话,应该把不同功能分成函数或者类,比如数据生成、文件操作、CRUD功能分开。对于数据生成部分,可能需要随机生成姓名,性别随机分配,年龄在合理范围,比如18到80岁。电话号码要有正确的格式,比如中国的号码以1开头,11位。地址可以用Faker的地址生成,或者自己组合省市街道。邮箱的话,可以结合姓名和随机域名。然后是文件写入,用pandas的DataFrame来存储数据,然后导出到Excel或者文本文件。这样也比较方便后续的读取和修改。关于增删改查,读取文件到数据结构中,比如列表或DataFrame,然后进行操作后再写回文件。需要注意文件读写的同步,避免数据丢失。 用户交互部分,可能需要循环显示菜单,提示用户输入选项,然后调用对应的函数。比如输入1是添加,2是删除,根据姓名或电话查找记录。删除和修改需要先找到对应的记录,可能需要唯一标识,比如电话号码作为唯一键,因为可能有重名的情况。 另外,模块化设计很重要,比如将生成数据、保存文件、加载数据、添加、删除、修改、查找等功能封装成函数。或者使用类来管理黄页,这样数据和方法都封装在对象里,更符合OOP原则。代码规范方面,要遵循PEP8,使用有意义的变量名,添加注释说明函数的作用和参数。异常处理也需要考虑,比如文件不存在时的处理,用户输入无效选项时的提示。 测试部分,生成400条数据是否正常,各个功能是否能正确执行。可能需要打印一些示例数据,或者运行增删改查操作后检查文件是否更新。 可能遇到的问题包括:数据生成的速度,特别是400条数据会不会太慢;电话号码重复的问题,需要确保唯一性;文件读写的效率,如果数据量大,可能需要更高效的方式。此外,用户交互的友好性,比如输入错误时给出提示,而不是程序崩溃。 最后,用户要求将代码和运行截图放到Word里,所以代码需要结构清晰,截图要显示生成的数据文件和操作过程。可能需要分步展示生成文件、添加记录、删除记录等步骤的结果。 现在,按照这些思路来组织代码,先写生成数据的函数,然后处理文件读写,再实现CRUD功能,最后是用户界面。确保每个部分都模块化,方便测试和维护。</think>分步骤为您实现这个人员黄页管理系统。以下是完整实现方案: ```python """ 人员黄页管理系统 功能:数据生成、文件存储、增删改查操作 作者:AI助手 日期:2023-12-12 """ import random import pandas as pd from faker import Faker from typing import List, Dict # 初始化Faker库 fake = Faker('zh_CN') def generate_data(num: int) -> List[Dict]: """ 生成模拟人员数据 :param num: 需要生成的数据条数 :return: 包含人员信息的字典列表 """ data = [] used_phones = set() for _ in range(num): while True: # 生成唯一电话号码 phone = fake.unique.phone_number() if phone not in used_phones: used_phones.add(phone) break person = { '姓名': fake.name(), '性别': random.choice(['男', '女']), '年龄': random.randint(18, 80), '电话': phone, '地址': fake.address().replace('\n', ''), '邮箱': fake.email() } data.append(person) return data def save_to_excel(data: List[Dict], filename: str): """ 保存数据到Excel文件 :param data: 人员数据列表 :param filename: 文件名 """ df = pd.DataFrame(data) df.to_excel(filename, index=False) print(f"数据已保存至 {filename}") def load_data(filename: str) -> pd.DataFrame: """ 从文件加载数据 :param filename: 文件名 :return: DataFrame格式的数据 """ try: df = pd.read_excel(filename) return df except FileNotFoundError: print("文件不存在,即将创建新文件") return pd.DataFrame() def search_record(df: pd.DataFrame, keyword: str) -> pd.DataFrame: """ 搜索记录 :param df: 数据集 :param keyword: 搜索关键词 :return: 匹配的记录 """ mask = df.apply(lambda row: row.astype(str).str.contains(keyword).any(), axis=1) return df[mask] def delete_record(df: pd.DataFrame, phone: str) -> pd.DataFrame: """ 删除指定电话号码的记录 :param df: 数据集 :param phone: 要删除的电话号码 :return: 更新后的数据集 """ return df[df['电话'] != phone] def modify_record(df: pd.DataFrame, phone: str, new_data: Dict) -> pd.DataFrame: """ 修改指定记录 :param df: 数据集 :param phone: 要修改的电话号码 :param new_data: 新数据字典 :return: 更新后的数据集 """ index = df[df['电话'] == phone].index if not index.empty: df.loc[index[0]] = new_data return df def show_menu(): """ 显示交互菜单 """ print("\n人员黄页管理系统") print("1. 生成新数据") print("2. 添加记录") print("3. 删除记录") print("4. 修改记录") print("5. 搜索记录") print("6. 显示所有记录") print("7. 退出系统") def main(): FILENAME = "yellow_pages.xlsx" # 初始化数据 df = load_data(FILENAME) while True: show_menu() choice = input("请选择操作(1-7):") if choice == '1': num = int(input("请输入要生成的数据条数:")) new_data = generate_data(num) save_to_excel(new_data, FILENAME) df = load_data(FILENAME) elif choice == '2': new_person = generate_data(1)[0] df = df.append(new_person, ignore_index=True) save_to_excel(df, FILENAME) print("已添加新记录:") print(new_person) elif choice == '3': phone = input("请输入要删除的电话号码:") df = delete_record(df, phone) save_to_excel(df, FILENAME) print("删除操作已完成") elif choice == '4': phone = input("请输入要修改的电话号码:") if not df[df['电话'] == phone].empty: new_person = generate_data(1)[0] df = modify_record(df, phone, new_person) save_to_excel(df, FILENAME) print("修改操作已完成") else: print("未找到该电话号码对应的记录") elif choice == '5': keyword = input("请输入搜索关键词:") results = search_record(df, keyword) print(f"找到 {len(results)} 条匹配记录:") print(results) elif choice == '6': print("当前所有记录:") print(df) elif choice == '7': print("感谢使用,再见!") break else: print("无效输入,请重新选择") if __name__ == "__main__": main() ``` 代码结构说明: 1. 数据生成模块:使用Faker库生成符合中文特征的模拟数据 2. 文件操作模块:使用pandas进行Excel文件读写 3. CRUD模块:实现增删改查核心功能 4. 界面交互模块:提供命令行菜单系统 主要特点: 1. 生成的电话号码保证唯一性 2. 使用类型提示提高代码可读性 3. 数据持久化存储为Excel文件 4. 提供完整的用户交互界面 5. 模块化设计方便功能扩展 运行效果示例: ``` 人员黄页管理系统 1. 生成新数据 2. 添加记录 3. 删除记录 4. 修改记录 5. 搜索记录 6. 显示所有记录 7. 退出系统 请选择操作(1-7):1 请输入要生成的数据条数:400 数据已保存至 yellow_pages.xlsx ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值