Python之數據轉換——【rename()方法、cut()函數、get_dummies()函數】

文章目錄

  • 重命名軸索引
  • 離散化連續數據
  • 啞變量處理類別型數據


重命名軸索引

rename(
self,
mapper: Optional[Renamer] = None,
*,
index: Optional[Renamer] = None,
columns: Optional[Renamer] = None,
axis: Optional[Axis] = None,
copy: bool = True,
inplace: bool = False,
level: Optional[Level] = None,
errors: str = “ignore”,
)

上述方法中常用參數表示的含義如下:

  1. index,columns:表示帶轉換的行索引和列索引
  2. axis:表示軸的名稱,可以使用index或columns,也可以使用數字0或1
  3. copy:表示是否復制底層的數據,默認為False
  4. inplace:默認為False,表示是否返回新的Pandas對象。如果設為True,則會忽略復制的值。
  5. level:表示級別名稱,默認為None。對于多級索引,只重命名指定的標簽。

代碼:

df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})
print("df:\n", df)
print("df.rename:\n", df.rename(columns={'A': 'a', 'B': 'b', 'C': 'c'}))

輸出結果:

df:A    B    C
0  1    9    x
1  2  -80  5.9
2  4  5.3    0
df.rename:a    b    c
0  1    9    x
1  2  -80  5.9
2  4  5.3    0

以上也可以根據str中提供的使字符串變成小寫的功能函數lower()來重命名索引的名稱,無需再使用字典逐個進行替換。

代碼:

print("df.rename(str.lower, axis=1):\n", df.rename(str.lower, axis=1))

輸出結果:

df.rename(str.lower, axis=1):a    b    c
0  1    9    x
1  2  -80  5.9
2  4  5.3    0

也可以對行索引進行重命名

代碼:

print("df.rename(index={1: 'a'}):\n", df.rename(index={1: 'a'}))

輸出結果:

df.rename(index={1: 'a'}):A    B    C
0  1    9    x
a  2  -80  5.9
2  4  5.3    0

離散化連續數據

cut(
x,
bins,
right: bool = True,
labels=None,
retbins: bool = False,
precision: int = 3,
include_lowest: bool = False,
duplicates: str = “raise”,
)

上述函數中常用參數表示的含義如下:

  1. x:表示要分箱的數組,必須是一維的
  2. bins:接收int和序列類型的數據。如果傳入的是int類型的值,則表示在x范圍內的等寬單元的數量(劃分為多少個等間距區間);如果傳入的是一個序列,則表示將x劃分在指定的序列中,若不在此序列中,則為NaN。
  3. right:是否包含右端點,決定區間的開閉,默認為True
  4. labels:用于生成區間的標簽
  5. retbins:是否返回bin
  6. precision:精度,默認保留三位小數
  7. include_lowest:是否包含左端點

cut()會返回一個Catagorical對象,我們可以將其看作一組表示面元名稱的字符串,它包含了分組的數量以及不同分類的名稱。


代碼:

ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 32]
bins = [0, 18, 25, 35, 60, 100]
print("pd.cut(ages, bins):\n", pd.cut(ages, bins))

輸出結果:

pd.cut(ages, bins):[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (35, 60], (25, 35], (60, 100], (35, 60], (25, 35]]Length: 11
Categories (5, interval[int64]): [(0, 18] < (18, 25] < (25, 35] < (35, 60] < (60, 100]]

Catagorical對象中的區間范圍默認設置為左開右閉區間,如果希望設置左閉右開區間,則可以在調用cut()函數時傳入right=False進行修改。

測試對象:

df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})

代碼:

print("pd.cut(df['B']):\n", 
pd.cut(df['B'].astype(dtype='float'), bins, right=False))

輸出結果:

pd.cut(df['B']):0    [0.0, 18.0)
1            NaN
2    [0.0, 18.0)
Name: B, dtype: category
Categories (5, interval[int64]): [[0, 18) < [18, 25) < [25, 35) < [35, 60) < [60, 100)]

啞變量處理類別型數據

啞變量又稱虛擬變量、名義變量,從名稱上看就知道,它是人為虛設的變量,用來反映某個變量的不同類別。使用啞變量處理類別轉換,事實上就是將分類變量轉換為啞變量矩陣或指標矩陣,矩陣的值通常用“0”或“1”表示。

在Pandas中,可以使用get_dummies()函數對類別特征進行啞變量處理。

get_dummies(
data,
prefix=None,
prefix_sep="_",
dummy_na=False,
columns=None,
sparse=False,
drop_first=False,
dtype=None,
)

上述函數中常用參數表示的含義如下:

  1. data:可接受數組、DataFrame或Series對象,表示啞變量處理的數據
  2. prefix:表示列名的前綴,默認為None
  3. prefix_sep:用于附加前綴作為分隔符使用,默認為“_”
  4. dummy_na:表示是否為NaN值添加一列,默認為False
  5. columns:表示DataFrame要編碼的列名,默認為None
  6. sparse:表示虛擬列是否是稀疏的,默認為False
  7. drop_first:是否通過從k個分級類別中刪除第一個級來獲得k-1個分類級別,默認為False

測試對象:

df = pd.DataFrame({'A': ['1', '2', '4'],'B': ['9', '-80', '5.3'],'C': ['x', '5.9', '0']})

代碼:

test1 = df['B'].astype(dtype='float')
print(pd.get_dummies(test1, prefix='col', prefix_sep='_'))

輸出結果:

   col_-80.0  col_5.3  col_9.0
0          0        0        1
1          1        0        0
2          0        1        0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超硬核!數據結構學霸筆記,考試面試吹牛就靠它

上次發操作系統筆記&#xff0c;很快瀏覽上萬&#xff0c;這次數據結構比上次硬核的多哦&#xff0c;同樣的會發超硬核代碼&#xff0c;關注吧。 超硬核&#xff01;操作系統學霸筆記&#xff0c;考試復習面試全靠它 第一次筆記&#xff08;復習c&#xff0c;課程概述&#xff…

Python之數據拆分——groupby()方法

文章目錄groupby()方法通過列名進行分組通過Series對象進行分組Series對象與原數據的行索引長度相等Series對象與原數據的行索引長度不等通過字典進行分組按照columns軸的方向進行分組按照index軸的方向進行分組通過函數進行分組groupby()方法 groupby( self, byNone, axis0, l…

超硬核!小白讀了這篇文章,就能在算法圈混了

作為一只超級硬核的兔子&#xff0c;從來不給你說廢話&#xff0c;只有最有用的干貨&#xff01;這些神級算法送給你 目錄 第一節 1.1bogo排序 1.2位運算 1.3打擂臺 1.4morris遍歷 第二節 2.1睡眠排序 2.2會死的兔子 2.3矩陣快速冪 2.4摔手機/摔雞蛋 時空復雜度目錄 …

Python之數據聚合——aggregate()方法

文章目錄使用內置統計方法聚合數據面向列的聚合方法aggregate()方法對每一列數據應用同一個函數對某列數據應用不同的函數對不同列數據應用不同函數使用內置統計方法聚合數據 實現數據拆分成組并分別計算平均數的操作 代碼&#xff1a; import pandas as pd import numpy as…

超硬核十萬字!全網最全 數據結構 代碼,隨便秒殺老師/面試官,我說的

本文代碼實現基本按照《數據結構》課本目錄順序&#xff0c;外加大量的復雜算法實現&#xff0c;一篇文章足夠。能換你一個收藏了吧&#xff1f; 當然如果落下什么了歡迎大家評論指出 目錄 順序存儲線性表實現 單鏈表不帶頭標準c語言實現 單鏈表不帶頭壓縮c語言實現 約瑟…

Python之分組級運算——【transform()方法、apply()方法】

文章目錄數據轉換——transform()方法數據應用——apply()方法數據轉換——transform()方法 使用aggregate()方法進行聚合運算已經在上一篇博客中詳細闡述&#xff0c;我們知道aggregate()方法返回的數據集的形狀&#xff08;shape&#xff09;與被分組的數據集的形狀是不同的…

java限制在同一臺電腦上只允許有一個用戶登錄系統

在web應用系統中&#xff0c;出于安全性考慮&#xff0c;經常需要對同一客戶端登錄的用戶數量和一個客戶同時在多個客戶端登陸進行限制。 具體一點就是&#xff1a; 1、在同一臺電腦上一次只允許有一個用戶登錄系統&#xff1b; 2、一個用戶在同一時間只允許在一個客戶端登錄…

Matplotlib——繪制圖表

文章目錄通過figure()函數創建畫布通過subplot()函數創建單個子圖通過subplots()函數創建多個子圖通過add_subplot()方法添加和選中子圖添加各類標簽繪制常見圖表繪制直方圖——hist()函數繪制散點圖——scatter()函數繪制柱狀圖——bar()函數設定線條的相關參數本地保存圖片通…

限制在同一臺電腦上只允許有一個用戶登錄系統

在web應用系統中&#xff0c;出于安全性考慮&#xff0c;經常需要對同一客戶端登錄的用戶數量和一個客戶同時在多個客戶端登陸進行限制。 具體一點就是&#xff1a; 1、在同一臺電腦上一次只允許有一個用戶登錄系統&#xff1b; 2、一個用戶在同一時間只允許在一個客戶端登錄…

Seaborn——繪制統計圖形

文章目錄可視化數據的分布繪制單變量分布繪制雙變量分布繪制成對的雙變量分布用分類數據繪圖類別散點圖通過stripplot()函數畫散點圖swarmplot()函數類別內的數據分布繪制箱型圖繪制提琴圖類別內的統計估計繪制條形圖繪制點圖可視化數據的分布 繪制單變量分布 一般采用最簡單…

Bokeh——交互式可視化庫

文章目錄前言如何通過Plotting繪制圖形前言 Bokeh是一個專門針對Web瀏覽器使用的交互式可視化庫&#xff0c;這是與其他可視化庫相比最核心的區別。 如何通過Plotting繪制圖形 Plotting是以構建視覺符號為核心的接口&#xff0c;可以結合各種視覺元素&#xff08;例如&#x…

指針、引用以及const限定符、constexpr限定符

文章目錄復合類型引用概念與使用引用的定義注意指針概念聲明方式取地址符指針值空指針利用指針訪問對象賦值和指針void* 指針指向指針的指針指向指針的引用初始化所有指針有多重含義的某些符號const限定符概念const的引用指針和const頂層const和底層constconstexpr和常量表達式…

關鍵字typedef、關鍵字using、auto類型說明符和declytpe類型指示符

文章目錄類型別名概念關鍵字 typedef別名聲明 (alias declaration) using指針、常量和類型別名類型別名簡化多維數組指針auto類型說明符概念復合類型、常量和autodecltype類型指示符概念decltype和引用類型別名 概念 有兩種方法可用于定義類型別名。 關鍵字 typedef typede…

初始化、賦值、默認初始化、列表初始化、類內初始值、直接初始化與拷貝初始化

文章目錄初始化和賦值的區別什么是默認初始化&#xff1f;列表初始化列表初始化的使用場景不適合使用列表初始化的場景類內初始值混用string對象和C風格字符串數組與vector對象關于vector對象兩者間的初始化關系直接初始化與拷貝初始化初始化和賦值的區別 初始化的含義是創建變…

js動態增加,刪除td,tr,table,div

js實現的動態添加&#xff0c;刪除table內容&#xff1a; 截圖如下&#xff1a; 1. 2. 源代碼&#xff1a; main.css body {background-image: url(../images/qiantai/bg.png);font-family: arial;font-size: 12px;color: #d4d7da;text-align: center;background-repeat: r…

string類的相關知識及部分操作

文章目錄string對象的初始化string::size_type類型string對象的讀寫操作使用標準庫中的iostream使用getline讀取一整行string對象的比較操作string對象的相加操作兩個string對象相加字面值和string對象相加string對象的初始化 拷貝初始化(copy initialization)&#xff1a;使用…

數組的部分練習

3.27&#xff1a;假設txt_size是一個無參數的函數&#xff0c;它的返回值是int。請回答下列哪個定義是非法的&#xff1f;為什么&#xff1f; unsigned buf_size1024; &#xff08;a&#xff09;int ia[buf_size];  &#xff08;b&#xff09;int ia[4*7-14]; &#xff08…

關于范圍for語句的使用

文章目錄使用范圍for語句處理多維數組使用范圍for語句處理多維數組 舉個例子&#xff0c;使用范圍for語句輸出多維數組&#xff08;ia&#xff09;所有值&#xff1a; for (const auto &row : ia)for (auto col : row)cout << col << endl;本循環中并沒有任何…

vector的應用練習

文章目錄編寫一段程序&#xff0c;使用條件運算符從vector< int >中找出哪些元素的值是奇數&#xff0c;然后將奇數值翻倍。 #include <iostream> #include <ctime> #include <vector> using namespace std; typedef int int_array[4]; int main() {v…

sizeof運算符運算結果小匯

文章目錄sizeof運算符的結果部分地依賴于其作用的類型sizeof運算符的結果部分地依賴于其作用的類型 對char或者類型為char的表達式執行sizeof運算&#xff0c;結果得1對引用類型執行sizeof運算得到被引用對象所占空間的大小對指針執行sizeof運算得到指針本身所占空間的大小對解…