偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

早下班系列 | 比python更稱手的兵器

企業(yè)動態(tài)
看了這篇文章里寫的信誓旦旦的:《為什么你經(jīng)常加班,卻干不過那些準點開溜的同事?》,再加之久仰Python的鼎鼎大名,且看過的Python的教材的前言中提到許許多多強調(diào)Python的優(yōu)點:語法簡單、容易上手、世間最后的正義等等,我也不禁懷疑了:要做得比Python還爽,需要做到什么地步?

[[217563]]

有人覺得這標題有點兒像王婆賣瓜?其實要說我一開始也不是很自信。畢竟看了這篇文章里寫的信誓旦旦的:《為什么你經(jīng)常加班,卻干不過那些準點開溜的同事?》,再加之久仰Python的鼎鼎大名,且看過的Python的教材的前言中提到許許多多強調(diào)Python的優(yōu)點:語法簡單、容易上手、世間***的正義等等(對比的當(dāng)然是著名的反人類C++和潛在的反人類JAVA),我也不禁懷疑了:要做得比Python還爽,需要做到什么地步?

先看看環(huán)境實現(xiàn)、代碼編寫的效率

鑒于我是一個愛折騰的碼農(nóng),又自負有那么點Python的基礎(chǔ),借著害死貓的好奇心驅(qū)使,便打算試試手:看看這Python到底有多簡便。

要搞Python,***步當(dāng)然是安裝Python解釋器,那么問題來了:選Python2還是Python3?雖然看起來只是版本升級,但其實卻是連語法都換代(不是升級的意思,Python3不能完全兼容Python2語法)。雖然有Python牛人說“語言不是問題,重點在于思想巴拉巴拉……”,但對于瑟瑟發(fā)抖的新人們來說,我想大多還是不希望看到:因為缺個括號,就連print都出不來Hello World了……這樣的鬧心事吧?對比了種種網(wǎng)上意見,***還是決定支持先進:選Python3。這樣就算過幾年再出個語法換代的Python4、Python5啥的,至少我的Python3能比別人的Python2多活個幾年。

安裝完解釋器,再選一個寫代碼的編輯器。因為最近習(xí)慣用eclipse——開源、跨平臺、免安裝,且支持多種插件——所以我決定在eclipse上安裝個pydev來實現(xiàn)支持python編程的功能。百度上找了一個最簡便的方法:網(wǎng)上在線安裝。結(jié)果安好之后發(fā)現(xiàn)找不著pydev?再百度找問題,發(fā)現(xiàn)竟是pydev的版本太新了。只好先卸了再對照eclipse和jdk版本找了一個恰到好處的,一邊百度一邊實驗,一個小時總算搞定。速度很慢?要知道網(wǎng)上可是有人自述弄了整整一個下午。所以對這一點我還是蠻佩服自己的。

安完編程環(huán)境后,總該爽一下了吧?先print個Hello World?***!再找之前的文章copy一下代碼……嗯?***行import pandas報錯?缺少pandas的庫?這么重要的科學(xué)計算常用庫為啥這python安裝時就不自帶一下?。窟€是自己安吧……

上網(wǎng)繼續(xù)百度……發(fā)現(xiàn)有說安一個anaconda……但那樣我之前安的python和pydev不是都白費了?且anaconda自帶的編輯器spyder編寫復(fù)雜工程不夠強大又容易崩潰,還有有很多anaconda沒有的庫你自己再添加又不知有沒有什么兼容之類巴拉巴拉的問題……否決。直接安裝個pandas庫呢?也不行,還有一大堆pandas需要的亂七八糟的其他庫等著你呢(linux一族的通?。?。用pip工具安裝?沒有外網(wǎng)不行,不過還好我有。但前提是得先安pip工具本身。怎么安裝?源碼編譯……萬幸!大學(xué)英語沒忘光,摸著英文線索一路搞到了pip的源碼文件,瑟瑟發(fā)抖的編譯通過后(此處需要使用之前的python環(huán)境),再從百度上找一個用pip安裝pandas庫的詳細教程,附帶pip pandas所有必須支持庫的網(wǎng)址,一頓pip下來后(此處需要命令行),再回eclipse中繼續(xù)試驗import pandas……居然還不行?。。∈裁辞闆r?抱著死馬當(dāng)活馬醫(yī)的心理,打開了python的命令行工具:python shell,試試在python shell中import pandas行不行?竟然又行了!再回eclipse里繼續(xù)測試,也正常了!個中原因太過玄幻,還是找一位python界的大神來解釋吧……

到這一步,總算可以開始最早提到的那篇文章中的python編程了。回到之前提到的《為什么你經(jīng)常加班,卻干不過那些準點開溜的同事?》這篇文章,原文中竟然是用程序代碼中的字符串做表數(shù)據(jù)源……將數(shù)據(jù)寫到程序里感覺也太山寨了點,這樣改數(shù)據(jù)難道還得改程序不成?而且如果數(shù)據(jù)過大,導(dǎo)致內(nèi)存裝不下怎么辦?又或者數(shù)據(jù)想跨程序使用又該怎么辦?所以咱至少寫個文本文件之類的外存文件做數(shù)據(jù)源。

接下來就是編程了,除了加了***步的讀文件操作之外,其他都跟原文一樣 

  1. import pandas 
  2.  
  3. f = open(‘D:/data.txt’, ‘r‘) 
  4.  
  5. try: 
  6.  
  7. a = f.read( ) 
  8.  
  9. finally: 
  10.  
  11. f.close( ) 
  12.  
  13. b = [] 
  14.  
  15. for i in a.split(“\n”): 
  16.  
  17. b.append(i.split(” “)) 
  18.  
  19. for i in range(1, len(b)): 
  20.  
  21. b[i][4] = b[i][4].replace(“$”,‘ ‘) 
  22.  
  23. b[i][4] = b[i][4].replace(“,”,‘ ‘) 
  24.  
  25. for i in range(1, len(b)): 
  26.  
  27. for j in [1, 2, 3, 4]: 
  28.  
  29. b[i][j] = eval(b[i][j]) 
  30.  
  31. data = pandas.DataFrame(b[1:],columns=b[0]) 
  32.  
  33. out = data.groupby([‘STYLE’,‘BEDROOMS’]).mean() 
  34.  
  35. print(out) 

運算結(jié)果也一致

簡單嗎?照比C++,那是簡單得很,但如果對比集算器呢?

集算器的安裝咱就不說了,非得要問?那你一定是在逗我……

先上集算器的程序:真不是欺負你,就三行代碼,而且連一個循環(huán)都用不著寫!實際上,如果不是***一列字段的數(shù)據(jù)有點特殊需要處理一下,兩行就可以搞定

  A
1 =file(“D:/data.txt”).cursor@t(#1,#2:int,#3:int,#4:float,#5;,” “)
2 =A2.run(int(replace(replace(#5,”$”,””),”,”,””)):PRICE)
3 =A3.groups(STYLE,BEDROOMS;avg(SQFEET):SQFEET,avg(BATHS):BATHS,avg(PRICE):PRICE)

再看看計算的結(jié)果:與python完全一致 

 

如果你還是有些猶豫的話,那么不妨再透露一個重要的內(nèi)幕:集算器的這種使用處理方法(游標),是可以支持大數(shù)據(jù)處理的,而且只要再加個選項還可以支持多線程并行計算。而上面的python算法要支持大量數(shù)據(jù),那改起來可就不是一句兩句能完事的了,再上個多線程并行計算?我感覺您可能需要的是一位有多年python編程經(jīng)驗的老鳥…… 

再看看代碼運算的效率 

***,不妨加入計時代碼,看看運行程序消耗的時間。 

先加python的計時代碼(友情提示:計時單位是秒)  

  1. import pandas 
  2.  
  3. import time 
  4.  
  5. start = time.clock() 
  6.  
  7. f = open(‘D:/data2.txt‘, ‘r’) 
  8.  
  9. try: 
  10.  
  11. a = f.read( ) 
  12.  
  13. finally: 
  14.  
  15. f.close( ) 
  16.  
  17. b = [] 
  18.  
  19. for i in a.split(“\n”): 
  20.  
  21. b.append(i.split(” “)) 
  22.  
  23. for i in range(1, len(b)): 
  24.  
  25. b[i][4] = b[i][4].replace(“$”,‘ ‘) 
  26.  
  27. b[i][4] = b[i][4].replace(“,”,‘ ‘) 
  28.  
  29. for i in range(1, len(b)): 
  30.  
  31. for j in [1, 2, 3, 4]: 
  32.  
  33. b[i][j] = eval(b[i][j]) 
  34.  
  35. data = pandas.DataFrame(b[1:],columns=b[0]) 
  36.  
  37. out = data.groupby([‘STYLE’,‘BEDROOMS’]).mean() 
  38.  
  39. elapsed = (time.clock() – start) 
  40.  
  41. print(elapsed)  

鑒于原有數(shù)據(jù)文件太小,體驗不出什么差距,不如干脆做大一些,能更有對比價值。就做個22.3M的文本文件(就是把原有數(shù)據(jù)不斷復(fù)制粘貼來把文件撐大一點) 

 

先測試Python: 

為了不讓eclipse影響運行速度,這里干脆拿到命令行里執(zhí)行(elicpse:俺不背鍋!)  

 

再次友情提示:python這里計時使用的單位是秒……嗯,處理22.3M的數(shù)據(jù)30多秒……還好我一直堅持等下去,沒誤以為已經(jīng)卡死,給他來個Ctrl+C…… 

然后再看看集算器,也加入計時代碼(友情提示:使用@ms選項后計時單位是毫秒) 

  A
1 =now()
2 =file(“D:/data.txt”).cursor@t(#1,#2:int,#3:int,#4:float,#5;,” “)
3 =A2.run(int(replace(replace(#5,”$”,””),”,”,””)):PRICE)
4 =A3.groups(STYLE,BEDROOMS;avg(SQFEET):SQFEET,avg(BATHS):BATHS,avg(PRICE):PRICE)
5 =interval@ms(A1,now())

然后再看看耗時(點擊A5格就會在右側(cè)顯示計算出來的計時數(shù)值)

 

1391毫秒約等于1.4秒(請注意此處有個小數(shù)點……) 

看到這樣的對比結(jié)果,我覺得啥也不用說了,請大家自己用心去體會(我也就不得寸進尺地說:其實集算器好多加速方法還沒用上呢……畢竟太欺負人了不好……) 

責(zé)任編輯:龐桂玉 來源: 潤乾
相關(guān)推薦

2018-03-15 14:53:24

潤乾python

2018-03-15 14:07:17

潤乾Excel行列轉(zhuǎn)換

2021-02-07 22:27:27

UI工具網(wǎng)站

2022-11-13 08:06:05

ArthasEverythingMaven help

2024-02-05 22:51:49

AGIRustPython

2009-09-17 10:00:15

Linux虛擬化Windows

2015-07-31 16:29:15

DockerJavaLinux

2013-03-25 11:27:13

Windows Blu

2014-12-01 09:52:57

開發(fā)

2019-04-24 08:00:00

HTTPSHTTP前端

2021-12-27 07:10:26

ClassmethodStaticmetho函數(shù)

2012-12-28 14:02:47

2021-11-30 11:56:52

Pixel 6iPhone 12安全

2017-11-15 10:29:13

戴爾

2018-06-08 11:17:11

2022-07-25 07:57:19

工具代碼調(diào)試

2022-03-11 13:13:15

LinuxWindows

2023-12-14 15:32:17

2013-12-26 09:57:32

2015-10-20 14:21:23

交換機SDN
點贊
收藏

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