網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Python?Pandas學(xué)習(xí)之?dāng)?shù)據(jù)離散化與合并詳解_python
作者:Dragon少年 ? 更新時(shí)間: 2022-04-26 編程語(yǔ)言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'])
原文鏈接:https://blog.csdn.net/hhladminhhl/article/details/109195711
相關(guān)推薦
- 2023-01-30 如何使用Flutter實(shí)現(xiàn)手寫簽名效果_Android
- 2022-04-17 Bootstrap typeahead自動(dòng)補(bǔ)全插件的坑
- 2022-12-29 C#使用Lambda表達(dá)式簡(jiǎn)化代碼的示例詳解_C#教程
- 2022-09-21 python?paramiko連接ssh實(shí)現(xiàn)命令_python
- 2022-08-14 C++學(xué)習(xí)之算術(shù)運(yùn)算符使用詳解_C 語(yǔ)言
- 2022-04-09 Python中緩存lru_cache的基本介紹和講解_python
- 2022-07-16 BeanFactory和FactoryBean的區(qū)別
- 2022-11-27 Go?微服務(wù)開發(fā)框架DMicro設(shè)計(jì)思路詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支