文本字符串中提取数据进行分析
生活随笔
收集整理的這篇文章主要介紹了
文本字符串中提取数据进行分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求
在進行數據分析的時候,有時候會碰到需要從文本字符串中提取需要的數據來進行分析的情況,這種需求在網絡爬蟲數據分析非常常見。
比如,需要下列表格“基礎薪資規則”字段中提取階梯單量和價格。而且表格中,大部分規則是4檔單量和價格,也有部分是3檔規則和價格。
格式為:
| 第1檔單量 | 第2檔單量 | 第3檔單量 | 第4檔單量 | 第1檔價格 | 第2檔價格 | 第3檔價格 | 第4檔價格 |
| 200 | 250 | 300 | 9999 | 3.8 | 4.8 | 5.0 | 5.2 |
| 200 | 250 | 300 | 9999 | 3.8 | 4.8 | 5.0 | 5.2 |
| ? | ? | ? | ? | ? | ? | ? | ? |
?方法
使用Python中檔re模塊, 能夠從一串有規律文本字符串中提取所需要檔數據,配合正則表達式,功能非常強大。
# 提取特征數字,由于存在多個數字,findall()會返回一個列表 # 數據的pattern特征,注意到[0,200)單中需要提取數字200,前面是一個逗號,后面是一個括號+單,提取的內容放在()里,200后的括號,要識別“)”需要用到轉義符號\ def find_orderNum(x):patt = ',(.*?)\)單' pattern = re.compile(patt)return pattern.findall(x) df['檔位單量'] = df['基礎薪資規則'].apply(find_orderNum)# 現有檔位數 def find_step_num(x):return len(x) df['現檔位數'] = df['檔位價格'].apply(find_step_num)# 拆分階梯單量 def find_orderNum1(x):return eval(x[0]) def find_orderNum2(x):return eval(x[1]) def find_orderNum3(x):return eval(x[2]) def find_orderNum4(x):if len(x)>3:return eval(x[3])else:return eval(x[2])df['現一檔單量'] = df['檔位單量'].apply(find_orderNum1) df['現二檔單量'] = df['檔位單量'].apply(find_orderNum2) df['現三檔單量'] = df['檔位單量'].apply(find_orderNum3) df['現四檔單量'] = df['檔位單量'].apply(find_orderNum4)結果如下:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的文本字符串中提取数据进行分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中都全局变量和局部变量
- 下一篇: Pandas数据分析常用数据操作(3年总