python 數據清洗之數據合併、轉換、過濾、排序

2021-03-02 Python開發者

(點擊上方藍字,快速關注我們)

來源:molearner 

www.cnblogs.com/wkslearner/p/5928888.html

如有好文章投稿,請點擊 → 這裡了解詳情

數據清洗一直是數據分析中極為重要的一個環節。

數據合併

在pandas中可以通過merge對數據進行合併操作。

import numpy as np

import pandas as pd

data1 = pd.DataFrame({'level':['a','b','c','d'],

                 'numeber':[1,3,5,7]})

 

data2=pd.DataFrame({'level':['a','b','c','e'],

                 'numeber':[2,3,6,10]})

print(data1)

結果為:

print(data2)

結果為:

print(pd.merge(data1,data2))

結果為:

可以看到data1和data2中用於相同標籤的欄位顯示,而其他欄位則被捨棄,這相當於SQL中做inner join連接操作。

此外還有outer,ringt,left等連接方式,用關鍵詞how的進行表示。

data3 = pd.DataFrame({'level1':['a','b','c','d'],

                 'numeber1':[1,3,5,7]})

data4=pd.DataFrame({'level2':['a','b','c','e'],

                 'numeber2':[2,3,6,10]})

print(pd.merge(data3,data4,left_on='level1',right_on='level2'))

結果為:

兩個數據框中如果列名不同的情況下,我們可以通過指定letf_on 和right_on兩個參數把數據連接在一起

print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left'))

結果為:

其他詳細參數說明

重疊數據合併

有時候我們會遇到重疊數據需要進行合併處理,此時可以用comebine_first函數。

data3 = pd.DataFrame({'level':['a','b','c','d'],

                 'numeber1':[1,3,5,np.nan]})

data4=pd.DataFrame({'level':['a','b','c','e'],

                 'numeber2':[2,np.nan,6,10]})

print(data3.combine_first(data4))

結果為:

可以看到相同標籤下的內容優先顯示data3的內容,如果一個數據框中的某一個數據是缺失的,此時另外一個數據框中的元素就會補上

這裡的用法類似於np.where(isnull(a),b,a)

數據重塑和軸向旋轉

這個內容我們在上一篇pandas文章有提到過。數據重塑主要使用reshape函數,旋轉主要使用unstack和stack兩個函數。

data=pd.DataFrame(np.arange(12).reshape(3,4),

              columns=['a','b','c','d'],

              index=['wang','li','zhang'])

print(data)

結果為:

print(data.unstack())

結果為:

數據轉換

刪除重複行數據

data=pd.DataFrame({'a':[1,3,3,4],

              'b':[1,3,3,5]})

print(data)

結果為:

print(data.duplicated())

結果為:

可以看出第三行是重複第二行的數據所以,顯示結果為True

另外用drop_duplicates方法可以去除重複行

print(data.drop_duplicates())

結果為:

替換值

除了使用我們上一篇文章中提到的fillna的方法外,還可以用replace方法,而且更簡單快捷

data=pd.DataFrame({'a':[1,3,3,4],

              'b':[1,3,3,5]})

print(data.replace(1,2))

結果為:

多個數據一起換

print(data.replace([1,4],np.nan))

數據分段

data=[11,15,18,20,25,26,27,24]

bins=[15,20,25]

print(data)

print(pd.cut(data,bins))

結果為:

[11, 15, 18, 20, 25, 26, 27, 24][NaN, NaN, (15, 20], (15, 20], (20, 25], NaN, NaN, (20, 25]]

Categories (2, object): [(15, 20] < (20, 25]]

可以看出分段後的結果,不在分段內的數據顯示為na值,其他則顯示數據所在的分段。

print(pd.cut(data,bins).labels)

結果為:

[-1 -1 0 0 1 -1 -1 1]

顯示所在分段排序標籤

print(pd.cut(data,bins).levels)

結果為:

Index([『(15, 20]』, 『(20, 25]』], dtype=』object』)

顯示所以分段標籤

print(value_counts(pd.cut(data,bins)))

結果為:

顯示每個分段值得個數

此外還有一個qcut的函數可以對數據進行4分位切割,用法和cut類似。

排列和採樣

我們知道排序的方法有好幾個,比如sort,order,rank等函數都能對數據進行排序

現在要說的這個是對數據進行隨機排序(permutation)

data=np.random.permutation(5)

print(data)

結果為:

[1 0 4 2 3]

這裡的peemutation函數對0-4的數據進行隨機排序的結果。

也可以對數據進行採樣

df=pd.DataFrame(np.arange(12).reshape(4,3))

samp=np.random.permutation(3)

print(df)

結果為:

print(samp)

結果為:

[1 0 2]

print(df.take(samp))

結果為:

這裡使用take的結果是,按照samp的順序從df中提取樣本。

看完本文有收穫?請轉發分享給更多人

關注「Python開發者」,提升Python技能

相關焦點

  • Python數據清洗--類型轉換和冗餘數據刪除
    數據分析過程中最頭疼也是工作量最大的部分算是探索和清洗了,探索的目的是了解數據,了解數據背後隱藏的規律,清洗的目的則是為了讓乾淨的數據進入分析或建模的下一個環節。作者將通過三篇文章,詳細講解工作中常規的數據清洗方法,包括數據類型的轉換,重複數據的處理,缺失值的處理以及異常數據的識別和處理。
  • Python數據分析到底可以用來做什麼?
    主要學習內容包括四大部分:(1)Python工作環境及基礎語法知識了解(包括正則表達式相關知識學習);(2)數據採集相關知識(python爬蟲相關知識);(3)數據分析學習;(4)數據可視化學習。簡單來說,可以做到的內容有很多,比如檢查數據表、數據表清洗、數據預處理、數據提取和數據篩選匯總等等。
  • 像Excel一樣使用python進行數據分析
    Excel是數據分析中最常用的工具,本篇文章通過python與excel的功能對比介紹如何使用python通過函數式編程完成excel中的數據處理及分析工作。在Python中pandas庫用於數據處理,我們從1787頁的pandas官網文檔中總結出最常用的36個函數,通過這些函數介紹如何通過python完成數據生成和導入,數據清洗,預處理,以及最常見的數據分類,數據篩選,分類匯總,透視等最常見的操作。文章內容共分為9個部分。這是第一篇,介紹前3部分內容,數據表生成,數據表查看,和數據清洗。
  • 「數據清洗」lambda表達式配合使用的四種函數
    標籤:數據清洗、pythonlambda表達式配合使用的四種函數一、什麼是lambda表達式基本特性使用方法filter函數map函數sorted函數reduce函數總結什麼是lambda表達式,過濾掉不符合條件的元素,返回一個迭代器對象,注意返回的不是列表,如果要轉換為列表,可以使用 list()來轉換。
  • Python數據核對系列之2—power query VS pandas
    利用query進行核對使用的是query裡面的合併查詢,其實也就是sql當中的左連接、右連接、全外連接。可以通過設定的連接欄位來完成兩表的合併。我們從數據-新建查詢-從文件裡選擇從工作簿或者從csv。然後加載我們的源文件。在選擇csv文件加載的時候,有時候會因為原始數據的某個欄位裡包含換行符而導致加載完的數據會出現錯行問題,導致你的數據格式設置會報錯。
  • Python,Numpy,Pandas……數據科學家必備排序技巧
    python 3.6.8numpy 1.16.4pandas 0.24.2tensorflow==2.0.0-beta1#tensorflow-gpu==2.0.0-beta1 slows sorting
  • 數據挖掘之Python基礎(一)基本數據類型與數據結構
    前言最近工作和研究涉及到數據挖掘和機器學習,出於歸納和總結知識的目的寫下這一系列的文章,這一系列文章將會包括Python的基本數據類型和數據結構,函數和面向對象相關的知識,然後會介紹數據挖掘和機器學習經常用到的Numpy,Pandas。也希望這一系列文章能夠幫助剛剛接觸Python或者數據挖掘和機器學習的人。
  • Pandas中數據的排序與切片
    一、數據排序.sort_index(axis=int, ascending=bool)對數據進行按橫(縱)軸排序,其中axis表示對橫軸設置按值排序。可用.sort_values(by = str)方法對數據進行按值排序,by設置為排序依據。
  • 堪比python、秒殺Excel表格,這個數據分析工具太猛了
    這是一個老生常談的話題,網上很多人都推薦去學習SQL、Excel的VBA、python這些語言。但其實並不是所有人都適合這些語言,很多業務人員和運營人員根本不會去學這些東西,他們不熟悉編程和代碼,沒有必要花時間學習這麼專業的軟體。
  • Python的處理數據,如何進行數據轉換,學會三種方式
    python數據轉換num01,num02是str類型,但是我們需要的是整型,所以通過int轉換成了整數。數據轉換如何完成數據轉換?一、數據類型轉換方法格式:要轉換的類型(數據)要把num01轉換為整數:int(num01)要把num01轉換為浮點數:float(num01)要把num01轉換為字符串:str(num01)要把nun01轉換為布爾類型:bool(num01)例如:print(int("12345") + 1)print(float("12.345") + 1.187
  • python數據分析師面試題選
    如何利用Numpy對數列的前n項進行排序使用argsort()函數:x[x [: n-1].argsort ()]4.Pandas中使用的標準數據缺失標誌是什麼NaN7. 描述numpy array比python list的優勢a. numpy array比python list更緊湊,存儲數據佔的空間小,讀寫速度快。
  • R語言入門筆記·數據·排序與長寬型轉換
    1、sort() 排序> x<-sample(1:100,10)> sort(x,decreasing = TRUE) 降序排列,默認為升序 [1] 97 82 80 51 37 33 31 25 21 14
  • Pandas常用數據結構DataFrame詳細教程
    pandas 是python的數據分析庫,提供快速、靈活和富有表現力的數據結構,用於數據挖掘和數據分析,同時也提供數據清洗功能,與numpy、matplotlib
  • Python中的合併排序算法,合併排序的優缺點,中級python技術點
    在合併排序的情況下,分治法將輸入值的集合劃分為兩個大小相等的部分,對每個一半進行遞歸排序,最後將這兩個排序的部分合併為一個排序列表。在Python中實現合併排序合併排序算法的實現需要兩個不同的部分:將輸入的值用遞歸的方式拆分成兩部分合併兩個分開的函數,產生一個排序數組這是合併兩個不同數組的代碼:merge()接收兩個需要合併在一起的不同排序數組。完成此過程的過程很簡單:第4行和第9行檢查兩個數組是否為空。如果其中之一是沒有合併的,則該函數將返回另一個數組。
  • Python數據分析實戰基礎(二):清洗常用4板斧
    作者 | 吹牛Z來源 | 數據不吹牛首先,導入案例數據集。因為案例數據存放在同一個Excel表的不同Sheet下,我們需要指定sheetname分別讀取:下面開始清洗的正餐。01 增——拓展數據維度1.1 縱向合併這三個sheet的數據,維度完全一致(每列數據都是一樣),縱向合併起來分析十分方便。
  • stata調用python爬取時間數據——借他山之石以攻玉
    該功能使得,我們可以先利用python爬取數據,然後再利用用戶所熟悉的stata去處理數據,因為stata在處理數據方面具有一定的優勢。那麼今天我們就來看看,怎樣利用stata調用python爬取數據,再用stata進行處理?今天試爬的數據是巨潮網上的預約年報的披露時間數據。
  • Python中排序算法的重要性,希爾排序 ShellSort,中級python技術
    你可以使用排序來解決各種各樣的問題:搜索:如果列表是排序的,那麼在列表中搜索條目的速度會快得多。選擇:使用已排序的數據,從列表中根據項與其他項的關係選擇項更容易。1A 1B2A 2B3A 3B4A 4B5A 5B1A, 1B, 2A, 2B等為分組標記,數字相同的表示在同一組,大寫字母表示是該組的第幾個元素, 每次對同一組的數據進行直接插入排序
  • Python基礎學習之常用六大數據類型
    剛開始學習一門程式語言,除了了解運行環境與語言類型之外,最基本還是從該語言的基本數據類型開始學起。將其他一些靜態語言中的int、long,也就是整型和長整型合併為了一個。可以通過下面的方式來互相轉換:print(bin(20)) #轉換二進位print(oct(20)) #轉換八進位print(hex(20)) #轉換十六進位二、浮點型浮點數也就是小數,如22.1,44.2,也可以使用科學計數法,比如:1.22e8。
  • Python數據類型串講(上)
    CDA數據分析師 出品1、什麼是數據學習一門新的程式語言,掌握其語法的底層是我們第一步要做的事。編程的底層也就是我們常說的基礎,下面將從python的基礎中的數據類型開始入門。何為數據?在計算機科學中,數據是指所有能輸入到計算機並被電腦程式處理的符號的介質的總稱,是用於輸入電子計算機進行處理,具有一定意義的數字字母、符號和模擬量等的統稱。2、數據類型的作用python的標準數據類型共有六種,為什麼要將數據分為不同的類型呢?
  • 零基礎開始用Python處理Excel數據
    【曾賢志】從零基礎開始用Python處理Excel數據 – 第1季 基礎篇課程目標:首先學習Python的基礎知識,然後使用Python來控制Excel,做數據處理。適用人群:Excel使用者、Python愛好者、數據處理人員、辦公人員等講師介紹:曾賢志51CTO金牌講師課程簡介:第1章 python基礎