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

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
10個強大的Python數(shù)據(jù)科學(xué)技巧

介紹

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

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

更重要的是,學(xué)習(xí)我們可以在Python中做的新事情真的非常有趣!我喜歡玩各種不同的程序包和函數(shù)。每隔一段時間,就會有一個新的花樣吸引我,我將其融入我的日常工作。

因此,我決定在一個地方整理我最喜歡的Python技巧——本文!此列表的范圍從加快基本數(shù)據(jù)科學(xué)任務(wù)(如預(yù)處理)到在同一Jupyter Notebook中獲取R和Python代碼不等。有大量的學(xué)習(xí)任務(wù)在等著我們,讓我們開始吧!

Python和數(shù)據(jù)科學(xué)世界的新手?這是一門精妙而全面的課程,可幫助你同時入門:

  • 應(yīng)用機器學(xué)習(xí)——從入門到專業(yè) https://courses.analyticsvidhya.com/courses/applied-machine-learning-beginner-to-professional

1. zip:在Python中合并多個列表

通常我們最終會寫出復(fù)雜的for循環(huán)以將多個列表組合在一起。聽起來很熟悉?那么你會喜歡zip函數(shù)的。這個zip函數(shù)的目的是“創(chuàng)建一個迭代器,從每個iterable中聚合元素”。

讓我們通過一個簡單的示例來了解如何使用zip函數(shù)并組合多個列表:

https://id.analyticsvidhya.com/auth/login/?next=https://www.analyticsvidhya.com/blog/2019/08/10-powerful-python-tricks-data-science

看到合并多個列表有多容易了嗎?

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

我喜歡使用Google Maps數(shù)據(jù)。想想看,它是最豐富的數(shù)據(jù)應(yīng)用程序之一。這就是為什么我決定從這個Python技巧開始的原因。

當(dāng)我們想查看兩個變量之間的關(guān)系時,使用散點圖是非常好的。但是如果變量是一個位置的經(jīng)緯度坐標(biāo),你會使用它們嗎?可能不會。最好把這些點標(biāo)在真實的地圖上,這樣我們就可以很容易地看到并解決某個特定的問題(比如優(yōu)化路線)。

gmplot提供了一個令人驚嘆的界面,可以生成HTML和JavaScript,將我們想要的所有數(shù)據(jù)呈現(xiàn)在Google Maps之上。讓我們來看一個如何使用gmplot的例子。

安裝gmplot

!pip3 install gmplot

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

你可以在此處下載此代碼的數(shù)據(jù)集。

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

讓我們導(dǎo)入庫并讀取數(shù)據(jù):

import pandas as pdimport gmplotdata = pd.read_csv('3D_spatial_network.csv')data.head()
# latitude and longitude list latitude_list = data['LATITUDE'] longitude_list = data['LONGITUDE'] # center co-ordinates of the map gmap = gmplot.GoogleMapPlotter( 56.730876,9.349849,9)# plot the co-ordinates on the google map gmap.scatter( latitude_list, longitude_list, '# FF0000', size = 40, marker = True) # the following code will create the html file view that in your web browser gmap.heatmap(latitude_list, longitude_list) gmap.draw( 'mymap.html' )

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

3. category_encoders:使用15種不同的編碼方案對分類變量進行編碼

我們在早期數(shù)據(jù)科學(xué)數(shù)據(jù)集中面臨的最大障礙之一 —— 我們應(yīng)該如何處理分類變量?我們的機器眨眼間就可以處理數(shù)字,但是處理類別卻是一個完全不同的問題。

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

讓我們看看如何利用這個庫。

安裝 category-encoders

!pip3 install category-encoders

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

import pandas as pd import category_encoders as ce # create a Dataframe data = pd.DataFrame({ 'gender' : ['Male', 'Female', 'Male', 'Female', 'Female'], 'class' : ['A','B','C','D','A'], 'city' : ['Delhi','Gurugram','Delhi','Delhi','Gurugram'] }) data.head()
# One Hot Encoding # create an object of the One Hot Encoder ce_OHE = ce.OneHotEncoder(cols=['gender','city']) # transform the data data = ce_OHE.fit_transform(data) data.head()

category_encoders支持大約15種不同的編碼方法,例如:

  • 哈希編碼
  • LeaveOneOut編碼
  • 順序編碼
  • 二進制編碼
  • 目標(biāo)編碼

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

  • https://github.com/scikit-learn-contrib/categorical-encoding

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

你通?;ㄙM多少時間來清理和預(yù)處理數(shù)據(jù)?數(shù)據(jù)科學(xué)家通?;ㄙM60~70%的時間來清理數(shù)據(jù)這一說法是正確的。對我們來說,追蹤這一點很重要,對嗎?

我們不想花費數(shù)天的時間來清理數(shù)據(jù),而忽略其他數(shù)據(jù)科學(xué)步驟。這是progress_apply 函數(shù)使我們的研究更加輕松的地方。讓我演示一下它是如何工作的。

讓我們計算所有點到特定點的距離,并查看完成此任務(wù)的進度。你可以在此處下載數(shù)據(jù)集。

  • https://drive.google.com/file/d/1VS292bhx_caAamNGY1bRrAySABMNSAhH/view?usp=sharing
import pandas as pdfrom tqdm._tqdm_notebook import tqdm_notebookfrom pysal.lib.cg import harcdisttqdm_notebook.pandas()data = pd.read_csv('3D_spatial_network.csv')data.head()
# calculate the distance of each data point from # (Latitude, Longitude) = (58.4442, 9.3722) def calculate_distance(x):    return harcdist((x['LATITUDE'],x['LONGITUDE']),(58.4442, 9.3722)) data['DISTANCE'] = data.progress_apply(calculate_distance,axis=1)

你會看到跟蹤我們的代碼進度有多么容易。簡單,高效。

5. pandas_profiling:生成數(shù)據(jù)集的詳細報告

我們花了很多時間來理解我們得到的數(shù)據(jù)。這很公平——我們不想在不了解我們正在使用的模型的情況下直接跳入模型構(gòu)建。這是任何數(shù)據(jù)科學(xué)項目中必不可少的步驟。

pandas_profiling 是一個Python軟件包,可減少執(zhí)行初始數(shù)據(jù)分析步驟所需的大量工作。該軟件包只需一行代碼即可生成有關(guān)我們數(shù)據(jù)的詳細報告!

import pandas as pd import pandas_profiling # read the dataset data = pd.read_csv('add-your-data-here') pandas_profiling.ProfileReport(data)

我們可以看到,僅用一行代碼,就得到了數(shù)據(jù)集的詳細報告:

  • 警告,例如: Item_Identifier具有高基數(shù):1559個不同的值警告
  • 所有類別變量的頻率計數(shù)
  • 數(shù)字變量的分位數(shù)和描述統(tǒng)計
  • 相關(guān)圖

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

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

我最近在研究一個時間序列問題,發(fā)現(xiàn)Pandas有一個我以前從未使用過的 Grouper 函數(shù)。我開始對它的使用感到好奇。

事實證明,這個Grouper函數(shù)對于時間序列數(shù)據(jù)分析是一個非常重要的函數(shù)。讓我們試試這個,看看它是如何工作的。你可以在這里下載此代碼的數(shù)據(jù)集。

  • https://drive.google.com/file/d/1UXHlP2TcenRFQJi5ZoaFtWpRuSU6AwQk/view?usp=sharing
import pandas as pd data = pd.read_excel('sales-data.xlsx') data.head()

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

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

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

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

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

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

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

我們剛剛看到了grouper如何幫助對時間序列數(shù)據(jù)進行分組。現(xiàn)在,這里有一個挑戰(zhàn)——如果我們想將name列(在上面的示例中是索引)作為dataframe的列呢。

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

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

非常有用!注意:如果索引不是MultiIndex,則輸出將是Series。

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

我是matplotlib庫的超級粉絲。它是我們在Jupyter Notebook中用來生成各種圖形的最常見的可視化庫。

要查看這些繪圖,我們通常在導(dǎo)入matplotlib庫時使用一行——%matplotlib inline。這很好用,它呈現(xiàn)了Jupyter Notebook中的靜態(tài)圖。

只需將行 %matplotlib替換為 %matplotlib notebook,就可以看到神奇的效果了。你將在你的 Notebook得到可調(diào)整大小和可縮放的繪圖!

%matplotlib notebookimport matplotlib.pyplot as plt# scatter plot of some data # try this on your datasetplt.scatter(data['quantity'],data['unit price'])

只需更改一個字,我們就可以獲取交互式繪圖,從而可以在繪圖中調(diào)整大小和縮放。

9. %% time:檢查特定Python代碼塊的運行時間

解決一個問題可以有多種方法。作為數(shù)據(jù)科學(xué)家,我們對此非常了解。計算成本在行業(yè)中至關(guān)重要,尤其是對于中小型組織而言。你可能希望選擇最好的方法,以在最短的時間內(nèi)完成任務(wù)。

實際上,在Jupyter Notebook中檢查特定代碼塊的運行時間非常容易。

只需添加%% time命令來檢查特定單元格的運行時間:

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

在這里,我們有CPU時間和Wall時間。CPU時間是CPU專用于某個進程的總執(zhí)行時間或運行時間。Wall時間是指時鐘從流程開始到“現(xiàn)在”之間經(jīng)過的時間。

10:rpy2:R和Python在同一個Jupyter Notebook中!

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

這是個好消息,我們可以在一個Jupyter Notebook中同時使用它們!我們可以利用這兩個生態(tài)系統(tǒng),為此,我們只需要安裝rpy2。

因此,現(xiàn)在暫時擱置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)建了一個數(shù)據(jù)框df,并使用它創(chuàng)建了一個使用R的ggplot2庫(geom_point函數(shù))的散點圖。

尾注

這是我必不可少的Python技巧集合。我喜歡在日常任務(wù)中使用這些軟件包和功能。老實說,我的工作效率提高了,這使在Python中工作比以往更加有趣。

除了這些之外,你還有什么想讓我知道的Python技巧嗎?在下面的評論部分中告訴我,我們可以交換想法!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
10個強大的Python技巧
能看懂的Pandas教程
首次公開,用了三年的 pandas 速查表
【數(shù)據(jù)分析丨主題周】Python數(shù)據(jù)分析四劍客:IPython、Numpy、pandas、Matpl...
09-選擇適合你的Python可視化工具(續(xù))
數(shù)據(jù)科學(xué)入門丨選Python還是R
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服