成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用 Pandas 實現數據合并的九個常用函數

開發
在數據分析中,數據合并是常見的需求。Pandas 提供了多種方法幫助我們高效完成這項任務!簡單來說,數據合并就像拼圖一樣,把不同的數據塊組合成一個完整的畫面。

一、Pandas數據合并基礎

在數據分析中,數據合并是常見的需求。Pandas 提供了多種方法幫助我們高效完成這項任務!簡單來說,數據合并就像拼圖一樣,把不同的數據塊組合成一個完整的畫面。

1. 數據合并的核心概念

Pandas 的數據合并主要分為 堆疊** 和 鍵連接 兩種方式。堆疊是將數據上下或左右拼接,而鍵連接則是通過共同的列或索引進行匹配。

示例代碼:

import pandas as pd

# 創建兩個簡單的 DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

print("第一個 DataFrame:")
print(df1)
print("\n第二個 DataFrame:")
print(df2)

輸出結果:

第一個 DataFrame:
   A  B
0  1  3
1  2  4

第二個 DataFrame:
   A  B
0  5  7
1  6  8

接下來的章節會詳細講解如何用不同函數實現這些操作!別急,咱們一步步來~

二、使用concat函數進行簡單數據堆疊

1. concat函數的基礎用法

Pandas 的 concat 函數可以輕松實現數據的堆疊操作。比如,你想把兩個表格上下或左右合并,concat 就能派上用場!來看個例子:

import pandas as pd

# 創建兩個簡單的 DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

# 使用 concat 堆疊數據(默認按行堆疊)
result = pd.concat([df1, df2])
print(result)

輸出結果:

A  B
0  1  3
1  2  4
0  5  7
1  6  8

這里,pd.concat([df1, df2]) 把兩個表格按照行堆疊在一起,默認保留索引。如果想重置索引,可以加上參數 ignore_index=True。是不是超簡單?試試看吧!

三、利用append方法追加數據

1. append方法簡介

Pandas中的append方法可以輕松地將一個DataFrame追加到另一個DataFrame的末尾。這個方法特別適合處理小規模數據追加任務!不過需要注意,append在2023年后已被標記為過時,推薦使用pandas.concat替代。但為了了解歷史用法,我們還是來學習一下吧!

來看個例子:

import pandas as pd

# 創建兩個DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

# 使用append方法
result = df1.append(df2, ignore_index=True)  # ignore_index=True重新生成索引
print(result)

輸出結果:

A  B
0  1  3
1  2  4
2  5  7
3  6  8

2. 注意事項

  • append不會修改原DataFrame,而是返回一個新的合并后的DataFrame。
  • 如果列名不一致,缺失值會以NaN填充。
  • 推薦在新項目中盡量使用concat代替append,因為它更靈活且性能更好!

四、merge函數實現基于鍵的合并

1. 使用 merge 函數完成基于鍵的數據合并

Pandas 的 merge 函數可以像數據庫一樣,根據指定的鍵將兩個數據集合并在一起。它支持內連接、外連接、左連接和右連接,非常靈活!下面看一個例子:

import pandas as pd

# 創建兩個示例 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]})

# 使用 merge 函數進行內連接
merged_df = pd.merge(df1, df2, on='key', how='inner')
print(merged_df)

輸出結果:

key  value1  value2
0   B       2       4
1   C       3       5

這段代碼中,on='key' 表示以 key 列為合并依據,how='inner' 表示只保留兩個表中共有的鍵值。是不是很直觀?你可以嘗試更換 how 參數,比如 'outer' 或 'left',看看會發生什么變化!

五、join方法完成索引對齊的合并

1. 什么是join方法?

join 是 Pandas 中一個非常實用的方法,它可以根據索引自動對齊數據進行合并。簡單來說,就是把兩個表格按照它們的“行標簽”(索引)拼在一起。

舉個例子:假設有兩個表格,一個是學生的成績表,另一個是學生的個人信息表。如果它們都有相同的學號作為索引,用 join 就能輕松合并!

import pandas as pd

# 創建兩個示例 DataFrame
df1 = pd.DataFrame({'Score': [80, 90, 70]}, index=['Alice', 'Bob', 'Charlie'])
df2 = pd.DataFrame({'Age': [20, 22, 21]}, index=['Alice', 'Bob', 'Charlie'])

# 使用 join 方法合并
result = df1.join(df2)

print(result)

輸出結果:

Score  Age
Alice        80   20
Bob          90   22
Charlie      70   21

2. 為什么用 join?

相比其他方法,join 更加簡潔明了,特別適合以索引為基準的合并場景。此外,它還支持多種參數設置,比如選擇 inner 或 outer 合并方式,靈活又強大!試試看吧,你會愛上它的!

六、update函數更新數據值

1. 使用 update 函數更新數據值

Pandas 的 update 函數可以用來更新一個 DataFrame 中的值,用另一個 DataFrame 的值進行替換。如果目標 DataFrame 中有缺失值,可以用這個方法輕松填補!來看個例子:

import pandas as pd

# 創建兩個 DataFrame
df1 = pd.DataFrame({'A': [1, 2, None], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})

print("原始數據 df1:")
print(df1)

# 使用 update 更新 df1
df1.update(df2)
print("\n更新后的 df1:")
print(df1)

輸出結果:

原始數據 df1:
     A  B
0  1.0  4
1  2.0  5
2  NaN  6

更新后的 df1:
     A  B
0  7.0  4
1  8.0  5
2  9.0  6

代碼解析:

  • df1.update(df2) 會將 df2 中的值覆蓋到 df1 中,但只更新那些非空的值。
  • 如果 df1 中有缺失值(如 NaN),它會被 df2 中對應的值替換。
  • 這個方法非常適合處理需要動態更新的數據集!

七、combine_first處理缺失值的合并

1. 使用 combine_first 處理缺失值

在數據分析中,經常會遇到兩個數據集有部分重疊但某些值缺失的情況。Pandas 提供了 combine_first 方法,可以用來填補這些缺失值!簡單來說,它會用另一個 DataFrame 的值來填充當前 DataFrame 中的缺失值(NaN)。

舉個例子:

import pandas as pd

# 創建兩個帶有缺失值的 DataFrame
df1 = pd.DataFrame({'A': [1, None, 3], 'B': [None, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, None, 12]})

# 使用 combine_first 填補缺失值
result = df1.combine_first(df2)

print("原始 DataFrame 1:\n", df1)
print("原始 DataFrame 2:\n", df2)
print("合并結果:\n", result)

輸出結果:

原始 DataFrame 1:
      A    B
0   1.0  NaN
1   NaN  5.0
2   3.0  6.0
原始 DataFrame 2:
     A     B
0  7.0  10.0
1  8.0   NaN
2  9.0  12.0
合并結果:
     A     B
0  1.0  10.0
1  8.0   5.0
2  3.0   6.0

解釋:

  • 如果 df1 中某個值是 NaN,combine_first 會從 df2 中取對應位置的值進行填補。
  • 如果 df1 中已經有值,則保留原值,不會被覆蓋。
  • 這個方法特別適合處理有部分重疊的數據集,幫你輕松搞定缺失值問題!

八、高級技巧:指示器與覆蓋選項的應用

在數據合并中,高級選項如 indicator 和 overwrite 能讓合并更加靈活和清晰。下面我們來詳細講解!

1. 使用 indicator 參數標記合并來源

indicator 參數會在合并后的數據框中添加一列,標明每行數據來自哪個表。非常實用!看例子:

import pandas as pd

# 創建兩個示例數據框
df1 = pd.DataFrame({'key': ['A', 'B'], 'data1': [10, 20]})
df2 = pd.DataFrame({'key': ['B', 'C'], 'data2': [30, 40]})

# 合并并啟用 indicator
merged = pd.merge(df1, df2, on='key', how='outer', indicator=True)

print(merged)

輸出:

key  data1  data2      _merge
0    A   10.0    NaN   left_only
1    B   20.0   30.0        both
2    C    NaN   40.0  right_only

通過 _merge 列,我們可以清楚地知道每行數據的來源。

2. 使用 overwrite 參數控制值覆蓋

update 方法中的 overwrite 參數可以決定是否用新值替換舊值。例如:

# 創建兩個數據框
df_old = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df_new = pd.DataFrame({'A': [10, 20, 30], 'B': [None, None, None]}, index=[0, 1, 3])

# 使用 update 更新數據,且不覆蓋空值
df_old.update(df_new, overwrite=False)

print(df_old)

輸出:

A    B
0  10.0  4.0
1  20.0  5.0
2   3.0  6.0

這里,overwrite=False 確保了空值不會覆蓋原有值。

這些高級技巧能讓數據合并更精準、更高效!快試試吧!

九、實戰案例:多源銷售數據分析與整合

1. 銷售數據的初步加載與檢查

在實際工作中,我們經常需要處理來自不同來源的銷售數據。Pandas 是完成這項任務的理想工具!首先,我們需要加載數據并進行初步檢查。

import pandas as pd

# 加載兩個銷售數據表
sales1 = pd.read_csv("sales_data_1.csv")
sales2 = pd.read_csv("sales_data_2.csv")

# 查看數據結構
print(sales1.head())
print(sales2.head())

這段代碼會幫助你快速了解數據的基本情況。

2. 使用 concat 堆疊多源數據

如果多個銷售數據表具有相同的列結構,可以直接用 concat 將它們堆疊在一起。

combined_sales = pd.concat([sales1, sales2], ignore_index=True)
print(combined_sales.head())

ignore_index=True 參數會讓新數據表重新生成索引,避免混亂。

3. 基于鍵的合并 (merge)

當數據表之間存在關聯字段(如“產品ID”或“日期”)時,可以用 merge 函數將它們連接起來。

# 假設 sales1 和 product_details 都有 "product_id" 列
product_details = pd.read_csv("product_details.csv")
merged_data = pd.merge(sales1, product_details, on="product_id", how="left")
print(merged_data.head())

這里我們使用了 how="left",表示以左側數據表為主,保留所有左側記錄。

4. 索引對齊的合并 (join)

如果數據表是以索引為基礎的,可以使用 join 方法。

# 假設 sales1 的索引是日期,而 customer_info 的索引也是日期
customer_info = pd.read_csv("customer_info.csv", index_col="date")
joined_data = sales1.join(customer_info, how="inner")
print(joined_data.head())

how="inner" 表示只保留兩個表中都有的日期記錄。

5. 更新數據值 (update)

當我們需要更新部分數據時,update 是一個高效的選擇。

# 假設 updated_prices 包含最新的價格信息
updated_prices = pd.DataFrame({"product_id": [1, 2], "price": [100, 200]})
sales1.set_index("product_id", inplace=True)
sales1.update(updated_prices.set_index("product_id"))
print(sales1.reset_index())

通過設置索引,我們可以精準地更新對應記錄。

6. 處理缺失值的合并 (combine_first)

當兩個數據表存在部分重疊但有缺失值時,combine_first 可以派上用場。

# 假設 sales1 和 sales2 都有部分缺失值
filled_data = sales1.combine_first(sales2)
print(filled_data.head())

它會優先保留 sales1 的值,只有在缺失時才會從 sales2 中補充。

7. 指示器與覆蓋選項的應用

高級合并中,指示器和覆蓋選項可以幫助我們更好地控制合并過程。

# 添加指示器,查看每條記錄來自哪個表
merged_with_indicator = pd.merge(sales1, sales2, on="product_id", how="outer", indicator=True)
print(merged_with_indicator["_merge"].value_counts())

# 設置覆蓋選項,避免重復列名沖突
merged_no_duplicates = pd.merge(sales1, sales2, on="product_id", suffixes=("_sales1", "_sales2"))
print(merged_no_duplicates.head())

這些技巧讓合并結果更加清晰明了。

通過以上步驟,你可以輕松完成多源銷售數據的整合與分析!

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2021-07-13 10:02:52

Pandas函數Linux

2022-04-25 14:27:05

Pandas函數數據

2025-04-16 08:10:00

PandasPython數據分析

2023-11-23 06:51:50

PandasPython

2022-06-24 10:26:07

pandasExcelPython

2022-04-28 18:47:04

Pandas函數Python

2021-08-25 07:47:53

Pandas函數數據處理

2023-02-07 16:21:37

時間序列列數據集

2021-08-17 09:55:50

pandas 8indexPython

2020-10-29 06:02:44

PythonPandasExcel

2020-03-10 08:55:50

PandasNumPy函數

2020-07-06 14:00:01

Pandas連接參數

2020-12-14 14:16:34

Pandas數據預處理

2023-09-03 16:46:09

Pandas工具

2022-06-10 08:25:19

pandasoptionPython

2023-08-13 16:32:12

JavaScript

2024-10-18 17:03:16

Python地理空間數據處理

2022-08-27 15:03:43

Python損失函數算法

2020-06-04 10:49:53

Pandas字符串技巧

2023-08-11 11:19:52

數據集Merge函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩第一区 | 国产精品成人在线 | 精品国产欧美 | 日韩成人免费视频 | 国产成人一区二区三区电影 | 国产69精品久久久久777 | 免费观看成人性生生活片 | 激情久久av一区av二区av三区 | 日日想夜夜操 | 日本国产一区二区 | 亚洲黄色片免费观看 | 91免费在线| 欧洲色综合 | 国产日产欧产精品精品推荐蛮挑 | 日韩在线一区二区 | 欧美日韩综合一区 | 在线看片网站 | 久热免费在线 | 91在线精品秘密一区二区 | 日本三级电影免费 | caoporn国产精品免费公开 | 一区二区三区欧美 | 成人影院午夜 | 欧美成年网站 | 美女视频一区二区三区 | 在线婷婷| 日本久草| 国产色婷婷精品综合在线手机播放 | 精品一区二区不卡 | 亚洲一区二区中文字幕在线观看 | 一级高清 | 在线观看免费毛片 | 天天操天天干天天爽 | 久久精品91 | 日韩电影一区 | 成人午夜网站 | 九九九久久国产免费 | 污污的网站在线观看 | 九九导航 | 91在线精品播放 | 嫩草黄色影院 |