欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解

 更新時(shí)間:2022年02月22日 14:37:06   作者:Dragon少年  
Pandas是python的一個(gè)數(shù)據(jù)分析包,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。本文將通過(guò)示例詳細(xì)為大家介紹一下Pandas的數(shù)據(jù)離散化與合并,需要的可以參考一下

1 數(shù)據(jù)離散化

1.1 為什么要離散化

連續(xù)屬性離散化的目的是為了簡(jiǎn)化數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)離散化技術(shù)可以用來(lái)減少給定連續(xù)屬性值的個(gè)數(shù)。離散化方法經(jīng)常作為數(shù)據(jù)挖掘的工具。

1.2 什么是數(shù)據(jù)的離散化

連續(xù)屬性的離散化就是在連續(xù)屬性的值域上,將值域劃分為若干個(gè)離散的區(qū)間,最后用不同的符號(hào)或整數(shù) 值代表落在每個(gè)子區(qū)間中的屬性值。

離散化有很多種方法,下面距離一種最簡(jiǎn)單的方式去操作。

  • 原始人的身高數(shù)據(jù):165,174,160,180,159,163,192,184
  • 假設(shè)按照身高分幾個(gè)區(qū)間段:150-165,165-180,180~195

這樣我們將數(shù)據(jù)分到了三個(gè)區(qū)間段,我可以對(duì)應(yīng)的標(biāo)記為矮、中、高三個(gè)類別,最終要處理成一個(gè)"啞變量"矩陣。

1.3 舉例股票的漲跌幅離散化

下面對(duì)股票每日的漲跌幅度進(jìn)行離散化

1.3.1 讀取股票的數(shù)據(jù)

先讀取股票的數(shù)據(jù),篩選出漲跌幅度的數(shù)據(jù)

data = pd.read_csv("./data/stock_day.csv")
p_change= data['p_change']

1.3.2 將股票漲跌幅數(shù)據(jù)進(jìn)行分組

使用的api:

  • pd.qcut(data, q):對(duì)數(shù)據(jù)進(jìn)行分組將數(shù)據(jù)分組,一般會(huì)與value_counts搭配使用,統(tǒng)計(jì)每組的個(gè)數(shù)
  • series.value_counts():統(tǒng)計(jì)分組次數(shù)

自定義區(qū)間分組:

pd.cut(data, bins)

# 自己指定分組區(qū)間
bins = [-20, -7, -5, -3, 0, 3, 5, 7, 20]
p_counts = pd.cut(p_change, bins)

1.3.3 股票漲跌幅分組數(shù)據(jù)變成one-hot編碼

什么是one-hot編碼

把每個(gè)類別生成一個(gè)布爾列,這些列中只有一列可以為這個(gè)樣本取值為1.其又被稱為熱編碼。

pandas.get_dummies(data, prefix=None)

  • data:array-like, Series, or DataFrame
  • prefix:分組名字
bins = [-20, -7, -5, -3, 0, 3, 5, 7, 20]
p_counts = pd.cut(p_change, bins)
# 得出one-hot編碼矩陣
dummies = pd.get_dummies(p_counts, prefix = "漲跌幅度")

2 數(shù)據(jù)合并

如果你的數(shù)據(jù)由多張表組成,那么有時(shí)候需要將不同的內(nèi)容合并在一起分析。

2.1 pd.concat實(shí)現(xiàn)數(shù)據(jù)合并

pd.concat([data1, data2], axis=1)

按照行或列進(jìn)行合并,axis=0為列索引,axis=1為行索引

比如我們將剛才處理好的one-hot編碼與原數(shù)據(jù)合并

# 按照行索引進(jìn)行
pd.concat([data, dummies], axis=1)

2.2 pd.merge

pd.merge(left, right, how=‘inner’, on=None)

  • 可以指定按照兩組數(shù)據(jù)的共同鍵值對(duì)合并或者左右各自
  • left: DataFrame
  • right: 另一個(gè)DataFrame
  • on: 指定的共同鍵
  • how:按照什么方式連接,連接方式和數(shù)據(jù)庫(kù)類似分為內(nèi)連接,外連接,左連接,右連接

2.2.1 pd.merge合并

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                        'key2': ['K0', 'K1', 'K0', 'K1'],
                        'A': ['A0', 'A1', 'A2', 'A3'],
                        'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                        'key2': ['K0', 'K0', 'K0', 'K0'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})

# 默認(rèn)內(nèi)連接
result = pd.merge(left, right, on=['key1', 'key2'])

左連接

result = pd.merge(left, right, how='left', on=['key1', 'key2'])

右連接

result = pd.merge(left, right, how='right', on=['key1', 'key2'])

外鏈接

result = pd.merge(left, right, how='outer', on=['key1', 'key2'])

到此這篇關(guān)于Python Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解的文章就介紹到這了,更多相關(guān)Python Pandas內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論