主頁 > 後端開發 > 【pandas基礎】--資料整理

【pandas基礎】--資料整理

2023-05-15 07:24:17 後端開發

pandas進行資料整理的意義在于,它是資料分析、資料科學和機器學習的前置步驟,
通過資料整理可以提前了解資料的概要,缺失值、重復值等情況,為后續的分析和建模提供更為可靠的資料基礎,

本篇主要介紹利用pandas進行資料整理的各種方法,

1. 資料概要

獲取資料概要資訊可以幫助我們了解資料的基本情況,包括資料的大小、資料型別、缺失值的情況、資料的分布情況等,

這些資訊對于我們進行資料分析、資料處理和建模等作業非常重要,
獲取資料概要資訊是進行資料分析和處理的基礎,也是保障資料分析和建模結果準確性的重要步驟,

測驗資料匯入:

import pandas as pd

fp = "http://databook.top:8888/pandas/cn-people.csv"
df = pd.read_csv(fp)
df

image.png

1.1 dtypes 資料型別

查看資料型別:

df.dtypes

image.png
資料集中4個列的型別如上所示,

1.2 describe 數值列統計

選取數值列value,統計其情況看看:

df.value.describe()
# df["value"].describe()

image.png
統計的內容包括:總數、平均數、標準差、最小值、最大值等等,

1.3 value_counts 各類資料的數量

比如,統計指標中文這列,看看不同的指標對應的資料量,

df["指標中文"].value_counts()

image.png
可以看出,每種指標的資料都是 44 條,

1.4 info 整體的基本資訊

df.info()

image.png
info函式包括每列的名稱、資料型別、非空值數量、甚至記憶體使用量等資訊,

2. 缺失值處理

收集的資料難免缺失,對缺失值的處理進行分析前必要的步驟,因為:

  1. 保證資料的完整性和準確性,缺失值的存在可能會影響資料的可靠性和分析結果的準確性,因此及時處理缺失值能夠保證資料的完整性和準確性,
  2. 提高資料分析結果的準確性,處理缺失值能夠提高資料分析結果的準確性,因為缺失值會對資料分析結果產生一定的偏差,處理缺失值能夠減少這種偏差,提高資料分析結果的可靠性,
  3. 使資料更容易被理解和處理,處理缺失值能夠使資料更加規范和標準化,從而方便資料的理解和處理,如果資料中存在大量的缺失值,可能會造成資料處理困難,降低資料的處理效率,
  4. 使得資料更加適合建模,處理缺失值能夠使得資料更加適合建模,因為缺失值可能會影響模型的訓練和預測效果,處理缺失值能夠提高模型的準確性和可靠性,

pandas中提供了 isnullnotnull 兩個函式來標記缺失值,也提供了fillnadropna兩個函式來處理缺失值,

演示缺失值處理的測驗資料如下:

import pandas as pd

fp = "http://databook.top:8888/pandas/missing-values.csv"
df = pd.read_csv(fp)
df

image.png
缺失的資料默認值為 NaN

2.1 查看缺失值

pandas通過isnull函式可以標記缺失的值,缺失的值顯示為 True

df.isnull()

image.png

notnull函式與之相反,缺失的值顯示為 False

df.notnull()

image.png

通過這兩個函式,可以很方便的過濾包含或未包含缺失值的資料,

# value缺失 【并且】 指標中文未缺失的資料
df[df.value.isnull() & df["指標中文"].notnull()]

image.png

# value未缺失 【或者】 指標中文缺失的資料
df[df.value.notnull() | df["指標中文"].isnull()]

image.png

2.2 填充缺失值

對于缺失值,為了防止其對后續的分析演算法造成影響,一般有兩種處理方式,
一種是填充默認值,一種是直接洗掉包含缺失值的資料,

填充缺失值用fillna函式,

df.value = https://www.cnblogs.com/wang_yb/archive/2023/05/14/df.value.fillna(0.0)
df["指標編碼"] = df["指標編碼"].fillna("A000000")
df["指標中文"] = df["指標中文"].fillna("默認指標")
df

image.png
各列填充不同的默認值之后如上,

2.3 洗掉缺失值

洗掉缺失值時,請關注2個關鍵的引數,
一個是 how,另一個是subset
how="all"時,只有當前列所有資料都是NaN時才洗掉,

df.dropna(how="all")

image.png
沒有滿足條件的資料,所有資料都保留下來了,

how="any"時,只要有一個資料是NaN,就會洗掉當前行資料,

df.dropna(how="any")

image.png
所有資料都洗掉了,因為示例資料中每一行都有一個NaN資料,

除了how之外,另一個常用的引數是subset,與how相比,它可以具體指定哪些列為NaN時才洗掉資料,

df.dropna(subset=["value", "指標中文"])

image.png
指標中文或者valueNaN的資料都洗掉了,

3. 重復值處理

在資料分析中,處理重復值是非常重要的,因為重復值會影響分析結果和資料準確性,
處理重復值可以:

  1. 避免重復計算:重復值可能會導致重復計算,從而影響資料分析結果的準確性,
  2. 減少存盤空間:去除重復值可以減少資料存盤空間,從而提高資料處理效率,
  3. 提高資料分析精度:處理重復值可以提高資料分析的準確性和精度,從而幫助分析師做出更準確的決策,
  4. 符合資料質量標準:去除重復值可以提高資料的完整性和一致性,符合資料質量標準,
  5. 簡化資料可視化:處理重復值可以簡化資料可視化操作,從而幫助分析師更好地理解資料,

演示重復值處理的測驗資料如下:

import pandas as pd

fp = "http://databook.top:8888/pandas/duplicate-values.csv"
df = pd.read_csv(fp)
df

image.png

3.1 查找重復值

pandas提供了duplicated()方法來檢查DataFrame中的重復值,
該方法回傳一個布爾Series,其中True表示該行是重復的,False表示該行不是重復的,

df.duplicated()

image.png
根據index,可以看出哪些行是重復的,

3.2 洗掉重復值

對于重復的值,一般都是直接洗掉,
洗掉重復資料的方法drop_duplicates中有個keep引數可以重點關注下,

# 重復時,保留第一個資料
df.drop_duplicates(keep="first")

image.png
keep="first"時,從index可以看出,保留的是重復資料中index的資料,

# 重復時,保留最后一個資料
df.drop_duplicates(keep="last")

image.png
keep="last"時,從index可以看出,保留的是重復資料中index的資料,

df.drop_duplicates(keep=False)

image.png
keep=False時,所有重復的資料都被洗掉了,

4. 總結回顧

本篇主要介紹pandas在資料整理方面的能力,主要包括:

  1. 資料概要資訊的獲取
  2. 缺失值的處理
  3. 重復值的處理

熟練掌握資料整理的方法,可以讓后續的分析步驟更加高效,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552415.html

標籤:其他

上一篇:數字分頻器設計(偶數分頻、奇數分頻、小數分頻、半整數分頻、狀態機分頻|verilog代碼|Testbench|仿真結果)

下一篇:返回列表

標籤雲
其他(159009) Python(38129) JavaScript(25421) Java(18034) C(15226) 區塊鏈(8265) C#(7972) AI(7469) 爪哇(7425) MySQL(7184) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1972) 功能(1967) Web開發(1951) HtmlCss(1936) python-3.x(1918) C++(1915) 弹簧靴(1913) xml(1889) PostgreSQL(1876) .NETCore(1860) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 【pandas基礎】--資料整理

    pandas進行資料整理的意義在于,它是資料分析、資料科學和機器學習的前置步驟。 通過資料整理可以提前了解資料的概要,缺失值、重復值等情況,為后續的分析和建模提供更為可靠的資料基礎。 本篇主要介紹利用pandas進行資料整理的各種方法。 1. 資料概要 獲取資料概要資訊可以幫助我們了解資料的基本情況 ......

    uj5u.com 2023-05-15 07:24:17 more
  • 數字分頻器設計(偶數分頻、奇數分頻、小數分頻、半整數分頻、狀態

    偶數分頻:無論是通過D觸發器還是計數器實作,這類分頻都是最容易得到的,并且占空比容易控制在50%。對于D觸發器實作偶數分頻來說,分頻數只能得2^n,其余分頻數只能由計數器法等其他方法實作。除此以外,隨著分頻的數目不斷增大,通過D觸發器實作觸發器數目會增多,在電路設計的程序中應當考慮面積因素。對于計數... ......

    uj5u.com 2023-05-15 07:24:09 more
  • 數字分頻器設計(偶數分頻、奇數分頻、小數分頻、半整數分頻、狀態

    偶數分頻:無論是通過D觸發器還是計數器實作,這類分頻都是最容易得到的,并且占空比容易控制在50%。對于D觸發器實作偶數分頻來說,分頻數只能得2^n,其余分頻數只能由計數器法等其他方法實作。除此以外,隨著分頻的數目不斷增大,通過D觸發器實作觸發器數目會增多,在電路設計的程序中應當考慮面積因素。對于計數... ......

    uj5u.com 2023-05-15 07:22:13 more
  • R語言資料繪圖學習(0x01)-安裝ggplot2與嘗試

    0x01 安裝與R基礎 一直聽說資料分析里R語言是比較‘正統’,況且久聞ggplot2這些R語言的資料分析庫大名,想到今后資料分析和整理的需要,這里開一個簡單的系列學習一些R語言和ggplot2的繪圖基礎。本人學習的書籍是Winston Chang大佬的《R Graphics Cookbook》,且 ......

    uj5u.com 2023-05-13 07:41:55 more
  • python高級技術(行程二)

    一 行程物件及其他方法 '''一臺計算機上面運行著很多行程,那么計算機是如何區分并管理這些行程服務端的呢?計算機會給每一個運行的行程分配一個PID號如何查看 windows電腦 進入cmd輸入tasklist即可查看 tasklist|findstr PID查看具體的行程 linux電腦 進入終端之 ......

    uj5u.com 2023-05-13 07:36:35 more
  • 使用 IDEA 時突然斷電導致 git 本地分支損壞的解決方案

    使用IDEA提交專案的時候突然斷電,重啟后專案 git 損壞,所有檔案變成了 untracked,IDEA 界面上表示為所有檔案名變成綠色,并且無法 pull (也可能是無法 push) 提示 Git Pull Failed From http://***************** * branc ......

    uj5u.com 2023-05-13 07:24:33 more
  • Spring AOP 分享

    初級篇 AOP是什么? Aspect-oriented Programming (AOP) 即面向切面編程。簡單來說,AOP 是一種編程范式,允許我們模塊化地定義橫跨多個物件的行為。AOP 可以幫助我們將應用程式的關注點分離,使得代碼更加清晰、易于維護和擴展。 大白話:在方法執行前后運行指定代碼,比 ......

    uj5u.com 2023-05-13 07:22:03 more
  • 閱讀論文的方法和技巧(快速且有效)

    如何從一個小白快速開始入手看論文,然后看論文,發論文。請仔細看下面的講解。歡迎大家一起交流和補充。 閱讀論文的方法和技巧 一.閱讀論文五個重要步驟(通常用時30-60分鐘) 1.第一遍是快速瀏覽論文的摘要、結論、框架圖,有助于把握核心,對論文的內容形成整體感知。(5-10分鐘) 當然,這一遍建議在網 ......

    uj5u.com 2023-05-12 10:48:00 more
  • Java的列舉型別

    如果類的物件的數量只有有限個,并且可以確定物件的屬性,那么考慮使用列舉類。所有的列舉型別都是 Enum 類的子類。它們繼承了這個類的許多方法。 ......

    uj5u.com 2023-05-12 10:47:56 more
  • 閱讀論文的方法和技巧(快速且有效)

    如何從一個小白快速開始入手看論文,然后看論文,發論文。請仔細看下面的講解。歡迎大家一起交流和補充。 閱讀論文的方法和技巧 一.閱讀論文五個重要步驟(通常用時30-60分鐘) 1.第一遍是快速瀏覽論文的摘要、結論、框架圖,有助于把握核心,對論文的內容形成整體感知。(5-10分鐘) 當然,這一遍建議在網 ......

    uj5u.com 2023-05-12 10:47:13 more