最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python pandas多數(shù)據(jù)操作的完整指南

 更新時間:2025年04月30日 10:22:07   作者:aiweker  
在數(shù)據(jù)分析工作中,我們經常需要處理多個數(shù)據(jù)集并將它們以各種方式組合起來,Pandas 提供了多種強大的多數(shù)據(jù)操作方法,下面就跟隨小編一起了解一下吧

1. 引言

在數(shù)據(jù)分析工作中,我們經常需要處理多個數(shù)據(jù)集并將它們以各種方式組合起來。Pandas 提供了多種強大的多數(shù)據(jù)操作方法,包括合并(merge)、連接(join)、連接(concatenate)和比較(compare)等。本文將詳細介紹這些功能,并通過實際代碼示例展示如何使用它們。

2. 數(shù)據(jù)合并 (Merge)

2.1 基本合并操作

merge() 是 Pandas 中最常用的數(shù)據(jù)合并方法,類似于 SQL 中的 JOIN 操作。

import pandas as pd

# 創(chuàng)建兩個示例DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

# 內連接(inner join)
result = pd.merge(df1, df2, on='key')
print("Inner Join:\n", result)

輸出:

Inner Join:
   key  value_x  value_y
0   B        2        5
1   D        4        6

解釋:

  • on='key' 指定了合并的鍵
  • 默認是內連接(inner join),只保留兩個DataFrame中都有的鍵
  • 自動為相同列名添加后綴 _x 和 _y

2.2 不同類型的連接

# 左連接(left join)
result = pd.merge(df1, df2, on='key', how='left')
print("\nLeft Join:\n", result)

# 右連接(right join)
result = pd.merge(df1, df2, on='key', how='right')
print("\nRight Join:\n", result)

# 外連接(full outer join)
result = pd.merge(df1, df2, on='key', how='outer')
print("\nOuter Join:\n", result)

輸出:

Left Join:
   key  value_x  value_y
0   A        1      NaN
1   B        2      5.0
2   C        3      NaN
3   D        4      6.0

Right Join:
   key  value_x  value_y
0   B      2.0        5
1   D      4.0        6
2   E      NaN        7
3   F      NaN        8Outer Join:
   key  value_x  value_y


0   A      1.0      NaN
1   B      2.0      5.0
2   C      3.0      NaN
3   D      4.0      6.0
4   E      NaN      7.0
5   F      NaN      8.0

解釋:

  • how 參數(shù)控制連接類型:‘left’, ‘right’, ‘outer’, ‘inner’
  • 缺失值用 NaN 填充

2.3 多鍵合并

# 創(chuàng)建含有多個鍵的DataFrame
df3 = pd.DataFrame({'key1': ['A', 'B', 'C', 'D'],
                    'key2': ['W', 'X', 'Y', 'Z'],
                    'value': [1, 2, 3, 4]})

df4 = pd.DataFrame({'key1': ['B', 'D', 'E', 'F'],
                    'key2': ['X', 'Z', 'Y', 'W'],
                    'value': [5, 6, 7, 8]})

# 多鍵合并
result = pd.merge(df3, df4, on=['key1', 'key2'])
print("\nMulti-key Merge:\n", result)

輸出:

Multi-key Merge:
   key1 key2  value_x  value_y
0    B    X        2        5
1    D    Z        4        6

3. 數(shù)據(jù)連接 (Join)

3.1 DataFrame的join方法

join() 是 merge() 的便捷方法,默認按索引連接。

# 設置索引
df1.set_index('key', inplace=True)
df2.set_index('key', inplace=True)

# 使用join連接
result = df1.join(df2, lsuffix='_left', rsuffix='_right')
print("\nJoin on Index:\n", result)

輸出:

Join on Index:
      value_left  value_right
key                          
A           1.0          NaN
B           2.0          5.0
C           3.0          NaN
D           4.0          6.0

解釋:

  • 默認是左連接
  • 必須指定 lsuffix 和 rsuffix 來處理列名沖突
  • 按索引連接而不是列

3.2 按列連接

# 重置索引
df1.reset_index(inplace=True)
df2.reset_index(inplace=True)

# 按列連接
result = df1.set_index('key').join(df2.set_index('key'), how='outer', lsuffix='_left', rsuffix='_right')
print("\nJoin on Column:\n", result)

4. 數(shù)據(jù)連接 (Concatenate)

4.1 基本連接操作

concat() 用于沿特定軸連接多個DataFrame或Series。

# 創(chuàng)建示例DataFrame
df5 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']},
                   index=[0, 1, 2])

df6 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
                    'B': ['B3', 'B4', 'B5']},
                   index=[3, 4, 5])

# 垂直連接(沿axis=0)
result = pd.concat([df5, df6])
print("\nVertical Concatenation:\n", result)

# 水平連接(沿axis=1)
result = pd.concat([df5, df6], axis=1)
print("\nHorizontal Concatenation:\n", result)

輸出:

Vertical Concatenation:
     A   B
0  A0  B0
1  A1  B1
2  A2  B2
3  A3  B3
4  A4  B4
5  A5  B5

Horizontal Concatenation:
     A   B    A    B
0  A0  B0  NaN  NaN
1  A1  B1  NaN  NaN
2  A2  B2  NaN  NaN
3  NaN  NaN  A3  B3
4  NaN  NaN  A4  B4
5  NaN  NaN  A5  B5

4.2 連接時處理索引

# 忽略原有索引
result = pd.concat([df5, df6], ignore_index=True)
print("\nConcatenation with Ignored Index:\n", result)

# 添加多級索引
result = pd.concat([df5, df6], keys=['df5', 'df6'])
print("\nConcatenation with MultiIndex:\n", result)

5. 數(shù)據(jù)比較 (Compare)

5.1 比較兩個DataFrame

Pandas 提供了多種比較DataFrame的方法。

# 創(chuàng)建兩個相似但有差異的DataFrame
df7 = pd.DataFrame({'A': [1, 2, 3],
                    'B': [4, 5, 6]})

df8 = pd.DataFrame({'A': [1, 2, 4],
                    'B': [4, 6, 6]})

# 使用compare方法(需要Pandas 1.1.0+)
try:
    comparison = df7.compare(df8)
    print("\nDataFrame Comparison:\n", comparison)
except AttributeError:
    print("\ncompare() method requires pandas 1.1.0 or later")
    # 替代方法
    diff = df7 != df8
    print("\nDifference:\n", diff)

輸出(如果使用compare方法):

DataFrame Comparison:
     A       B      
  self other self other
2  3.0   4.0  NaN   NaN
1  NaN   NaN  5.0   6.0

5.2 比較并標記差異

# 標記所有差異
def highlight_diff(data, color='yellow'):
    attr = f'background-color: {color}'
    other = data.xs('other', axis='columns', level=-1)
    self = data.xs('self', axis='columns', level=-1)
    return pd.DataFrame(np.where(self != other, attr, ''),
                        index=data.index, columns=data.columns)

comparison.style.apply(highlight_diff, axis=None)

6. 其他實用合并技巧

6.1 合并時處理重復列名

# 合并時有重復列名
df9 = pd.DataFrame({'key': ['A', 'B', 'C'],
                    'value': [1, 2, 3]})

df10 = pd.DataFrame({'key': ['B', 'C', 'D'],
                     'value': [4, 5, 6]})

result = pd.merge(df9, df10, on='key', suffixes=('_left', '_right'))
print("\nMerge with Suffixes:\n", result)

6.2 合并時驗證關系

# 驗證合并關系(確保是一對一、一對多或多對一)
try:
    result = pd.merge(df9, df10, on='key', validate='one_to_one')
    print("\nValidated Merge:\n", result)
except Exception as e:
    print("\nValidation Error:", e)

7. 性能考慮

合并大型DataFrame

# 創(chuàng)建大型DataFrame
import numpy as np
n = 1000000
big_df1 = pd.DataFrame({'key': np.random.randint(0, 10000, size=n),
                        'value1': np.random.randn(n)})

big_df2 = pd.DataFrame({'key': np.random.randint(0, 10000, size=n),
                        'value2': np.random.randn(n)})

# 比較合并方法的性能
%timeit pd.merge(big_df1, big_df2, on='key')
%timeit big_df1.merge(big_df2, on='key')

8. 總結

1.merge() 是最靈活的數(shù)據(jù)合并方法,支持各種SQL風格的連接操作

  • 支持內連接、左連接、右連接和外連接
  • 可以處理多鍵合并和復雜的合并條件

2.join() 是基于索引的合并便捷方法

  • 默認按索引連接
  • 語法比merge()更簡潔但功能較少

3.concat() 用于簡單堆疊數(shù)據(jù)

  • 可以沿行(垂直)或列(水平)方向連接
  • 適合結構相同的數(shù)據(jù)集合并

4.compare() 用于比較兩個DataFrame的差異

  • 可以高亮顯示差異
  • 需要Pandas 1.1.0及以上版本

5.性能考慮

  • 對于大型數(shù)據(jù)集,merge()通常比join()更快
  • 合并前適當設置索引可以提高性能

選擇合適的多數(shù)據(jù)操作方法取決于:

  • 數(shù)據(jù)的大小和結構
  • 需要執(zhí)行的連接類型
  • 是否需要保留所有數(shù)據(jù)或只保留匹配項

掌握這些多數(shù)據(jù)操作技術將大大提高你在實際數(shù)據(jù)分析工作中的效率和靈活性。

以上就是python pandas多數(shù)據(jù)操作的完整指南的詳細內容,更多關于python pandas多數(shù)據(jù)操作的資料請關注腳本之家其它相關文章!

相關文章

  • python實現(xiàn)批量解析郵件并下載附件

    python實現(xiàn)批量解析郵件并下載附件

    這篇文章主要為大家詳細介紹了python實現(xiàn)批量解析郵件并下載附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python獲取網(wǎng)頁時報HTTP 403錯誤(禁止訪問)的解決辦法

    Python獲取網(wǎng)頁時報HTTP 403錯誤(禁止訪問)的解決辦法

    這篇文章主要為大家詳細介紹了Python使用庫獲取網(wǎng)頁時報HTTP 403錯誤(禁止訪問)的解決辦法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2025-12-12
  • TensorFlow2.1.0最新版本安裝詳細教程

    TensorFlow2.1.0最新版本安裝詳細教程

    TensorFlow是一款優(yōu)秀的深度學習框架,支持多種常見的操作系統(tǒng),對大家的學習或工作具有一定的參考借鑒價值,這篇文章主要介紹了TensorFlow2.1.0最新版本安裝詳細教程,需要的朋友可以參考下
    2020-04-04
  • Python代碼實現(xiàn)在PowerPoint中添加并控制音頻播放

    Python代碼實現(xiàn)在PowerPoint中添加并控制音頻播放

    本文將介紹如何使用 Spire.Presentation for Python 在 PowerPoint 演示文稿中插入音頻文件,控制音頻播放行為以及管理音頻屬性,感興趣的小伙伴可以了解下
    2026-05-05
  • Django 序列化的具體使用

    Django 序列化的具體使用

    django rest framework 中的序列化組件,本文主要介紹了Django 序列化的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用Python對零售商品進行數(shù)據(jù)分析

    使用Python對零售商品進行數(shù)據(jù)分析

    這篇文章主要為大家介紹了使用Python對零售商品進行數(shù)據(jù)分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 利用Python柵格化地圖(以成都市為例,含代碼)

    利用Python柵格化地圖(以成都市為例,含代碼)

    這篇文章主要給大家介紹了關于利用Python柵格化地圖的相關資料,
    Python中可以使用多種庫來進行柵格化地圖的操作,其中比較常用的有geopandas、rasterio等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 使用Python實現(xiàn)將中文語音翻譯成英語音頻功能

    使用Python實現(xiàn)將中文語音翻譯成英語音頻功能

    本文介紹了中文語音翻譯成英語音頻的實現(xiàn)方法,主要分為三個步驟:語音識別(將中文語音轉為文本)、文本翻譯(中文轉英文)和語音合成(英文文本轉音頻),文章詳細說明了注意事項,需要的朋友可以參考下
    2025-08-08
  • django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

    django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

    這篇文章主要介紹了django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python開發(fā)生產環(huán)境常用的4個工具(實用推薦)

    Python開發(fā)生產環(huán)境常用的4個工具(實用推薦)

    構建優(yōu)秀的軟件需要遵循特定的規(guī)則并執(zhí)行行業(yè)標準,如何在真實的生產環(huán)境開發(fā)中體現(xiàn)呢?在這篇文章中,我將向您展示我在Python項目中設置的4種工具,以簡化開發(fā)工作流程并執(zhí)行一些最佳實踐,這些工具幫助我提高了效率,節(jié)省了時間,希望你讀完也能有所收獲
    2024-01-01

最新評論

澎湖县| 康马县| 大丰市| 正镶白旗| 新营市| 图木舒克市| 无棣县| 玉环县| 武鸣县| 南陵县| 韶山市| 岗巴县| 平和县| 惠水县| 玉树县| 永州市| 夏河县| 天峻县| 榆中县| 礼泉县| 子长县| 明星| 车致| 吉木乃县| 科技| 巴青县| 湟源县| 五指山市| 哈巴河县| 嘉峪关市| 布拖县| 保康县| 泰州市| 沁源县| 安塞县| 永顺县| 桦甸市| 合水县| 香格里拉县| 咸阳市| 安远县|