成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文學(xué)會(huì)效率提升技巧

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
我們平時(shí)在跑數(shù)據(jù)的時(shí)候可能會(huì)將數(shù)據(jù)結(jié)果存儲(chǔ)在txt文件中,不知道大家平時(shí)是怎么處理txt文件中的數(shù)據(jù)的,相信各位同學(xué)都有自己的方法,用python的pandas包或者把數(shù)據(jù)塞進(jìn)數(shù)據(jù)庫(kù)再用sql等等。

[[396960]]

之前跟大家分享過SQL和EXCEL效率提升的小技巧,鏈接放在了文章末尾,今天跟大家分享一下多年來一直用的python效率提升的方法。這個(gè)方法是某位上古大神傳授于我?guī)煾担瑤煾涤謧魇谟谖摇?/p>

我們平時(shí)在跑數(shù)據(jù)的時(shí)候可能會(huì)將數(shù)據(jù)結(jié)果存儲(chǔ)在txt文件中,不知道大家平時(shí)是怎么處理txt文件中的數(shù)據(jù)的,相信各位同學(xué)都有自己的方法,用python的pandas包或者把數(shù)據(jù)塞進(jìn)數(shù)據(jù)庫(kù)再用sql等等。無論是用哪種方法在處理數(shù)據(jù)的時(shí)候有很多方法是通用的,比如where,join等等,可以先將這些常用方法寫成python腳本,需要對(duì)txt文件的數(shù)據(jù)進(jìn)行處理時(shí)直接用腳本來處理txt文件。優(yōu)點(diǎn)在于省掉了txt和數(shù)據(jù)庫(kù)之間來回倒騰數(shù)據(jù)的時(shí)間,也省掉了用pandas讀取數(shù)據(jù)寫腳本的時(shí)間,能夠快速方便地驗(yàn)證和處理數(shù)據(jù)。

在舉例子之前要先介紹一個(gè)linux中“管道” 的概念,熟悉linux的人應(yīng)該對(duì)這個(gè)概念不陌生,符號(hào)為“|” ,管道的作用在于連接多條命令比如命令:cat data.txt|wc -l 的含義就是查看data中數(shù)據(jù)條數(shù),其中“|”就是管道,將cat data.txt的輸出作為wc -l的輸入。總結(jié)來說只要第一個(gè)命令向標(biāo)準(zhǔn)輸出寫入,而第二個(gè)命令是從標(biāo)準(zhǔn)輸入讀取,那么這兩個(gè)命令就可以形成一個(gè)管道。同樣我們可以用將輸出傳遞給python腳本。

明白了管道的概念,那我們開始吧,案例數(shù)據(jù)如下:

data1.txt記錄用戶的id以及年齡,data2.txt記錄用戶的消費(fèi)信息

首先我們寫一個(gè)實(shí)現(xiàn)where功能的python腳本,腳本如下:

where.py

  1. #!/usr/bin/env python 
  2. # -*- encoding:utf-8 -*- 
  3.  
  4. import sys 
  5. import re 
  6. import cutmode 
  7.  
  8. def where(col, cmpexpr, val, cmptype):  
  9.   sw ={ 
  10.       '>': lambda y, x: y > x,  
  11.       '>=': lambda y, x: y >= x, 
  12.       '<': lambda y, x: y < x, 
  13.       '<=': lambda y, x: y <= x, 
  14.       '==': lambda y, x: y == x,  
  15.       '!=': lambda y, x: y != x,  
  16.   } 
  17.   for line in sys.stdin:  
  18.       line = line.strip() 
  19.       #data= re.split('\s+',line) 
  20.       data = line.split('\t'
  21.       if len(data) <= col : continue 
  22.       if cmptype == 'int':  
  23.           number = int(data[col]) 
  24.           val = int(val) 
  25.       elif cmptype == 'float'
  26.           number = float(data[col]) 
  27.           val = float(val) 
  28.       else:  
  29.           number = data[col] 
  30.         
  31.       if sw[cmpexpr](number,val): 
  32.           print line.strip() 
  33.                 
  34. if __name__ == '__main__'
  35.   col = int(sys.argv[1]) 
  36.   cmpexpr = sys.argv[2] 
  37.   val = sys.argv[3] 
  38.   cmptype = sys.argv[4] 
  39.   where(col, cmpexpr, val, cmptype) 

程序就不一行行解釋了,簡(jiǎn)單來說一下幾個(gè)參數(shù),其中 python 程序的四個(gè)參數(shù)

  • col 表示第幾列
  • cmpexpr 表示比較運(yùn)算符(>,>=,<,<=,=,!=)
  • val表示要比較的數(shù)字
  • cmptype表示數(shù)據(jù)類型

我們篩選年齡大于24歲的用戶,指令和結(jié)果如下:

  1. cat data.txt|python where.py 1 '>=' 25 int 

join.py

  1. #!/usr/bin/env python 
  2. # -*- encoding:utf-8 -*- 
  3.  
  4. import sys 
  5. import re 
  6.  
  7. def makeJoin(joinfields, file_list=[]): 
  8.   dict = {} 
  9.   file_last = open(file_list[-1]) 
  10.   k, v = joinfields[-1].split(':'
  11.   k, v = int(k),int(v) 
  12.   for line in file_last: 
  13.       sps = re.split('\s+', line) 
  14.       if len(sps) >= max(k,v): 
  15.           val = sps[v] if v >= 0 else '' 
  16.           dict.setdefault(sps[k], val) 
  17.             
  18.   file_last.close() 
  19.     
  20.   for i in xrange(len(file_list)-1):  
  21.       fd = open(file_list[i], 'r')  
  22.       field = joinfields[i].split(':')[0] 
  23.       for data in fd.readlines(): 
  24.           attr = re.split('\t', data.strip()) 
  25.           if len(attr) <= int(field):continue 
  26.           joinid = attr[int(field)] 
  27.           appendix = dict[joinid] if joinid in dict else 'noright' 
  28.           print data.strip() + '\t' + appendix 
  29.       fd.close() 
  30.  
  31. if __name__ == '__main__'
  32.   joinfields = sys.argv[1].split(','
  33.   file_list = sys.argv[2:] 
  34.   makeJoin(joinfields, file_list) 

下面將兩個(gè)數(shù)據(jù)進(jìn)行join,計(jì)算出每個(gè)用戶的年齡以及對(duì)應(yīng)的花費(fèi)。

指令如下:python join.py '0:1,0:1' 'data1.txt' 'data2.txt'

  • 第一個(gè)0:1 表示data1.txt的鏈接主鍵為0列,值為1列
  • 第二個(gè)0:1 表示data2.txt的鏈接主鍵為0列,值為1列
  • data1.txt 和data2.txt 分別為需要鏈接的文件

select.py

  1. #!/usr/bin/env python 
  2. # -*- encoding:utf-8 -*- 
  3.  
  4. import sys 
  5. import re 
  6.  
  7. def cut(files,col1,col2): 
  8.   col1=int(col1) 
  9.   col2=int(col2) 
  10.   f=open 
  11.   for line in sys.stdin: 
  12.       line_list=line.split() 
  13.       if(len(line_list)>=max(col1,col2)): 
  14.           if col1>=0 and col2>=0 and col1<=col2: 
  15.               print("\t".join(line_list[col1:col2])) 
  16.           else
  17.               print("參數(shù)輸入錯(cuò)誤"
  18.       else
  19.           print("參數(shù)超出范圍"
  20. if __name__=="__main__"
  21.   col1=sys.argv[1] 
  22.   col2=sys.argv[2] 
  23.   cut(col1,col2) 

取出有花費(fèi)的用戶id,指令如下:

  • col1:開始列
  • col2:結(jié)束列

python select.py 0 1 data2.txt

綜合使用

選出data1中付過費(fèi),且年齡大于35歲的用戶id

  1. python join.py '0:1,0:1' 'data1.txt' 'data2.txt'|python where.py 2 '!=' null string|python where.py 1 '>' 35 int|python select.py 0 1 
  2.  
  3. 12159 
  4.  
  5. 17473 

 

責(zé)任編輯:武曉燕 來源: 數(shù)師兄
相關(guān)推薦

2020-08-03 08:01:50

爬蟲技巧

2020-04-20 10:47:57

Redis數(shù)據(jù)開發(fā)

2021-06-28 14:13:34

OOM內(nèi)存事故

2021-04-28 07:22:13

HiveJson數(shù)組

2020-08-31 06:54:37

注解脫敏ELK

2021-06-26 09:26:01

Jupyter主題目錄

2021-03-29 08:24:18

KubeadmKubernetes1運(yùn)維

2021-08-04 07:47:18

IDEJTAGSWD

2025-01-14 00:00:00

場(chǎng)景線程數(shù)據(jù)

2023-11-01 10:49:50

Python面向?qū)ο?/a>

2021-12-28 14:10:41

開發(fā)技能代碼

2023-07-31 08:18:50

Docker參數(shù)容器

2021-04-07 08:13:28

LirbeNMS開源SNMP

2023-09-26 12:22:37

隊(duì)列Python

2019-03-21 09:45:11

TypeScript編程語言Javascript

2019-11-12 09:15:18

MySQL復(fù)制拓?fù)?/a>Orchestrato

2020-07-25 20:01:45

CSS前端

2021-07-30 06:51:28

Nginx運(yùn)維web

2020-04-19 21:41:13

Python數(shù)據(jù)可視化

2024-09-26 09:10:08

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品欧美精品 | 精品国产一区二区久久 | 少妇午夜一级艳片欧美精品 | 亚洲一区不卡 | 国产精品久久久乱弄 | 人人做人人澡人人爽欧美 | 一区二区三区在线 | 欧 | 国产亚洲一区二区三区在线 | 99热激情 | 国产精品久久国产精品 | 国产一区二区在线视频 | 中文字幕一区在线观看视频 | 国产精品成人一区二区 | 大陆一级毛片免费视频观看 | 国产精品一区三区 | 亚洲精品久久久一区二区三区 | 亚洲人人舔人人 | 久久黄网| 欧美成人高清 | 国产激情视频在线观看 | 成人性视频免费网站 | 福利国产 | 亚洲一区二区三区久久 | 97精品国产97久久久久久免费 | 91资源在线 | 做a网站 | 视频一区二区三区四区五区 | 国外成人免费视频 | 国产二区三区 | 特黄毛片视频 | 亚洲精品1区2区3区 91免费看片 | 亚洲高清视频一区二区 | 精品久久久久久亚洲综合网 | 午夜影院在线观看 | 欧美黄在线观看 | 自拍偷拍一区二区三区 | 久久一区二区av | 日本精品视频 | av大全在线| 综合久久国产 | 亚洲综合色自拍一区 |