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