国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
10個(gè)強(qiáng)大的Python技巧

介紹

你最后一次學(xué)習(xí)到新的Python技巧是什么時(shí)候?作為數(shù)據(jù)科學(xué)家,我們習(xí)慣于使用熟悉的庫并且每次都調(diào)用相同的函數(shù)?,F(xiàn)在是打破舊慣例的時(shí)候了!

Python不僅限于Pandas,NumPy和scikit-learn(盡管它們在數(shù)據(jù)科學(xué)中絕對必不可少)!我們可以使用很多Python技巧來改進(jìn)我們的代碼,加速我們的數(shù)據(jù)科學(xué)任務(wù),并在編寫代碼時(shí)變得更加高效。

更重要的是我們可以在Python中學(xué)習(xí)新的東西是很有趣的一件事!我喜歡玩不同的包和函數(shù)。每隔一段時(shí)間,就會有一個(gè)新的技巧將引起我的注意,并將其納入我的日常工作中。

所以我決定在這里整理我最喜歡的Python技巧!這個(gè)列表的范圍從加速基本數(shù)據(jù)科學(xué)任務(wù)(如預(yù)處理)到在同一個(gè)Jupyter Notebook中運(yùn)行R和Python代碼。其中有很多需要我們學(xué)習(xí)的東西,所以讓我們一起開始吧!

1. zip: 在Python中組合多個(gè)列表

我們經(jīng)常編寫復(fù)雜的for循環(huán)來將多個(gè)列表組合在一起。你自己是不是這樣做的呢?如果是,你會喜歡zip函數(shù)。這個(gè)zip函數(shù)的目的是“創(chuàng)建一個(gè)迭代器,該迭代器可以聚合每個(gè)可迭代對象的元素”。

讓我們通過一個(gè)簡單的例子看看如何使用zip函數(shù)并組合多個(gè)列表:

a = [1,2,3]b = [4,5,6]c = [4,5,6,7,8]zipped = zip(a,b) # 打包為元組的列表for ele in zipped: print(ele,end='\t')print() zipped = zip(a,c) # 元素個(gè)數(shù)與最短的列表一致for ele in zipped: print(ele,end='\t')

2. gmplot: 在Google地圖上繪制數(shù)據(jù)集中的GPS坐標(biāo)

我喜歡使用Google地圖數(shù)據(jù)。它是你可以在任何地方找到的數(shù)據(jù)最豐富的應(yīng)用之一。這就是為什么我決定從這個(gè)Python技巧開始。

當(dāng)我們想要看到兩個(gè)變量之間的關(guān)系時(shí),散點(diǎn)圖是一個(gè)非常好的方式。但如果變量是某個(gè)位置的緯度和經(jīng)度坐標(biāo),你還會這么做嗎?可能不會。最好將這些點(diǎn)繪制在真實(shí)地圖上,以便我們可以輕松地查看和解決特定問題(例如優(yōu)化路線)。

gmplot提供了一個(gè)驚人的接口來生成HTML和JavaScript,以便在Google地圖上呈現(xiàn)我們想要的所有數(shù)據(jù)。讓我們看看用一個(gè)示例看看如何使用gmplot。

安裝gmplot

!pip3 install gmplot

在Google地圖上繪制位置坐標(biāo)

你可以從這里[1]下載代碼所用到的數(shù)據(jù)集。讓我們首先導(dǎo)入必要的庫和讀數(shù)據(jù):

import pandas as pdimport gmplotdata = pd.read_csv('3D_spatial_network.csv')data.head()
# 緯度和經(jīng)度列表latitude_list = data['LATITUDE'] longitude_list = data['LONGITUDE'] # 地圖的中心坐標(biāo)gmap = gmplot.GoogleMapPlotter( 56.730876,9.349849,9)# 在谷歌地圖上繪制坐標(biāo)gmap.scatter( latitude_list, longitude_list, '# FF0000', size = 40, er = True) #以下代碼將在你的Web瀏覽器中創(chuàng)建html文件視圖gmap.heatmap(latitude_list, longitude_list) gmap.draw( 'mymap.html' )

上面的代碼將生成HTML文件,你可以看到在Google地圖上繪制了緯度和經(jīng)度坐標(biāo)。熱圖顯示了具有高密度紅色點(diǎn)的區(qū)域。

3. category_encoders: 使用15種不同的編碼方案對你的類別變量進(jìn)行編碼

我們在早期數(shù)據(jù)科學(xué)數(shù)據(jù)集中面臨的最大障礙之一是我們應(yīng)該對類別變量做些什么呢?我們的機(jī)器在眨眼之間處理數(shù)值,但處理類別是一個(gè)完全不同的問題。

一些機(jī)器學(xué)習(xí)算法可以自己處理類別變量。但我們需要將它們轉(zhuǎn)換為數(shù)值變量,為此,category_encoders是一個(gè)令人驚嘆的庫,它提供了15種不同的編碼方案。

讓我們看看我們?nèi)绾卫眠@個(gè)庫。

安裝category-encoders

!pip3 install category-encoders

將類別數(shù)據(jù)轉(zhuǎn)換為數(shù)值數(shù)據(jù)

import pandas as pd import category_encoders as ce # 創(chuàng)建一個(gè)Dataframe data = pd.DataFrame({ 'gender' : ['Male', 'Female', 'Male', 'Female', 'Female'], 'class' : ['A','B','C','D','A'], 'city' : ['Delhi','Gurugram','Delhi','Delhi','Gurugram'] }) data.head()
# 熱編碼# 創(chuàng)建One Hot Encoder對象 ce_OHE = ce.OneHotEncoder(cols=['gender','city']) # 轉(zhuǎn)換數(shù)據(jù)data = ce_OHE.fit_transform(data) data.head()

所有編碼器都與sklearn-transformer完全兼容,因此可以輕松地在現(xiàn)有腳本中使用。此外,category_encoders支持NumPy數(shù)組和Pandas dataframe。你可以在此處[2]閱讀有關(guān)category_encoders的更多信息。

4. progress_apply:監(jiān)控你在數(shù)據(jù)科學(xué)任務(wù)上花費(fèi)的時(shí)間

你通?;ǘ嗌贂r(shí)間來清理和預(yù)處理數(shù)據(jù)?數(shù)據(jù)科學(xué)家通?;ㄙM(fèi)60-70%的時(shí)間來清理數(shù)據(jù)的說法是完全正確的。對我們來說跟蹤這個(gè)很重要,對吧?

我們不想花費(fèi)數(shù)天來清理數(shù)據(jù)而忽略其他數(shù)據(jù)科學(xué)步驟。這就是progress_apply函數(shù)使我們的生活變得如此簡單的地方。讓我演示它是如何工作的。

讓我們計(jì)算各個(gè)點(diǎn)的經(jīng)緯度之和(這雖然沒有什么意義),并查看完成此任務(wù)的進(jìn)度。你可以在此處[3]下載此數(shù)據(jù)集。

import pandas as pdfrom tqdm._tqdm_notebook import tqdm_notebooktqdm_notebook.pandas()data = pd.read_csv('3D_spatial_network.csv')data.head()
def calculate_sum(x): return (x['LATITUDE']+x['LONGITUDE']) data['DISTANCE'] = data.progress_apply(calculate_distance,axis=1)

5. pandas_profiling:生成數(shù)據(jù)集的詳細(xì)報(bào)告

我們花了很多時(shí)間來理解我們獲得的數(shù)據(jù)。這是公平的 - 我們不希望在不了解我們做什么的情況下直接進(jìn)入模型構(gòu)建。這是任何數(shù)據(jù)科學(xué)項(xiàng)目中必不可少的一步。

pandas_profiling是一個(gè)Python包,可以減少執(zhí)行最初數(shù)據(jù)分析步驟的大量工作。該軟件包只需一行代碼即可生成詳細(xì)的數(shù)據(jù)報(bào)告!

import pandas as pd import pandas_profiling # 讀取數(shù)據(jù)data = pd.read_csv('add-your-data-here') pfr = pandas_profiling.ProfileReport(data)# 在jupyter執(zhí)行代碼,則不需下面一行代碼pfr.to_file('./example.html')

我們可以看到,只需一行代碼,我們就可以獲得數(shù)據(jù)集的詳細(xì)報(bào)告:

  • 警告
  • 所有類別變量的頻率計(jì)數(shù)
  • 數(shù)值變量的分位數(shù)和描述性統(tǒng)計(jì)
  • 相關(guān)圖

6. grouper: 分組時(shí)間序列數(shù)據(jù)

現(xiàn)在誰不熟悉Pandas?它是最流行的Python庫之一,廣泛用于數(shù)據(jù)操作和分析。我們知道Pandas具有操作和匯總數(shù)據(jù)的驚人能力。

我最近正在研究一個(gè)時(shí)間序列問題,并注意到Pandas有一個(gè)我以前從未使用過的Grouper函數(shù)。我對它的使用變得非常好奇。

事實(shí)證明,這個(gè)Grouper函數(shù)對于時(shí)間序列數(shù)據(jù)分析來說是非常重要的功能。那么,讓我們試一試,看看它是如何工作的。你可以在此處[4]下載此代碼的數(shù)據(jù)集。

import pandas as pd data = pd.read_excel('sales-data.xlsx') data.head()

現(xiàn)在,處理任何時(shí)間序列數(shù)據(jù)的第一步是將date列轉(zhuǎn)換為DateTime格式:

data['date'] = pd.to_datetime(data['date'])

假設(shè)我們的目標(biāo)是查看每個(gè)客戶的月銷售額。我們大多數(shù)人都試著寫一些復(fù)雜的東西。但這是Pandas對我們有用的地方。

data.set_index('date').groupby('name')['ext price'].resample('M').sum()

我們可以通過groupby語法使用一種簡單的方法,而不必使用重建索引。我們將通過提供有關(guān)如何在日期列中對數(shù)據(jù)進(jìn)行分組的更多信息,為此函數(shù)添加額外的內(nèi)容。它看起來更干凈,工作方式完全相同:

data.groupby(['name', pd.Grouper(key='date', freq='M')])['ext price'].sum()

7. unstack: 將索引轉(zhuǎn)換為Dataframe的列

我們剛剛看到grouper如何幫助分組時(shí)間序列數(shù)據(jù)?,F(xiàn)在,這有一個(gè)挑戰(zhàn),如果我們想要將name列(在上面示例結(jié)果中是索引)視為dataframe的列,該怎么辦?

這是unstack函數(shù)至關(guān)重要的地方。讓我們在上面的代碼示例中應(yīng)用unstack函數(shù)并查看結(jié)果。

data.groupby(['name', pd.Grouper(key='date', freq='M')])['ext price'].sum().unstack()

非常實(shí)用!注意:如果索引不是MultiIndex,則輸出將是Series。

8. %matplotlib Notebook: Jupyter Notebook中的交互式圖

我是matplotlib庫的忠實(shí)粉絲。它是我們用于在Jupyter Notebook中生成各種圖形的最常見的可視化庫。

要查看這些圖,我們通常使用一行 – %matplotlib inline – 同時(shí)導(dǎo)入matplotlib庫。這很好用,但它渲染了Jupyter Notebook中的靜態(tài)圖。

只需用%matplotlib notebook替換 %matplotlib inline。你將在Jupyter Notebook中獲得可調(diào)整大小和可縮放的圖表!

%matplotlib notebookimport matplotlib.pyplot as plt# 繪制散點(diǎn)圖#在你的數(shù)據(jù)集上嘗試此操作plt.scatter(data['quantity'],data['unit price'])

9. %%time: 檢查特定Python代碼塊的運(yùn)行時(shí)間

可以有多種方法來解決一個(gè)問題,作為數(shù)據(jù)科學(xué)家,我們非常清楚這一點(diǎn)。而計(jì)算成本在行業(yè)中很重要 - 特別是在一個(gè)中小型組織中。你可能希望選擇在最短時(shí)間內(nèi)完成任務(wù)的最佳方法。

實(shí)際上很容易檢查Jupyter Notebook中特定代碼塊的運(yùn)行時(shí)間。

只需添加%% time命令即可檢查特定單元格的運(yùn)行時(shí)間:

%%time def myfunction(x) : for i in range(1,100000,1) : i=i+1myfunction(3)

在這里,我們CPU timeWall time。CPU time是CPU專用于進(jìn)程的總執(zhí)行或運(yùn)行時(shí)間。Wall time是從進(jìn)程開始到“現(xiàn)在”之間經(jīng)過的時(shí)間。

10: rpy2: R和Python在同一個(gè)Jupyter Notebook中!

R和Python是數(shù)據(jù)科學(xué)領(lǐng)域中最好和最流行的兩種開源編程語言。R主要用于統(tǒng)計(jì)分析,而Python提供了一個(gè)簡單的接口,可以將數(shù)學(xué)解決方案轉(zhuǎn)換為代碼。

現(xiàn)在我們可以在一個(gè)Jupyter Notebook中同時(shí)使用它們!我們可以利用這兩種生態(tài)系統(tǒng),為此,我們只需要安裝rpy2。

所以,讓我們暫時(shí)擱置R與Python的爭論,并享受在我們的Jupyter Notebook中繪制ggplot級別的圖表。

!pip3 install rpy2

我們可以將兩種語言一起使用,甚至可以在它們之間傳遞變量。

%load_ext rpy2.ipython%R require(ggplot2)import pandas as pddf = pd.DataFrame({'Class': ['A', 'A', 'A', 'V', 'V', 'A', 'A', 'A'],'X': [4, 3, 5, 2, 1, 7, 7, 5],'Y': [0, 4, 3, 6, 7, 10, 11, 9],'Z': [1, 2, 3, 1, 2, 3, 1, 2] })%%R -i dfggplot(data = df) + geom_point(aes(x = X, y= Y, color = Class, size = Z))

在這里,我們在Python中創(chuàng)建了一個(gè)dataframe df,并通過使用R的ggplot2庫(函數(shù)geom_point)來創(chuàng)建一個(gè)散點(diǎn)圖。來吧試試,我想你會喜歡它。

結(jié)語

除了這些之外,你還直到哪些Python技巧嗎?請?jiān)谙旅娴脑u論部分告訴我們,分享彼此的經(jīng)驗(yàn)!


[1] https://drive.google.com/file/d/1VS292bhx_caAamNGY1bRrAySABMNSAhH/view?usp=sharing

[2] https://github.com/scikit-learn-contrib/categorical-encoding ??

[3] https://drive.google.com/file/d/1VS292bhx_caAamNGY1bRrAySABMNSAhH/view?usp=sharing

[4] https://drive.google.com/file/d/1UXHlP2TcenRFQJi5ZoaFtWpRuSU6AwQk/view?usp=sharing

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
10個(gè)強(qiáng)大的Python數(shù)據(jù)科學(xué)技巧
能看懂的Pandas教程
【數(shù)據(jù)分析丨主題周】Python數(shù)據(jù)分析四劍客:IPython、Numpy、pandas、Matpl...
Python教程:10個(gè)簡單竅門帶你提高Python數(shù)據(jù)分析速度(附代碼)
跟艾文學(xué)編程《零基礎(chǔ)入門學(xué)Python》(1)Python 基礎(chǔ)入門
小白入門Python數(shù)據(jù)科學(xué)全教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服