真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

套娃函數python 套娃函數是什么

Python氣象數據處理與繪圖(1):數據讀取

python很多庫支持了對nc格式文件的讀取,比如NetCDF4,PyNio(PyNio和PyNgl可以看做是NCL的Python版本)以及Xarray等等。

創(chuàng)新互聯建站服務項目包括通道網站建設、通道網站制作、通道網頁制作以及通道網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,通道網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到通道省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

我最初使用PyNio,但是由于NCL到Python的移植并不完全,導致目前遠不如直接使用NCL方便,而在接觸Xarray庫后,發(fā)現其功能強大遠超NCL(也可能是我NCL太菜的原因)。

安裝同其它庫一致:

我這里以一套中國逐日最高溫度格點資料(CN05.1)為例,其水平精度為0.5°X0.5°。

可以看到,文件的坐標有時間, 經度,緯度,變量有日最高溫

我們將最高溫數據取出

這與Linux系統(tǒng)中的ncl_filedump指令看到的信息是類似的

Xarray在讀取坐標信息時,自動將時間坐標讀取為了datetime64 格式,這對我們挑選目的時間十分方便。Xarray通常與pandas配合使用。

比如我們想選取1979.06.01-1979.06.20時期數據,我們只需

再比如我們想選取夏季數據時,只需

更多的時間操作同python的datetime函數類似。

當我們想選取特定經緯度范圍(高度)的數據時,.loc[]函數同樣可以解決。

在這里,我選取了40°N-55°N,115°E-135°E范圍的數據

甚至,我們還可以套娃,同時疊加時間和范圍的選取

這足夠滿足常用到的數據索引要求。

對于這類簡單排列的.txt文件,可以通過np.load讀取,用pandas的.read_csv更為方便

讀取txt的同時,對每列賦予了一個列名,通過data.a可以直接按列名調用相應數據。

對于較復雜的.txt文件,仍可通過該函數讀取

skiprows=5跳過了前5行的文件頭,sep='\s+'定義了數據間隔為空格,這里用的是正則表達。

pd.read_csv函數有很多的參數,可以處理各種復雜情況下的文本文件讀取。

grib文件可通過pygrib庫讀取

import pygrib

f = pygrib.open('xxx.grb')

Excel ETL處理五要素 常見問題

經常 我們在處理小數據集是 不想用大刀,逮住了excel 就想 一直拖拖拉拉就把數據先處理一下,實在處理費力,再從 python numpy pandas 處理一通。

常見的 在處理五要素的時候,姓名基本沒啥要處理的,

1.身份證號 手機號 銀行卡號 經常是 顯示為 E+17 或者 前面帶有 ``` 字符

2.申請日期經常是各種格式,有時候一不小心就變成亂碼的數字 后者####。

3.如果 excel 有外部鏈接存在,即使忽略,但是 在修改的時候還是非常糟心,要等很久,而且經常無法保存,excel就崩潰了

4.還有就是 本身就是文本,但是使用 TEXT LEFT RIGHT MID IF 沒有任何效果

5.excel 讀取 含有中文的數據顯示亂碼

6.多條件的替換問題,if嵌套。

7.批量 替換 匹配

8.空值問題

9.篩選問題

10.腳本讀取文件

其實就是以上的這些小情況,經常浪費大量時間,急需一招狠制敵

接著說 1.

因為很多時候 excel會把一些類數值的身份證號和手機號當做數字,這個其實是數據源在使用python處理的時候沒有來得及保存 對應列的 數據類型。

在出現 E+17,我們首先想到的是修改 單元格格式,比如保存為文本,假如正常那簡直是萬幸,如果不可以,可能會發(fā)現 修改后的數據末尾都變成了3個零。

另外一個終極方法

這里,有一個簡單的操作方法:選擇數據源——右鍵設置單元格格式——自定義——選擇0,按確定——結果出來了。結果很明顯,是我們需要的效果,而且快捷,方便。

另外就是使用python pandas讀取 ,設置 dtype=np.str

對于 身份證或者手機號 銀行卡號 數據首位出現 【`】字符的,可以使用 RIGHT MID 函數做數據的截取

對于數據出現 ###,一般修改單元格格式 ,或者 拉長單元格,或者 python讀取一下就可以處理

最后就是說2了。日期

其實這個日期,就是格式太特么的多和復雜不固定。我們現在 使用的是 類似 2018-4-17 這種格式,所以只要不符合這種格式的,我們都會需要做一些轉化,

最簡單的 就是使用 TEXT 函數 ,一般這樣用 =TEXT(E2,"yyyy-mm-dd")

基本就可以轉化過來。

如果以上不起作用 參考 處理 4 的方法 不斷嘗試 ,最后確認函數真的不會起作用為止。

之后如果 不小心 變成一段數字了,修改單元格格式,轉回日期一般是有效的。

如果日期 函數不起效果,我們使用截取 拼接的方式 使用 RIGHT LEFT MID

CONCATENATE() 這些函數 一般也可以勝任

如果 還是不行也可以 使用 YEAR() DATE() EXCEL 本身的日期處理函數

另外就是修改單元格格式 ,嘗試一下各種日期格式是否可以滿足要求

另外的殺手锏就是 python pandas 和numpy都有 時間處理的函數

可以參考

推薦閱讀

下面分別說一下 。先說 3

這種帶外部鏈接存在的,曾經嘗試過全文copy 新的 sheet 甚至是新的excel文件,但是還是崩潰,所以還是使用python 的pandas 。在使用pandas 讀取后,根據列名 篩選后,另存為新的excel 文件或者csv文件 ,這樣一般不會有 問題,順利解決,一般文件也變小。

再說 4.

對于 使用函數 并不起作用的列,一般 情況 可能單元格 格式不是文本,可以先修改單元格格式轉為文本后再嘗試,

假如還是失敗,則 復制該列,選擇有選擇粘貼 只要值,在進行函數嘗試 ,

如果還是失敗,則 新建一個sheet ,在復制 有選擇粘貼 只要值,再進行函數嘗試,

如果還不行,則新建 excel 再復制有選擇的粘貼 只要值。在進行函數嘗試,

假如還不可以 則使用python pandas 讀取,并設置 dtype=numpy.str,

如果還是不可以,數量少自己手動改,數量多 則請求數據源從新整。

另外 還可以嘗試 另存為比如csv 格式 或者使用python 另存為 其他新文件或者csv,再嘗試讀取 函數修改

之后說5

Excel 讀取漢字亂碼 ,sublime 也亂碼

可以使用 python pandas 讀取 ,

如果 utf-8 不行 ,就轉 gbk

另外就是 excel 讀取沒有亂碼 ,但是 在 Terminal 終端 讀取 中文又亂碼了,怎么辦 ,當然 好辦,excel 保存為csv 或者txt ,使用sublime 或者notpad ++ 打開 ,選擇 標題欄 【FILE] 下拉框里 選擇【Save with Encoding 】,選擇 第一個 【UTF-8] 或者 【UTF-8 NO BOM],則再次在終端命令行讀取 ,中文可以正常顯示。

說說 6 多條件 替換

一定要 主要了 如果 if 的condition 是 比較數值,這個不用使用單引號 雙引號,

如果condition是 文字 匹配的話,切記 一定要使用英文下的雙引號,否則 報錯,英文下的單引號也會報錯。if 嵌套可以很多個if 像套娃一樣套著,另外 if 還可以和 AND OR 一起配合著使用

比如

還要說7

對于 批量替換 匹配的,這個真是excel 函數最大的魔力。設置好函數后,回車顯示好效果,沒問題的就直接雙擊 黑實心十字 【+】,然后這個函數就會作用到整列,需要注意的就是 如果該列有空值的話,經常會阻隔函數的繼續(xù)執(zhí)行 ,需要我們 大概手動在拖拉一下,再雙擊 之后的。

8空值的處理

由于我們經常是胡子嘴巴一起抓,excel 和python 經常會遇到處理空值的問題,關鍵空值還不太統(tǒng)一 ,有 "" " " "\t" nan null None ,幾種,需要我們不斷歸一為一種,有時候 excel 沒有 python pandas 處理默認就變成 NAN,如果不小心保存了,在新打開 excel文件就都有 NAN 或者nan ,需要我們處理

出現 這個

ValueError: empty string for float() data = data.fillna('')

data["field"].isnull

data.dropna()

Pandas 在讀取的時候 加一個 參數 dtype=np.object

9.另外 excel 本身有很多很簡單 也超級好用的工具箱

最好用的就是篩選 ,可以比較數值 ,是否包含字符,長度 來做篩選,

另外 比較好用的是 vlookup 這個函數 ,其實比較高大上,用好了 非常節(jié)省時間

另外是 比如刪除 重復項 , 合并計算 模擬分析 排序,

【公式】 【數據】 是 留給數據分析師最好的武器

10.比如我們的小數據經常還是需要存儲到hive 庫中,大部分我們會寫一個腳本

來etl 并執(zhí)行 hive -e hql ,然后使之可以批量 存儲。有時候 讀取 txt文件 會出錯 ,比如 列 粘連了, 其實 可以把excel 另存為 csv 格式 ,這樣可以避免 列粘連。

大部分我們的腳本都會ftp上傳到服務器上,有時候很大,好不容易上傳了, 發(fā)現文件還是有點錯誤 ,比如 列名header 應該去除沒有去除,比如數據末尾多了好多空行 ,比如 需要批量replace ,需要你 可以 熟練使用 vim 或者 emacs ,最好 安裝 python3.6 ptpython pandas numpy sklearn 等常用的包

Python多線程總結

在實際處理數據時,因系統(tǒng)內存有限,我們不可能一次把所有數據都導出進行操作,所以需要批量導出依次操作。為了加快運行,我們會采用多線程的方法進行數據處理, 以下為我總結的多線程批量處理數據的模板:

主要分為三大部分:

共分4部分對多線程的內容進行總結。

先為大家介紹線程的相關概念:

在飛車程序中,如果沒有多線程,我們就不能一邊聽歌一邊玩飛車,聽歌與玩 游戲 不能并行;在使用多線程后,我們就可以在玩 游戲 的同時聽背景音樂。在這個例子中啟動飛車程序就是一個進程,玩 游戲 和聽音樂是兩個線程。

Python 提供了 threading 模塊來實現多線程:

因為新建線程系統(tǒng)需要分配資源、終止線程系統(tǒng)需要回收資源,所以如果可以重用線程,則可以減去新建/終止的開銷以提升性能。同時,使用線程池的語法比自己新建線程執(zhí)行線程更加簡潔。

Python 為我們提供了 ThreadPoolExecutor 來實現線程池,此線程池默認子線程守護。它的適應場景為突發(fā)性大量請求或需要大量線程完成任務,但實際任務處理時間較短。

其中 max_workers 為線程池中的線程個數,常用的遍歷方法有 map 和 submit+as_completed 。根據業(yè)務場景的不同,若我們需要輸出結果按遍歷順序返回,我們就用 map 方法,若想誰先完成就返回誰,我們就用 submit+as_complete 方法。

我們把一個時間段內只允許一個線程使用的資源稱為臨界資源,對臨界資源的訪問,必須互斥的進行?;コ?,也稱間接制約關系。線程互斥指當一個線程訪問某臨界資源時,另一個想要訪問該臨界資源的線程必須等待。當前訪問臨界資源的線程訪問結束,釋放該資源之后,另一個線程才能去訪問臨界資源。鎖的功能就是實現線程互斥。

我把線程互斥比作廁所包間上大號的過程,因為包間里只有一個坑,所以只允許一個人進行大號。當第一個人要上廁所時,會將門上上鎖,這時如果第二個人也想大號,那就必須等第一個人上完,將鎖解開后才能進行,在這期間第二個人就只能在門外等著。這個過程與代碼中使用鎖的原理如出一轍,這里的坑就是臨界資源。 Python 的 threading 模塊引入了鎖。 threading 模塊提供了 Lock 類,它有如下方法加鎖和釋放鎖:

我們會發(fā)現這個程序只會打印“第一道鎖”,而且程序既沒有終止,也沒有繼續(xù)運行。這是因為 Lock 鎖在同一線程內第一次加鎖之后還沒有釋放時,就進行了第二次 acquire 請求,導致無法執(zhí)行 release ,所以鎖永遠無法釋放,這就是死鎖。如果我們使用 RLock 就能正常運行,不會發(fā)生死鎖的狀態(tài)。

在主線程中定義 Lock 鎖,然后上鎖,再創(chuàng)建一個子 線程t 運行 main 函數釋放鎖,結果正常輸出,說明主線程上的鎖,可由子線程解鎖。

如果把上面的鎖改為 RLock 則報錯。在實際中設計程序時,我們會將每個功能分別封裝成一個函數,每個函數中都可能會有臨界區(qū)域,所以就需要用到 RLock 。

一句話總結就是 Lock 不能套娃, RLock 可以套娃; Lock 可以由其他線程中的鎖進行操作, RLock 只能由本線程進行操作。

怎么看一個函數是否為復合函數

如果是函數的“疊置”,即一個函數里“疊置”著另一個函數,就是復合函數。

多個函數的復合就像“俄羅斯套娃”。

如,復合函數y=ln(x^2),是y=lnu,u=x^2的復合函數;

y=ln^2

x,

是y=u^2,u=ln的復合函數;

y=lnlnlnx,是y=lnu,u=lnv,v=lnx的復合函數。

#抬抬小手學Python# 列表推導式與字典推導式

在 Python 中推導式是一種非常 Pythonic 的知識,本篇博客將為你詳細解答列表推導式與字典推導式相關的技術知識。

列表推導式可以利用列表,元組,字典,集合等數據類型,快速的生成一個特定需要的列表。

語法格式如下:

if 條件表達式 非必選,學完列表推導式之后,你可以發(fā)現它就是 for 循環(huán)的一個變種語句,例如咱們現有一個需求是將一個列表中的所有元素都變成原值的 2 倍。

for 循環(huán)寫法

列表推導式寫法

是不是對比看就是將 for 循環(huán)語句做了變形之后,增加了一個 [] ,不過需要注意的是,列表推導式最終會將得到的各個結果組成一個新的列表。

再看一下列表推導式語法構成 nn_list = [i*2 for i in my_list] , for 關鍵字后面就是一個普通的循環(huán),前面的表達式 i*2 其中的 i 就是 for 循環(huán)中的變量,也就是說表達式可以用后面 for 循環(huán)迭代產生的變量,理解這個內容列表推導式就已經掌握 9 成內容了,剩下的是熟練度的問題。

在將 if 語句包含進代碼中,運行之后,你也能掌握基本技巧, if 語句是一個判斷,其中 i 也是前面循環(huán)產生的迭代變量。

這些都是一般技能,列表推導式能支持兩層 for 循環(huán),例如下述代碼:

當然如果你想 加密(誰都看不懂你的代碼) 你的代碼,你可以無限套娃下去,列表推導式并沒有限制循環(huán)層數,多層循環(huán)就是一層一層的嵌套,你可以展開一個三層的列表推導式,就都明白了

當然在多層列表推導式里面,依舊支持 if 語句 ,并且 if 后面可以用前面所有迭代產生的變量,不過不建議超過 2 成,超過之后會大幅度降低你代碼的可閱讀性。

當然如果你希望你代碼更加難讀,下面的寫法都是正確的。

現在你已經對列表推導式有比較直觀的概念了,列表推導式對應的英文是 list comprehension ,有的地方寫作列表解析式,基于它最后的結果,它是一種創(chuàng)建列表的語法,并且是很簡潔的語法。

有了兩種不同的寫法,那咱們必須要對比一下效率,經測試小數據范圍影響不大,當循環(huán)次數到千萬級時候,出現了一些差異。

運行結果:

在 Python3 中列表推導式具備局部作用域,表達式內部的變量和賦值只在局部起作用,表達式的上下文里的同名變量還可以被正常引用,局部變量并不會影響到它們。所以其不會有變量泄漏的問題。例如下述代碼:

列表推導式還支持嵌套

參考代碼如下,只有想不到,沒有做不到的。

有了列表推導式的概念,字典推導式學起來就非常簡單了,語法格式如下:

直接看案例即可

得到的結果如下:

此時需要注意的是字典中不能出現同名的 key,第二次出現就把第一個值覆蓋掉了,所以得到的 value 都是 1。

最常見的哪里還是下述的代碼,遍歷一個具有鍵值關系的可迭代對象。

其實你應該能猜到,在 Python 中是具備這兩種推導式的,而且語法相信你已經掌握了。不過語法雖然差不多,但是元組推導式運行結果卻不同,具體如下。

運行之后產生的結果:

使用元組推導式生成的結果并不是一個元組,而是一個生成器對象,需要特別注意下,這種寫法在有的地方會把它叫做生成器語法,不叫做元組推導式。

集合推導式也有一個需要注意的地方,先看代碼:

因為集合是無序且不重復的,所以會自動去掉重復的元素,并且每次運行顯示的順序不一樣,使用的時候很容易暈掉。

這篇博客,我們學習了列表和字典推導式,掌握并熟練的應用二者之后,你 Python 技能又向前進了一步。


網站標題:套娃函數python 套娃函數是什么
文章位置:http://weahome.cn/article/doddesh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部