自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Python中加入多個數(shù)據(jù)幀?

開發(fā) 后端
你正在處理一個從多個源收集數(shù)據(jù)的項目。在進入探索和模型構(gòu)建部分之前,你需要首先連接這些多個數(shù)據(jù)集(以表、數(shù)據(jù)幀等形式)。怎么能做到這一點而不丟失任何信息?

初學(xué)Python編程的人,面臨的是各種未知的挑戰(zhàn)。

下面是一個幾乎讓所有更有抱負的數(shù)據(jù)科學(xué)家都感到意外的場景:

你正在處理一個從多個源收集數(shù)據(jù)的項目。在進入探索和模型構(gòu)建部分之前,你需要首先連接這些多個數(shù)據(jù)集(以表、數(shù)據(jù)幀等形式)。怎么能做到這一點而不丟失任何信息?

這聽起來可能是一個簡單的場景,但對于許多新來的人來說,這可能是一個威脅,特別是那些不熟悉Python編程的人。

​如何在Python中加入多個數(shù)據(jù)幀?

進一步深入研究,我可以大致將其分為兩種情況:

  • 首先,具有相似屬性的數(shù)據(jù)可以分布到多個文件中。例如,假設(shè)向你提供了多個文件,每個文件都存儲一年中某一周內(nèi)發(fā)生的銷售信息。因此,全年將有52個文件。每個文件的列數(shù)和名稱都相同。
  • 其次,你可能需要合并來自多個來源的信息。例如,假設(shè)你想獲得購買產(chǎn)品的人的聯(lián)系信息。這里有兩個文件,第一個有銷售信息,第二個有客戶信息。

理解手頭的問題

本文列舉一個通俗易懂的例子。

想一下在一個特定的學(xué)校里考試。每個科目都有不同的老師授課。他們更新關(guān)于學(xué)生成績和整體表現(xiàn)的檔案。這些檔案就是多個文件!

本文使用創(chuàng)建的兩個這樣的文件來演示Python中函數(shù)的工作。第一個文件包含關(guān)于12班學(xué)生的數(shù)據(jù),另一個文件包含10班的數(shù)據(jù)。還將使用第三個文件來存儲學(xué)生的姓名和學(xué)生ID。

注意:雖然這些數(shù)據(jù)集是從零開始創(chuàng)建的,但鼓勵將所學(xué)應(yīng)用于選擇的數(shù)據(jù)集。

在Python中逐步合并數(shù)據(jù)幀的過程

下面是解決這個問題的方法:

  • 用Python加載數(shù)據(jù)集
  • 合并兩個相似的數(shù)據(jù)幀(append)
  • 合并來自兩個數(shù)據(jù)幀的信息(merge)

步驟1:用Python加載數(shù)據(jù)集

本文將使用三個獨立的數(shù)據(jù)集。首先,將這些文件加載到單獨的數(shù)據(jù)幀中。

  1. import pandas as pd 
  1. marks10th=pd.read_csv('10thClassMarks.csv') 
  1. marks12th=pd.read_csv('12thClassMarks.csv') 
  1. IDandName=pd.read_csv('StudentIDandName.csv') 

前兩個數(shù)據(jù)框包含學(xué)生的百分比及其學(xué)生ID。在第一個數(shù)據(jù)框中,有10班學(xué)生的分數(shù),而第二個數(shù)據(jù)框包含第12個標(biāo)準(zhǔn)中學(xué)生的分數(shù)。第三個數(shù)據(jù)框包含學(xué)生的姓名以及各自的學(xué)生ID。

[[315918]]

來源:btime

使用“head”函數(shù)檢查每個數(shù)據(jù)幀的前幾行:

  1. marks10th.head() 
  1. marks12th.head() 
  1. IDandName.head() 

​如何在Python中加入多個數(shù)據(jù)幀?

步驟2:合并兩個相似的數(shù)據(jù)幀(Append)

把10、12班的檔案合并起來,找出學(xué)生的平均分。這里使用Pandas庫中的“append”函數(shù):

  1. allMarks=marks10th.append(marks12th) 
  1. marks10th.shape, marks12th.shape, allMarks.shape 

輸出((50,3),(50,3),(100,3))

從輸出中可以看到,在append函數(shù)中垂直添加兩個數(shù)據(jù)幀。

結(jié)果數(shù)據(jù)幀是allMarks。上面比較了所有三個數(shù)據(jù)幀的形狀。

接下來看看“allMarks”的內(nèi)容并計算平均值:

​如何在Python中加入多個數(shù)據(jù)幀?

  1. allMarks['Exam Points'].mean() #Average Marks 

輸出:49.74

步驟3:合并來自兩個數(shù)據(jù)幀的信息(Merge)

現(xiàn)在,假設(shè)想找出在這兩個批次中排名第一的學(xué)生的名字。這里不需要垂直添加數(shù)據(jù)幀。為了給學(xué)生的名字再加一列,我們將不得不水平縮放。

要做到這一點,我們會發(fā)現(xiàn)最高得分:

  1. allMarks['Exam Points'].max() # Maximum Marks 

輸出:100

學(xué)生的最高成績是100分?,F(xiàn)在,使用“merge”函數(shù)查找此學(xué)生的姓名:

  1. mergedData=allMarks.merge(IDandName, on='student id'
  1. mergedData.head() 

​如何在Python中加入多個數(shù)據(jù)幀?

最后,生成的數(shù)據(jù)框有學(xué)生的名字和他們的標(biāo)記。

merge函數(shù)需要一個必要的屬性,兩個數(shù)據(jù)幀將在該屬性上合并。需要傳遞此列的名稱在“on”參數(shù)中。

merge函數(shù)的另一個重要論點是“如何”。這指定要在數(shù)據(jù)幀上執(zhí)行的聯(lián)接類型。以下是可以執(zhí)行的不同連接類型(SQL用戶將非常熟悉這一點):

  • 內(nèi)部連接(如果不提供任何參數(shù),則默認執(zhí)行)
  • 外部連接
  • 右連接
  • 左連接

還可以使用“sort”參數(shù)對數(shù)據(jù)幀進行排序。這些是合并兩個數(shù)據(jù)幀時最常用的參數(shù)。

[[315919]]

來源:Pexels

現(xiàn)在,我們將看到數(shù)據(jù)框包含100個“檢查點”的行:

  1. mergedData.loc[mergedData['Exam Points']==100] 

​如何在Python中加入多個數(shù)據(jù)幀?

三個學(xué)生得了100分,其中兩個在10班。做得好!

接下來,我的建議是接受包含3個不同文件的食物預(yù)測挑戰(zhàn)。

很直截了當(dāng),對吧?

你再也不必為此而自責(zé)了!你可以繼續(xù)并將其應(yīng)用于選擇的任何數(shù)據(jù)集。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2013-04-02 15:23:12

2009-11-24 19:33:07

PHP字符串中加入變量

2013-11-13 09:22:16

2017-02-08 21:20:24

LinuxUbuntu加密硬盤

2024-01-30 15:29:20

Django數(shù)據(jù)庫Python

2011-03-02 17:41:28

2011-03-18 09:48:32

2009-06-29 09:44:07

Smooth StreSilverlight

2024-03-25 00:02:00

Android移動開發(fā)視頻

2025-01-07 12:58:28

2022-09-26 08:35:53

磁盤Java解密

2020-07-01 16:45:13

matplotlib內(nèi)嵌圖Python

2013-03-19 10:17:59

云計算谷歌BigQuery

2020-05-19 13:55:38

Python加密密碼

2011-03-24 16:01:30

數(shù)據(jù)庫管理

2011-10-13 16:34:30

MeeGoQt插件

2012-11-30 16:02:57

在vSphereiSCSI存儲虛擬化

2009-07-02 09:35:02

hibernate訪問

2025-01-21 15:20:14

2020-05-25 17:40:00

MacpyenvPython
點贊
收藏

51CTO技術(shù)棧公眾號