最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談pandas.cut與pandas.qcut的使用方法及區(qū)別

 更新時間:2020年03月03日 15:37:07   作者:Xzchen555  
這篇文章主要介紹了淺談pandas.cut與pandas.qcut的使用方法及區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

pandas.cut:

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)

參數(shù):

1. x,類array對象,且必須為一維,待切割的原形式

2. bins, 整數(shù)、序列尺度、或間隔索引。如果bins是一個整數(shù),它定義了x寬度范圍內(nèi)的等寬面元數(shù)量,但是在這種情況下,x的范圍在每個邊上被延長1%,以保證包括x的最小值或最大值。如果bin是序列,它定義了允許非均勻bin寬度的bin邊緣。在這種情況下沒有x的范圍的擴(kuò)展。

3. right,布爾值。是否是左開右閉區(qū)間

4. labels,用作結(jié)果箱的標(biāo)簽。必須與結(jié)果箱相同長度。如果FALSE,只返回整數(shù)指標(biāo)面元。

5. retbins,布爾值。是否返回面元

6. precision,整數(shù)。返回面元的小數(shù)點幾位

7. include_lowest,布爾值。第一個區(qū)間的左端點是否包含

返回值:

若labels為False則返回整數(shù)填充的Categorical或數(shù)組或Series

若retbins為True還返回用浮點數(shù)填充的N維數(shù)組

demo:

>>> pd.cut(np.array([.2, 1.4, 2.5, 6.2, 9.7, 2.1]), 3, retbins=True)
... 
([(0.19, 3.367], (0.19, 3.367], (0.19, 3.367], (3.367, 6.533], ...
Categories (3, interval[float64]): [(0.19, 3.367] < (3.367, 6.533] ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> pd.cut(np.array([.2, 1.4, 2.5, 6.2, 9.7, 2.1]),
... 3, labels=["good", "medium", "bad"])
... 
[good, good, good, medium, bad, good]
Categories (3, object): [good < medium < bad] 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> pd.cut(np.ones(5), 4, labels=False)
array([1, 1, 1, 1, 1])

pandas.qcut

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')

參數(shù):

1.x
2.q,整數(shù)或分位數(shù)組成的數(shù)組。
3.labels,
4.retbins
5.precisoon
6.duplicates

結(jié)果中超過邊界的值將會變成NA

demo:

>>> pd.qcut(range(5), 4)
... 
[(-0.001, 1.0], (-0.001, 1.0], (1.0, 2.0], (2.0, 3.0], (3.0, 4.0]]
Categories (4, interval[float64]): [(-0.001, 1.0] < (1.0, 2.0] ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> pd.qcut(range(5), 3, labels=["good", "medium", "bad"])
... 
[good, good, medium, bad, bad]
Categories (3, object): [good < medium < bad]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pd.qcut(range(5), 4, labels=False)
array([0, 0, 1, 2, 3])

補(bǔ)充拓展:解決 Python 中 qcut() 運(yùn)行報錯: Bin edges must be unique和drop duplicate edges by setting 'duplicates' kwarg

本次糾錯背景,來源于互金領(lǐng)域信用風(fēng)控建模中的變量分箱處理。(附在文末)

解決 Python 中 qcut() 函數(shù)運(yùn)行報錯:
Bin edges must be unique和 You can drop duplicate edges by setting the ‘duplicates' kwarg

首先,報錯如下:

然后,在qcut() 函數(shù)中設(shè)置duplicates參數(shù)為“drop”(不能設(shè)置為“raise”),解決(如下)。

本次糾錯背景,來源于互金領(lǐng)域信用風(fēng)控建模中的變量分箱處理。如下:

# 五、變量選擇
# 特征變量選擇(排序)對于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)從業(yè)者來說非常重要。
# 好的特征選擇能夠提升模型的性能,更能幫助我們理解數(shù)據(jù)的特點、底層結(jié)構(gòu),這對進(jìn)一步改善模型、算法都有著重要作用。
# 至于Python的變量選擇代碼實現(xiàn)可以參考結(jié)合Scikit-learn介紹幾種常用的特征選擇方法。

# 在本文中,我們采用信用評分模型的變量選擇方法,通過WOE分析方法,即是通過比較指標(biāo)分箱和對應(yīng)分箱的違約概率來確定指標(biāo)是否符合經(jīng)濟(jì)意義。
# 首先我們對變量進(jìn)行離散化(分箱)處理。
# 5.1 分箱處理
# 變量分箱(binning)是對連續(xù)變量離散化(discretization)的一種稱呼。
# 信用評分卡開發(fā)中一般有常用的等距分段、等深分段、最優(yōu)分段。
# 其中等距分段(Equval length intervals)是指分段的區(qū)間是一致的,比如年齡以十年作為一個分段;
# 等深分段(Equal frequency intervals)是先確定分段數(shù)量,然后令每個分段中數(shù)據(jù)數(shù)量大致相等;
# 最優(yōu)分段(Optimal Binning)又叫監(jiān)督離散化(supervised discretizaion),使用遞歸劃分(Recursive Partitioning)將連續(xù)變量分為分段,背后是一種基于條件推斷查找較佳分組的算法。

# 我們首先選擇對連續(xù)變量進(jìn)行最優(yōu)分段,在連續(xù)變量的分布不滿足最優(yōu)分段的要求時,再考慮對連續(xù)變量進(jìn)行等距分段。最優(yōu)分箱的代碼如下:

# 定義自動分箱函數(shù)

from scipy import stats
def mono_bin(Y, X, n = 20):
 r = 0
 good=Y.sum()
 bad=Y.count()-good
 while np.abs(r) < 1:
 d1 = pd.DataFrame({"X": X, "Y": Y, "Bucket": pd.qcut(X, n,duplicates="drop")}) 
 # 后面報錯You can drop duplicate edges by setting the 'duplicates' kwarg,所以回到這里補(bǔ)充duplicates參數(shù)
 # pandas中使用qcut(),邊界易出現(xiàn)重復(fù)值,如果為了刪除重復(fù)值設(shè)置 duplicates=‘drop',則易出現(xiàn)于分片個數(shù)少于指定個數(shù)的問題
 d2 = d1.groupby('Bucket', as_index = True)
 r, p = stats.spearmanr(d2.mean().X, d2.mean().Y)
 n = n - 1
 d3 = pd.DataFrame(d2.X.min(), columns = ['min'])
 d3['min']=d2.min().X
 d3['max'] = d2.max().X
 d3['sum'] = d2.sum().Y
 d3['total'] = d2.count().Y
 d3['rate'] = d2.mean().Y
 d3['woe']=np.log((d3['rate']/(1-d3['rate']))/(good/bad))
 d4 = (d3.sort_index(by = 'min')).reset_index(drop=True)
 print("=" * 60)
 print(d4)
 return d4

# 此定義函數(shù)暫未理解通透,暫且保留。這里先直接使用。
# 原帖代碼沒有導(dǎo)入scipy.stats模塊,會導(dǎo)致下一條語句運(yùn)行報錯,上面補(bǔ)上,搞定。
# 原帖代碼qcut()函數(shù)中沒有設(shè)置duplicates參數(shù),上面補(bǔ)上,搞定。
# 自定義函數(shù)分箱RevolvingUtilizationOfUnsecuredLines時報錯You can drop duplicate edges by setting the 'duplicates' kwarg
# 所以先回來刪除重復(fù)值。刪除后發(fā)現(xiàn)沒有解決問題,真正解決問題是在qcut()函數(shù)中沒有設(shè)置duplicates參數(shù)為“drop”(不能設(shè)置為“raise”)
data=data.drop_duplicates(subset=None,keep='first',inplace=False)
data.shape

(119703, 11)

# 針對我們將使用最優(yōu)分段對于數(shù)據(jù)集中的RevolvingUtilizationOfUnsecuredLines、age、DebtRatio和MonthlyIncome進(jìn)行分類。

mono_bin(data.SeriousDlqin2yrs,data.RevolvingUtilizationOfUnsecuredLines)

============================================================
 min  max sum total rate woe
0 0.000000 0.035034 29333 29926 0.980184 1.298275
1 0.035037 0.176771 29205 29926 0.975907 1.098457
2 0.176777 0.577036 28305 29925 0.945865 0.257613
3 0.577040 50708.000000 24607 29926 0.822262 -1.071254
min max sum total rate woe
0 0.000000 0.035034 29333 29926 0.980184 1.298275
1 0.035037 0.176771 29205 29926 0.975907 1.098457
2 0.176777 0.577036 28305 29925 0.945865 0.257613
3 0.577040 50708.000000 24607 29926 0.822262 -1.071254

mono_bin(data.SeriousDlqin2yrs,data.age)

============================================================
 min max sum total rate woe
0 21 30 7913 8885 0.890602 -0.506093
1 31 34 6640 7383 0.899363 -0.412828
2 35 38 7594 8386 0.905557 -0.342447
3 39 41 7131 7849 0.908523 -0.307262
4 42 43 4890 5362 0.911973 -0.265031
5 44 46 8163 8868 0.920501 -0.153830
6 47 48 5776 6274 0.920625 -0.152133
7 49 51 8545 9280 0.920797 -0.149768
8 52 53 5454 5901 0.924250 -0.101453
9 54 56 7922 8463 0.936075 0.080980
10 57 59 7517 7946 0.946011 0.260466
11 60 61 4942 5200 0.950385 0.349567
12 62 64 7464 7776 0.959877 0.571844
13 65 68 6968 7212 0.966167 0.748916
14 69 75 7911 8141 0.971748 0.934931
15 76 103 6620 6777 0.976833 1.138606
min max sum total rate woe
0 21 30 7913 8885 0.890602 -0.506093
1 31 34 6640 7383 0.899363 -0.412828
2 35 38 7594 8386 0.905557 -0.342447
3 39 41 7131 7849 0.908523 -0.307262
4 42 43 4890 5362 0.911973 -0.265031
5 44 46 8163 8868 0.920501 -0.153830
6 47 48 5776 6274 0.920625 -0.152133
7 49 51 8545 9280 0.920797 -0.149768
8 52 53 5454 5901 0.924250 -0.101453
9 54 56 7922 8463 0.936075 0.080980
10 57 59 7517 7946 0.946011 0.260466
11 60 61 4942 5200 0.950385 0.349567
12 62 64 7464 7776 0.959877 0.571844
13 65 68 6968 7212 0.966167 0.748916
14 69 75 7911 8141 0.971748 0.934931
15 76 103 6620 6777 0.976833 1.138606

mono_bin(data.SeriousDlqin2yrs,data.MonthlyIncome)

============================================================
 min max sum total rate woe
0 0.0 3400.0 27355 30073 0.909620 -0.293996
1 3401.0 5400.0 27655 30008 0.921588 -0.138884
2 5401.0 8200.0 27925 29725 0.939445 0.138736
3 8201.0 49750.0 28515 29897 0.953775 0.423899
min max sum total rate woe
0 0.0 3400.0 27355 30073 0.909620 -0.293996
1 3401.0 5400.0 27655 30008 0.921588 -0.138884
2 5401.0 8200.0 27925 29725 0.939445 0.138736
3 8201.0 49750.0 28515 29897 0.953775 0.423899

以上這篇淺談pandas.cut與pandas.qcut的使用方法及區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python中的tkinter模塊作圖的方法

    使用Python中的tkinter模塊作圖的方法

    Python是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。tkinter模塊(“Tk 接口”)是Python的標(biāo)準(zhǔn)Tk GUI工具包的接口。接下來通過本文給大家介紹Python中的tkinter模塊作圖教程,需要的朋友參考下
    2017-02-02
  • 如何對csv文件數(shù)據(jù)分組,并用pyecharts展示

    如何對csv文件數(shù)據(jù)分組,并用pyecharts展示

    這篇文章主要介紹了如何對csv文件數(shù)據(jù)分組,并用pyecharts展示,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python Django路徑配置實現(xiàn)過程解析

    Python Django路徑配置實現(xiàn)過程解析

    這篇文章主要介紹了Python Django路徑配置實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python實現(xiàn)農(nóng)歷轉(zhuǎn)換教程詳解

    Python實現(xiàn)農(nóng)歷轉(zhuǎn)換教程詳解

    農(nóng)歷,是我國現(xiàn)行的傳統(tǒng)歷法。它是根據(jù)月相的變化周期,每一次月相朔望變化為一個月,參考太陽回歸年為一年的長度,并加入二十四節(jié)氣與設(shè)置閏月以使平均歷年與回歸年相適應(yīng)。本文將用Python實現(xiàn)農(nóng)歷轉(zhuǎn)換,需要的可以參考一下
    2022-03-03
  • pandas如何將datetime64[ns]轉(zhuǎn)為字符串日期

    pandas如何將datetime64[ns]轉(zhuǎn)為字符串日期

    這篇文章主要介紹了pandas如何將datetime64[ns]轉(zhuǎn)為字符串日期,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python計算信息熵實例

    Python計算信息熵實例

    這篇文章主要介紹了Python計算信息熵實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 通過Python實現(xiàn)一個A/B測試詳解

    通過Python實現(xiàn)一個A/B測試詳解

    A/B測試,通過分析兩種不同的營銷策略,以此來選擇最佳的營銷策略,可以高效地將流量轉(zhuǎn)化為銷售額。本文主要介紹了如何通過Python實現(xiàn)一個A/B測試,感興趣的可以了解一下
    2023-01-01
  • Python IDE PyCharm的基本快捷鍵和配置簡介

    Python IDE PyCharm的基本快捷鍵和配置簡介

    這篇文章主要介紹了Python IDE PyCharm的基本快捷鍵和配置簡介,PyCharm為一個收費的軟件,需要的朋友可以參考下
    2015-11-11
  • CentOS安裝pillow報錯的解決方法

    CentOS安裝pillow報錯的解決方法

    本文給大家分享的是作者在centos下為Python安裝pillow的時候報錯的解決方法,希望對大家能夠有所幫助。
    2016-01-01
  • 淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    淺談keras中的batch_dot,dot方法和TensorFlow的matmul

    這篇文章主要介紹了淺談keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論

和田县| 宜丰县| 昂仁县| 古浪县| 湖口县| 晴隆县| 无锡市| 灌阳县| 黎平县| 冀州市| 大连市| 烟台市| 永康市| 四会市| 金川县| 龙里县| 韶关市| 崇州市| 三穗县| 安远县| 松原市| 温宿县| 公安县| 阿拉善左旗| 昭苏县| 甘肃省| 惠水县| 来安县| 那曲县| 鄱阳县| 漾濞| 浦东新区| 大庆市| 元谋县| 桦甸市| 湖南省| 金堂县| 区。| 五台县| 商丘市| 弥渡县|