如何将无扩展名的SMS垃圾短信数据集导入Pandas DataFrame?
将SMS垃圾短信数据集转换为指定Pandas DataFrame的方法
原始数据集每行以ham或spam作为类别标签,后续为短信内容,标签与内容间以空白(空格/制表符)分隔。以下是两种可靠的转换方法:
方法一:利用Pandas的正则分隔读取
直接通过read_csv的正则分隔符,精准拆分标签与内容,效率更高:
import pandas as pd # 读取文件,用正则匹配开头的ham/spam,仅拆分一次 df = pd.read_csv( 'sms_spam_collection', # 替换为你的数据集文件路径 sep='^(ham|spam)\\s+', engine='python', header=None, usecols=[1, 2], # 取分割后的类别列和内容列 encoding='latin-1' # 适配数据集的编码格式 ) # 设置指定列名 df.columns = ['Message Class', 'Messages'] # 清理内容首尾的多余空白 df['Messages'] = df['Messages'].str.strip()
方法二:逐行读取处理
适合需要自定义逻辑的场景,更直观:
import pandas as pd data_rows = [] # 打开数据集文件,指定编码避免乱码 with open('sms_spam_collection', 'r', encoding='latin-1') as f: for line in f: line = line.strip() # 找到第一个空格的位置,拆分标签与内容 split_pos = line.find(' ') msg_class = line[:split_pos] msg_content = line[split_pos+1:].strip() data_rows.append([msg_class, msg_content]) # 转换为目标格式的DataFrame df = pd.DataFrame(data_rows, columns=['Message Class', 'Messages'])
执行完上述任意一种方法后,运行print(df.head())即可得到与指定格式一致的结果。
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

