數據分析必備:一步步教你如何用Pandas做數據分析(20)

1、Pandas 分類數據

Pandas 分類數據的操作實例
數據通常實時包含重復的文本列。性別,國家/地區和代碼等功能始終是重復的。這些是分類數據的示例。
分類變量只能采用有限的且通常是固定數量的可能值。除固定長度外,分類數據可能還具有順序,但不能執行數字運算。分類是Pandas數據類型。
分類數據類型在以下情況下很有用
一個僅包含幾個不同值的字符串變量。將這樣的字符串變量轉換為分類變量將節省一些內存。
變量的詞匯順序與邏輯順序(“一個”,“兩個”,“三個”)不同。通過轉換為類別并在類別上指定順序,排序和最小/最大將使用邏輯順序而不是詞匯順序。
作為其他Python庫的信號,此列應視為分類變量(例如,使用適當的統計方法或繪圖類型)。

2、對象創建

分類對象可以通過多種方式創建。下面描述了不同的方式:
類別
通過在熊貓對象創建中將dtype指定為“ category”。

 import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")print(s)

運行結果

 0 a1 b2 c3 adtype: categoryCategories (3, object): [a, b, c]

傳遞給series對象的元素數為4,但是類別僅為3。在輸出類別中觀察相同。

3、pd.Categorical

使用標準的熊貓分類構造器,我們可以創建一個類別對象。

pandas.Categorical(values, categories, ordered)

我們看一個實例-

 import pandas as pdcat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])print(cat)

運行結果

[a, b, c, a, b, c]Categories (3, object): [a, b, c]

讓我們再看一個實例

 import pandas as pdcat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])print(cat)

運行結果

[a, b, c, a, b, c, NaN]Categories (3, object): [c, b, a]

在這里,第二個參數表示類別。因此,類別中不存在的任何值都將被視為NaN。
現在,看看以下示例:

 import pandas as pdcat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)print(cat)

運行結果

 [a, b, c, a, b, c, NaN]Categories (3, object): [c < b < a]

從邏輯上講,該順序意味著a大于b且b大于c。

4、描述

使用.describe()的分類數據的命令,我們得到相似的輸出到一個系列或數據框的的類型的字符串。

import pandas as pdimport numpy as npcat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})print(df.describe())print(df["cat"].describe())

運行結果

   cat s
count    3 3
unique   2 2
top      c c
freq     2 2
count     3
unique    2
top       c
freq      2
Name: cat, dtype: object

5、獲取分類的屬性

obj.cat.categories命令用于獲取對象的類別。

import pandas as pdimport numpy as nps = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])print(s.categories)

運行結果

 Index([u'b', u'a', u'c'], dtype='object')

obj.ordered命令用于獲取對象的順序。

**import pandas as pdimport numpy as npcat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])print(cat.ordered)**

運行結果:

 False

該函數返回false,因為我們未指定任何順序。

6、重命名分類

重命名類別是通過向series.cat.categories series.cat.categories屬性分配新值來完成的。

 import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")s.cat.categories = ["Group %s" % g for g in s.cat.categories]print(s.cat.categories)

運行結果

Index([u'Group a', u'Group b', u'Group c'], dtype='object')

初始類別[a,b,c]由對象的s.cat.categories屬性更新。

7、追加新類別

使用Categorical.add.categories()方法,可以追加新類別。

 import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")s = s.cat.add_categories([4])print(s.cat.categories)

運行結果

Index([u'a', u'b', u'c', 4], dtype='object')

8、刪除類別

使用Categorical.remove_categories()方法,可以刪除不需要的類別。

 import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")print(("Original object:"))print(s)print(("After removal:"))print(s.cat.remove_categories("a"))

運行結果

 Original object:0 a1 b2 c3 adtype: categoryCategories (3, object): [a, b, c]After removal:0 NaN1 b2 c3 NaNdtype: categoryCategories (2, object): [b, c]

9、分類數據比較

在三種情況下可以將分類數據與其他對象進行比較:
將等于(和!=)與長度與分類數據相同的類似列表的對象(列表,序列,數組,…)進行比較。
當排序
True并且類別相同時,將類別數據與另一個類別系列的所有比較(==,!=,>,> =, <和<=)。< div>
分類數據與標量的所有比較。
看下面的實例:

 import pandas as pdcat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)print(cat>cat1)

運行結果

 0  False1  False2  Truedtype: bool

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

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

相關文章

elasticsearch安裝與使用(1)-使用docker安裝Elasticsearch

ES的優點&#xff1a; 1、分布式準實時2、提供REST風格的API接口&#xff0c;是用戶可解借助任何語言使用https對ES執行請求來完成搜索任務&#xff1b;3、提供聚合功能 1、Elasticsearch安裝 docker network create elastic docker pull docker.elastic.co/elasticsearch/e…

MySQL入門學習-聚合和分組.計數(COUNT()函數)

在 MySQL 中&#xff0c;聚合和分組是用于對數據進行匯總和分析的強大功能。聚合函數可以計算數據的總和、平均值、最小值、最大值等統計信息&#xff0c;而分組則可以將數據按照特定的字段進行分組&#xff0c;然后對每個分組進行聚合計算。計數&#xff08;COUNT() 函數&…

【MYSQL系列】mysql中text,longtext,mediumtext區別

【MYSQL系列】mysql中text,longtext,mediumtext區別 在MySQL數據庫中&#xff0c;TEXT、LONGTEXT和MEDIUMTEXT都是用于存儲大量文本數據的字段類型。它們之間的主要區別在于可存儲的數據大小和性能方面的差異。本文將探討這些字段類型的特點、使用場景和一些最佳實踐。 TEXT類…

貪心(不相交的開區間、區間選點、帶前導的拼接最小數問題)

目錄 1.簡單貪心 2.區間貪心 不相交的開區間 1.如何刪除&#xff1f; 2.如何比較大小 區間選點問題 3.拼接最小數 1.簡單貪心 比如&#xff1a;給你一堆數&#xff0c;你來構成最大的幾位數 2.區間貪心 不相交的開區間 思路&#xff1a; 首先&#xff0c;如果有兩個…

代碼隨想錄算法訓練營第三十二天|LeetCode122 買賣股票的最佳時機Ⅱ、LeetCode55 跳躍游戲、LeetCode45 跳躍游戲Ⅱ

題1&#xff1a; 指路&#xff1a;122. 買賣股票的最佳時機 II - 力扣&#xff08;LeetCode&#xff09; 思路與代碼&#xff1a; 基本思路&#xff1a;一天買入一天賣出&#xff0c;得到每部分正利潤作為局部最優解&#xff0c;例如prices[7, 1, 5, 3, 6, 4]中&#xff0c;…

山東大學軟件學院項目實訓-創新實訓-基于大模型的旅游平臺(三十)- 微服務(10)

目錄 12.5 RestClient操作索引庫 12.5.1創建庫 12.5.2 刪除索引庫 12.5.3 判斷是否存在 12.6 RestClient操作文檔 12.6.1 新增文檔 12.6.2 查詢文檔 12.6.3 修改文檔 12.6.4 刪除文檔 12.6.5 批量導入文檔 12.5 RestClient操作索引庫 酒店mapping映射 ?PUT /hotel{&…

shell簡介

一、Shell 概念定義 Shell 是用 C 語言編寫的程序&#xff0c;是用戶使用 Linux 的橋梁&#xff0c;既是命令語言又是程序設計語言。 shell 腳本為 Shell 編寫的腳本程序&#xff0c;常說的 shell 通常指 shell 腳本。 包含一系列命令的文本文件&#xff0c;這些命令按照特定…

調試環境搭建(Redis 6.X 版本)

今兒&#xff0c;我們來搭建一個 Redis 調試環境&#xff0c;目標是&#xff1a; 啟動 Redis Server &#xff0c;成功斷點調試 Server 的啟動過程。使用 redis-cli 啟動一個 Client 連接上 Server&#xff0c;并使用 get key 指令&#xff0c;發起一次 key 的讀取。 視頻可見…

【python解決】查詢報%d format: a number is required, not str問題

【Python解決】查詢報%d format: a number is required, not str問題 在Python中&#xff0c;字符串格式化是一種常見的操作&#xff0c;用于創建包含變量的字符串。如果你在使用%操作符進行格式化時遇到了%d format: a number is required, not str的錯誤&#xff0c;這意味著…

C# 集合(二) —— List/Queue類

總目錄 C# 語法總目錄 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 類似數組&#xff0c;查找快&#xff0c;插入刪除慢(相對)LinkedList 類似雙向鏈表&#xff0c;查找慢(相對)&#xff0c;插入刪除快 //ArrayList //ArrayList Arr…

ts和js有什么不同

TypeScript&#xff08;簡稱TS&#xff09;和JavaScript&#xff08;簡稱JS&#xff09;之間的主要區別可以歸納為以下幾點&#xff1a; 類型系統&#xff1a; JS&#xff1a;是一種弱類型、動態類型的語言&#xff0c;變量的類型在運行時確定&#xff0c;沒有靜態類型選項。T…

基于SSM的旅游民宿預定系統【源碼】【運行教程】

基于SSM的旅游民宿預定系統 一、項目介紹1. 游客功能2. 管理員功能3. 高級功能 二、項目技術棧三、項目運行四、項目演示總結 大家好&#xff0c;這里是程序猿代碼之路&#xff01;隨著旅游業的快速發展&#xff0c;民宿作為一種獨特的住宿方式越來越受到游客的喜愛。為了提升用…

百華鞋業祝莘莘學子旗開得勝,一舉奪魁

在知識的海洋中&#xff0c; 有一群人以筆為劍&#xff0c; 在漫長的歲月里不斷磨礪&#xff0c; 只為迎接那場人生的重要戰役——高考。 高考&#xff0c; 是學子們十幾年寒窗苦讀的見證&#xff0c; 是他們用奮斗書寫青春考卷的舞臺。 在這個舞臺上&#xff0c; 他們將…

當前主流的App開發技術綜述

一、引言 隨著移動互聯網的蓬勃發展&#xff0c;App&#xff08;應用程序&#xff09;已經成為人們日常生活中不可或缺的一部分。無論是社交、購物、娛樂還是工作學習&#xff0c;App都以其便捷、高效和個性化的特點深受用戶喜愛。而在這一過程中&#xff0c;App開發技術也在不…

周末總結(2024/06/08)

工作 人際關系核心實踐&#xff1a; 要學會隨時回應別人的善意。執行時間控制在5分鐘以內 堅持每天早會打招呼 遇到接不住的話題時拉低自己&#xff0c;抬高別人(無陰陽氣息) 工作上的要點 現狀&#xff08;接受破爛現狀&#xff0c;改變狀態&#xff09; - 和老師溝通過&…

ChatGPT-4o體驗demo

OpenAI 最近推出了其最新的人工智能語言模型——GPT-4O。該模型是在原有 GPT-4 的基礎上進行優化而成&#xff0c;旨在提升生成質量和響應速度。GPT-4O 采用了更加高效的架構設計&#xff0c;使其在處理復雜文本時表現出更快的速度和更高的準確性。GPT-4O 在訓練過程中融入了最…

一些關于機器學習的思路和猜測

一、機器學習能做什么 1、網上說機器學習就是根據已有的圖片、文字、視頻資料&#xff0c;建立一個數據庫&#xff0c;用一個處理算法&#xff0c;把已有的資料進行提取關鍵特征和一些聯系&#xff0c;存入數據庫中。 2、當學習到一定程度&#xff0c;就能跟人一樣到實際場景…

kafka的leader和follower

leader和follower kafka的leader和follower是相對于分區有意義的&#xff0c;不是相對于broker。 因為每個分區都有leader和follower, leader負責讀寫數據。 follower負責復制leader的數據保存到自己的日志數據中&#xff0c;并在leader掛掉后重新選舉出leader。 kafka會再…

pinia 重置狀態插件

一、前言 測試提出&#xff0c;登出登錄后&#xff0c;再次進入頁面后。頁面的查詢項非初始狀態。檢查后發現&#xff0c;是因為查詢項的值存到了store呢&#xff0c;從store中獲取&#xff0c;故需要一個重置store的方法 二、pinia 查閱pinia官網后&#xff0c;發現pinia提…

請求分頁存儲管理方式

目錄 請求分頁中的硬件支持 1. 請求頁表機制 2. 缺頁中斷機構 硬件支持的詳細工作流程 示例代碼 請求分頁中的內存分配 最小物理塊數的確定 分配方式 分配公平性 請求分頁存儲管理方式中的內存分配策略 具體示例 頁面調入策略 最近最久未使用&#xff08;LRU, Leas…