日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?Pandas學習之數據離散化與合并詳解_python

作者:Dragon少年 ? 更新時間: 2022-04-26 編程語言

1 數據離散化

1.1 為什么要離散化

連續屬性離散化的目的是為了簡化數據結構,數據離散化技術可以用來減少給定連續屬性值的個數。離散化方法經常作為數據挖掘的工具。

1.2 什么是數據的離散化

連續屬性的離散化就是在連續屬性的值域上,將值域劃分為若干個離散的區間,最后用不同的符號或整數 值代表落在每個子區間中的屬性值。

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

  • 原始人的身高數據:165,174,160,180,159,163,192,184
  • 假設按照身高分幾個區間段:150-165,165-180,180~195

這樣我們將數據分到了三個區間段,我可以對應的標記為矮、中、高三個類別,最終要處理成一個"啞變量"矩陣。

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

下面對股票每日的漲跌幅度進行離散化

1.3.1 讀取股票的數據

先讀取股票的數據,篩選出漲跌幅度的數據

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

1.3.2 將股票漲跌幅數據進行分組

使用的api:

  • pd.qcut(data, q):對數據進行分組將數據分組,一般會與value_counts搭配使用,統計每組的個數
  • series.value_counts():統計分組次數

自定義區間分組:

pd.cut(data, bins)

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

1.3.3 股票漲跌幅分組數據變成one-hot編碼

什么是one-hot編碼

把每個類別生成一個布爾列,這些列中只有一列可以為這個樣本取值為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 數據合并

如果你的數據由多張表組成,那么有時候需要將不同的內容合并在一起分析。

2.1 pd.concat實現數據合并

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

按照行或列進行合并,axis=0為列索引,axis=1為行索引

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

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

2.2 pd.merge

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

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

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']})

# 默認內連接
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'])

原文鏈接:https://blog.csdn.net/hhladminhhl/article/details/109195711

欄目分類
最近更新