日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 數據合并
    • 1.1 merge()合并
    • 1.2 concat()合并
    • 1.3 combine()合并
  • 2. 數據清洗
    • 2.1 缺失值
    • 2.2 重復值
    • 2.3 內容與格式清洗


1. 數據合并

實際應用中,需要分析的數據可能來自不同的數據集,因此在開始數據分析之前,需要先將不同的數據集合并。
pandas中提供了三種不同的數據合并方式:

  • Pandas.merge():數據庫方式的數據連接,可根據一個或多個鍵,將不同DataFrame對象的行連接起來;
  • Pandas.concat():軸向數據連接,沿著一條軸,將多個DataFrame對象堆疊到一起;
  • Pandas.combine():用一個DataFrame對象中的數據填充另一個DataFrame對象中的缺失數據。
  • 1.1 merge()合并

    pd.merge(left,right,[參數列表])

    參數說明
    left參與合并的左側DataFrame對象,必填
    right參與合并的右側DataFrame對象,必填
    how連接方式,“inner”、“outer”、“left”、“right”其中之一,默認為“inner”
    on用于連接的列名(或列名列表);未指定改參數時,為左右數據集的公共列
    left_on左側DataFrame對象中用于連接的鍵
    right_on右側DataFrame對象中用于連接的鍵
    left_index布爾型,是否將左側DataFrame對象的行索引用作連接鍵
    right_index布爾型,是否將右側DataFrame對象的行索引用作連接鍵
    sort是否根據連接鍵對合并后的數據排序,默認為True
    suffixes字符串值元組,用于追加到重疊列名的末尾,默認為‘_x’和‘_y’

    inner:內連接,連接兩個DataFrame對象鍵值的交集的行
    outer:外連接,連接兩個DataFrame對象鍵值的并集的行
    left:左鏈接,取出左側DataFrame對象的全部行,連接右側DataFrame對象鍵值匹配的行
    right:右鏈接,取出右側DataFrame對象的全部行,連接左側DataFrame對象鍵值匹配的行

    1.2 concat()合并

    pd.concat(objs,axis,[參數列表])

    參數說明
    objs需要連接的對象,如[df1, df2]
    axis連接的軸,默認為0;axis=0,按行堆疊;axis=1,按列堆疊
    join默認為“outer”,outer為并集/inner為交集
    ignore_indexignore_index 忽略需要連接的frame本身的index,當原本的index沒有特別意義的時候可以使用
    join_axesIndex對象列表,用于其他n-1軸的特定索引,而不是執行內部/外部設置邏輯
    keys可以給每個需要連接的df一個label
    levels序列列表,默認值無;用于構建MultiIndex的特定級別(唯一值)
    nameslist,default無,結果層次索引中的級別的名稱
    verify_integrityboolean,default False;檢查新連接的軸是否包含重復項
    copyboolean,default True

    1.3 combine()合并

    • df1.combine_first(df2)
      專門針對df1中的空值進行處理。
      當行、列索引相同時:用df2數據集來填充df1中的缺失值
      當行、列索引不同時:結果中的列是兩個數據集列的并集,結果中的行是兩個數據集行的并集,并用df2的對應值填充df1中的NA值

    • df.combine(other, func, fill_value=None, overwrite=True)
      基于傳遞的函數執行與另一個DataFrame的逐列組合。
      使用func將DataFrame與其他 DataFrame 組合到按元素組合的列。生成的DataFrame的行索引和列索引將是兩者的并集。

    參數說明
    otherDataFrame,要按列合并的DataFrame
    func將兩個系列作為輸入并返回一個Series或一個標量的函數,用于逐列合并兩個數據幀
    fill_value標量值,默認None;在將任何列傳遞給合并函數之前填充NaN的值
    overwriteboolean,默認為True;如果為true,列自我不存在在其他將與NaN的覆蓋
    # combine實現combine_first的邏輯 import pandas as pd df = pd.DataFrame({"A": ["001", None, "003", None, "005"],"B": ["1", "2", "3", "4", "5"]}) df["A"] = df["A"].combine(df["B"], lambda a, b: a if pd.notna(a) else b)

    2. 數據清洗

    2.1 缺失值

    1. 識別缺失值

    • df.isnull()
      判斷dataframe每行每列的元素是否為缺失值,分別用False和True表示
    • df.isnull().any() && df.isnull().any(1)
      查看所有列、行是否缺失值
    • df.isnull().all() && df.isnull().all(1)
      查看所有列、行是否全部為缺失值

    2. 處理缺失值

    • 濾除缺失值
      df.dropna(how, axis, thresh, inplace)
    參數說明
    how取值為any或all,how=‘all’值丟棄全部NA的行(列)
    axis軸向參數,默認為0;axis=0,丟棄行數據;axis=1,丟棄列數據
    thresh保留部分觀測數據,例如thresh=3,則當一行(列)有3個或以上非NA值才保留
    inplace默認為False;inplace=True表示修改調用者而不產生副本
    • 填充缺失值
      df.fillna()
    參數說明
    value用于填充缺失值的標量值或字典對象
    method用于填充缺失值的方法。method=‘ffill’,向前填充;method=‘bfill’,向后填充。也可以使用平均值或中位數等統計學方法,如method=df.mean()
    axis待填充的軸,默認axis=0,按列填充
    inplace默認為False;inplace=True表示修改調用者而不產生副本

    注:不同列的缺失值用不同的數值來填充,需要構造{列索引名:值}形式的字典對象作為參數。

    #把體重的缺失值用該列的均值填充,心率缺失值用默認值75填充 patient_data.fillna({'體重':patient_data['體重'].mean(),'心率':75}, inplace=True)

    2.2 重復值

    1. 查看重復值
    df.duplicated()
    查看DataFrame對象df中是否有重復行,返回一個布爾型的Series

    2. 刪除重復值
    df.drop_duplicates()
    刪除df中重復的數據行,結果中默認保留第一個出現的值組合,傳入take_last=True則保留最后一個。

    注:上面的兩個方法會默認判斷全部列,也可以對部分列進行重復項判斷或刪除,只需傳入列名或列名的列表。

    df.drop_duplicates(['column_a'])

    2.3 內容與格式清洗

    1. replace數據替換
    df.replace(to_replace,value,[參數列表])

    參數說明
    to_replace要替換掉的值
    value替換后的新值
    inplace是否修改原始數據,默認為False

    如果一次需要修改多個值,則可以傳入一個列表和要替換的值:

    df.replace([270,1400],np.nan) #把270,1400 均替換成NaN

    對不同的值進行不同的替換,傳入一個替換關系組成的列表或字典:

    df.replace({'U.S.A.':'USA','U.K.':'UK'})

    2. iterrows()迭代器遍歷
    df.iterrows()
    iterrows()返回值為元組(index,row)

    # 將單位為cm的身高單位統一為m for index,row in patient_data[rows_with_cm].iterrows(): #使用迭代器height =float(row['身高'][:-2])/100 #身高轉換為以m為單位patient_data.at[i,'身高(m)'] = '{}'.format(round(height,2))

    總結

    以上是生活随笔為你收集整理的【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产xxx视频 | www.chengren | 欧美久久久影院 | 中文字幕乱码视频 | 丰满人妻一区二区三区46 | 一本色道久久综合亚洲 | 亚洲国产中文字幕在线 | 国内精品人妻无码久久久影院蜜桃 | 久久网一区二区 | 日韩视频二区 | 中文国语毛片高清视频 | 夜夜爽妓女8888视频免费观看 | 强行挺进白丝老师里呻吟 | 91人妻一区二区三区 | 国产精品乱 | 亚洲熟妇av一区二区三区 | 免费av在线播放网址 | 在线观看av的网站 | 91嫩草影视 | 中国大陆高清aⅴ毛片 | 亚洲综合影院 | 亚洲精品国产精品国自产 | 蜜桃免费av| 国产在线精品播放 | 亚洲天堂岛 | 午夜大片 | 北条麻纪在线观看aⅴ | 尤物在线观看视频 | 亚洲午夜精品久久 | 午夜av网站 | 亚洲最大黄色网址 | 亚洲视屏在线观看 | 亚洲av人无码激艳猛片服务器 | 国产精品一区二区三区在线免费观看 | 国产精品二区视频 | 欧美激情 在线 | 国产视频在 | 国产特级av| 亚洲国产av一区二区三区 | 色噜噜在线播放 | 日本中文在线观看 | 91精品国产综合久久香蕉922 | 日本精品一区在线观看 | 色香蕉在线 | 天天插av| 人禽l交视频在线播放 视频 | 亚洲天堂一区在线观看 | 日韩中文字幕av在线 | 麻豆精品久久久 | 亚洲第一视频 | 精品少妇视频 | 日日好av| 制服诱惑一区二区 | 日韩一级黄色录像 | 激情久久中文字幕 | 成人av动漫在线观看 | 亚洲一区二区久久 | 韩国精品在线观看 | 午夜免费av | 国产一区二区色 | 欧美特级黄色片 | 午夜久久影院 | 久久美女精品 | 国产91清纯白嫩初高中在线观看 | 天天综合干 | 天堂av2014 | 亚洲第一在线 | 91视频亚洲 | 久久精品色| 久久久久久国产 | 久久精品99国产精 | 美女亚洲一区 | 午夜精品一区二区三区三上悠亚 | 在线国产黄色 | 视色av| 我们的生活第五季在线观看免费 | 性欧美又大又长又硬 | 二区在线视频 | 日日骚影院 | 黄色福利视频网站 | 嫩草在线观看 | 亚洲色成人网站www永久四虎 | 国产91丝袜在线播放0 | 7x7x7x人成影视 | 九九成人 | 欧美一级在线观看视频 | 51精品 | 国产高h视频 | 中文字幕亚洲一区 | 欧美精品乱码视频一二专区 | 高清三区 | 国产999精品视频 | 中文字幕精品在线 | 蜜臀av性久久久久蜜臀aⅴ | 天天躁日日躁狠狠躁喷水 | 色资源在线 | 一本久道综合色婷婷五月 | 深田咏美在线x99av | 看一级片|