Pandas实战——文本数据操作

pandas in action.png

原书地址

本篇笔记为原书第六章节的内容。

  • Working with text data

本章节主要是对文本数据进行相关操作的。

文本数据本来就是比较“杂乱无章”的,格式也是相对来说比较多样化的,因此在实际应用中对文本数据的预处理是相对来说比较重要,也是相对繁琐的。

字母大小写及空格

  • 读取文本文件生成dataframe
import pandas as pd
import numpy as np

inspections_data = './data/pandas_in_action/chicago_food_inspections.csv'
inspections_df = pd.read_csv(inspections_data)
inspections_df
read_csv
text with whitespace
  • 处理文本里的空格 df[col].str.rstrip() / df[col].str.lstrip() / df[col].str.strip()


    strip()
# 循环遍历对各列值进行处理
for col in inspections_df.columns:
    inspections_df[col] = inspections_df[col].str.strip()
    
  • 字母大小写或其他格式 lower() / upper() / capitalize() / title()


    lower() ...

文本切片处理及字符替换

对某列的文本数据进行初探,查看其实数据情况:

inspections_df['Risk'].unique()
"""
array(['Risk 1 (High)', 'Risk 2 (Medium)', 'Risk 3 (Low)', 'All', nan],
      dtype=object)
"""

从上面的结果可看出Risk列里含有5种不同的数据,期中包括All和nan,这就需要我们对其值做一定的预处理,如缺失值处理,字符替换等。

inspections_df = inspections_df.dropna(subset=['Risk'])
inspections_df['Risk'].unique()
"""
array(['Risk 1 (High)', 'Risk 2 (Medium)', 'Risk 3 (Low)', 'All'],
      dtype=object)
"""
inspections_df = inspections_df.replace(to_replace='All', value='Risk 4 (Extreme)')
inspections_df['Risk'].unique()
"""
array(['Risk 1 (High)', 'Risk 2 (Medium)', 'Risk 3 (Low)',
       'Risk 4 (Extreme)'], dtype=object)
"""
replace()
  • 字符串切片处理,其实python的字符串处理方法都可以用在此处。


    slice().png
chain operations

布尔方法

  • 文本中是否含有某个字符串片断 str.contains(str1)
  • 文本是否以某个字符串片断开始 str.startswith(str1)
  • 文本是否以某个字符片断结束 str.endswith(str1)

分割文本数据 str.split()

具体方法操作可借鉴python的string的分割操作split(),这里就不详细记录了。

split()

文本操作含有正则式(regex)

  • str.replace(reg1, str1, regex=True)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容