Pandas高級功能

在數據科學與機器學習的廣闊天地中,Pandas宛如一把瑞士軍刀,以其強大的數據處理和分析能力,成為眾多數據從業者的得力助手。從基礎的數據讀寫、清洗到復雜的數據聚合、轉換,Pandas的功能豐富多樣。本文將深入探索Pandas的一些高級功能,幫助大家更高效地處理和分析數據。

一、高級數據篩選與過濾

1. 使用query方法

query方法提供了一種更直觀、更簡潔的方式來篩選數據。它允許我們使用類似SQL的語法來查詢DataFrame。

import pandas as pd# 創建一個示例DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'salary': [50000, 60000, 70000, 80000]
}
df = pd.DataFrame(data)# 使用query方法篩選年齡大于30的員工
result = df.query('age > 30')
print(result)

2. 多條件篩選

可以結合邏輯運算符(如&|)進行多條件篩選。

# 篩選年齡大于30且工資大于65000的員工
result = df[(df['age'] > 30) & (df['salary'] > 65000)]
print(result)

二、數據透視表(Pivot Table)

數據透視表是Pandas中非常強大的功能,它可以對數據進行匯總和分析,類似于Excel中的數據透視表。

# 創建一個包含銷售數據的DataFrame
sales_data = {'date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],'product': ['A', 'B', 'A', 'B'],'sales': [100, 150, 200, 250],'region': ['North', 'South', 'North', 'South']
}
df_sales = pd.DataFrame(sales_data)# 創建數據透視表,按產品和區域匯總銷售額
pivot_table = pd.pivot_table(df_sales, values='sales', index=['product'], columns=['region'], aggfunc='sum')
print(pivot_table)

三、多重索引(MultiIndex)

多重索引允許我們在DataFrame中使用多個索引級別,從而更靈活地組織和訪問數據。

1. 創建多重索引

import numpy as np# 創建多重索引
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))# 創建包含多重索引的DataFrame
df_multi = pd.DataFrame({'values': np.random.randn(4)}, index=index)
print(df_multi)

2. 訪問多重索引數據

可以使用locxs方法來訪問多重索引的數據。

# 使用loc訪問數據
print(df_multi.loc[('A', 1)])# 使用xs訪問數據
print(df_multi.xs(1, level='number'))

四、數據分組與聚合(GroupBy)

groupby方法是Pandas中用于數據分組和聚合的核心功能。它可以根據一個或多個列對數據進行分組,然后對每個分組應用聚合函數。

# 創建一個示例DataFrame
data = {'department': ['HR', 'IT', 'HR', 'IT', 'Finance'],'employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'salary': [50000, 60000, 55000, 65000, 70000]
}
df_group = pd.DataFrame(data)# 按部門分組并計算平均工資
grouped = df_group.groupby('department')['salary'].mean()
print(grouped)

1. 多列分組

# 按部門和員工分組并計算工資總和
grouped_multi = df_group.groupby(['department', 'employee'])['salary'].sum()
print(grouped_multi)

2. 自定義聚合函數

可以使用agg方法應用自定義的聚合函數。

# 定義自定義聚合函數
def custom_agg(x):return x.max() - x.min()# 應用自定義聚合函數
grouped_custom = df_group.groupby('department')['salary'].agg(custom_agg)
print(grouped_custom)

五、時間序列分析

Pandas提供了強大的時間序列處理功能,使得處理日期和時間相關的數據變得非常方便。

1. 創建時間序列

# 創建日期范圍
date_range = pd.date_range(start='2023-01-01', periods=5, freq='D')# 創建時間序列DataFrame
ts_data = {'value': [1, 2, 3, 4, 5]
}
df_ts = pd.DataFrame(ts_data, index=date_range)
print(df_ts)

2. 時間序列重采樣

可以使用resample方法對時間序列進行重采樣,例如按周、月等頻率進行聚合。

# 按周重采樣并計算平均值
resampled = df_ts.resample('W').mean()
print(resampled)

六、數據合并與連接

在實際應用中,經常需要將多個DataFrame進行合并或連接。Pandas提供了mergeconcatjoin等方法來實現這些操作。

1. 使用merge方法

merge方法類似于SQL中的JOIN操作,可以根據一個或多個鍵將兩個DataFrame進行合并。

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

2. 使用concat方法

concat方法可以將多個DataFrame沿著指定的軸進行連接。

# 創建兩個示例DataFrame
df3 = pd.DataFrame({'value3': [7, 8, 9]
}, index=[0, 1, 2])df4 = pd.DataFrame({'value4': [10, 11, 12]
}, index=[1, 2, 3])# 沿著行方向連接兩個DataFrame
concatenated = pd.concat([df3, df4], axis=0)
print(concatenated)

七、總結

Pandas的高級功能為我們提供了強大而靈活的數據處理和分析工具。通過掌握這些高級功能,我們可以更高效地處理復雜的數據集,挖掘數據背后的價值。無論是數據清洗、轉換,還是數據分析和可視化,Pandas都能成為我們的得力助手。希望本文能夠幫助大家更好地理解和應用Pandas的高級功能,在數據科學的道路上取得更大的進步。

在實際應用中,不斷實踐和探索Pandas的各種功能是非常重要的。同時,結合其他數據科學工具和庫,如NumPy、Matplotlib、Scikit-learn等,可以構建更完整的數據分析和機器學習流程。讓我們一起在數據的海洋中遨游,發現更多的知識和洞察。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79735.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

英語學習4.15

amateur amateur 🔤 讀音:/?m?t?r/ 或 /?m?t??r/ ? 詞性:名詞 / 形容詞 ? 中文釋義: (名詞)業余愛好者 ??👉 指不是以此為職業的人,通常出于興趣而從事某項活動。 ??…

Java開發軟件

Main.java // 主類,用于測試學生管理系統 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加學生 sms.addStudent(new Student(1, "Alice", 20)…

多Agent框架及協作機制詳解

文章目錄 一、多智能體系統介紹1.1 多智能體系統定義1.2 多智能體協作1.3 協作類型1.4 協作策略1.5 通信結構1.6 協調與編排 1.3 多智能體與單智能體對比1.4 應用場景 二、多Agent開發框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能體協作方式3.1 MetaGPT:SOP驅…

AI Agent破局:智能化與生態系統標準化的顛覆性融合!

Hi!好久不見 云邊有個稻草人-個人主頁 熱門文章_云邊有個稻草人的博客-本篇文章所屬專欄~ 目錄 一、引言 二、AI Agent的基本概念 2.1 定義與分類 2.2 AI Agent的工作原理 2.3 示例代碼:AI Agent的基本實現 三、AI Agent在企業數字化轉型中的應用 …

在阿里云和樹莓派上編寫一個守護進程程序

目錄 一、阿里云郵件守護進程 1. 安裝必要庫 2. 創建郵件發送腳本 mail_daemon.py 3. 設置后臺運行 二、樹莓派串口守護進程 1. 啟用樹莓派串口 2. 安裝依賴庫 3. 創建串口輸出腳本 serial_daemon.py 4. 設置開機自啟 5. 使用串口助手接收 一、阿里云郵件守護進程 1.…

Python----深度學習(全連接與鏈式求導法則)

一、機器學習和深度學習的區別 機器學習:利用計算機、概率論、統計學等知識,輸入數據,讓計算機學會新知 識。機器學習的過程,就是訓練數據去優化目標函數。 深度學習:是一種特殊的機器學習,具有強大的能力和…

Python爬蟲實戰:獲取網易新聞數據

一、引言 隨著互聯網的飛速發展,網絡上蘊含著海量的信息資源。新聞數據作為其中的重要組成部分,對于輿情分析、市場研究、信息傳播等多個領域具有重要價值。網易新聞作為國內知名的新聞平臺,擁有豐富多樣的新聞內容。使用 Python 的 Scrapy 框架進行網易新聞數據的爬取,可…

matlab論文圖一的地形區域圖的球形展示Version_1

matlab論文圖一的地形區域圖的球形展示Version_1 圖片 此圖來源于: ![Jieqiong Zhou, Ziyin Wu, Dineng Zhao, Weibing Guan, Chao Zhu, Burg Flemming, Giant sand waves on the Taiwan Banks, southern Taiwan Strait: Distribution, morphometric relationship…

藍橋杯:連連看

本題大意要我們在一個給定的nxm的矩形數組中找出符合條件的格子 條件如下: 1.數值相同 2.兩個橫坐標和縱坐標的差值相等(由此可得是一個對角線上的格子) 那么根據以上條件我們可以用HashMap來解決這個問題,統計對角線上數值相同…

PHP中的ReflectionClass講解【詳細版】

快餐: ReflectionClass精簡版 在PHP中,ReflectionClass是一個功能強大的反射類,它就像是一個類的“X光透視鏡”,能讓我們在程序運行時深入了解類的內部結構和各種細節。 一、反射類的基本概念和重要性 反射是指在程序運行期間獲…

微信小程序中,將搜索組件獲取的值傳遞給父頁面(如 index 頁面)可以通過 自定義事件 或 頁面引用 實現

將搜索組件獲取的值傳遞給父頁面(如 index 頁面)可以通過 自定義事件 或 頁面引用 實現 方法 1:自定義事件(推薦) 步驟 1:搜索組件內觸發事件 在搜索組件的 JS 中,當獲取到搜索值時&#xff0c…

Django 實現服務器主動給客戶端發送消息的幾種常見方式及其區別

Django Channels 原理 :Django Channels 是 Django 的一個擴展,它通過使用 WebSockets 等協議來處理長連接,使服務器能夠與客戶端建立持久連接,從而實現雙向通信。一旦連接建立,服務器可以隨時主動向客戶端發送消息。…

PHP最新好看UI個人引導頁網頁源碼

PHP最新好看UI個人引導頁網頁源碼 采用PHP、HTML、CSS及JavaScript等前端技術,構建了一個既美觀又實用的個人主頁解決方案。 源碼設計初衷在于提供一個高度可定制、跨平臺兼容的模板,讓用戶無需深厚的編程基礎,即可快速搭建出專業且富有創意的…

HarmonyOS學習 實驗九:@State和@Prop裝飾器的使用方法

HarmonyOS應用開發:父子組件狀態管理實驗報告 引言 在HarmonyOS應用開發領域,組件之間的狀態管理是一個至關重要的概念。通過有效的狀態管理,我們可以確保應用的數據流動清晰、可預測,從而提升應用的穩定性和可維護性。本次實驗…

12.第二階段x64游戲實戰-遠程調試

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 本次游戲沒法給 內容參考于:微塵網絡安全 上一個內容:11.第二階段x64游戲實戰-框架代碼細節優化 本次寫的內容是關于調試、排錯相關的…

c++基礎三

1.繼承 繼承表示,子類可以獲取父類的屬性和方法,然后可以寫子類獨有的屬性和方法,或者修改父類的方法。類可以繼承父類的公共成員(public),但不能繼承私有成員(private),私有成員只能在父類內部訪問。 1.1 案例一單繼承 #include <iostream>using namespace …

JSON學習筆記

文章目錄 1. JSON是什么2. JSON的特點與結構3. JSON的使用4. JSON文件讀取 1. JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript對象表示法&#xff09;是一種輕量級的數據交換格式&#xff0c;易于人閱讀和編寫&#xff0c;同時也易于機器解析和…

王牌學院,25西電通信工程學院(考研錄取情況)

1、通信工程學院各個方向 2、通信工程學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、信息與通信工程25年相較于24年上升5分、軍隊指揮學25年相較于24年上升30分 2、新一代電子信息技術&#xff08;專碩&#xff09;25年相較于24年下降25分、通信工程&…

WPF依賴注入IHostApplicationLifetime關閉程序

WPF依賴注入IHostApplicationLifetime關閉程序 使用Application.Current.Shutdown();退出會報異常 應該使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…

Jenkins 代理自動化-dotnet程序

兩種方式 容器部署 本地部署 容器部署 可自動實現&#xff0c;服務器重啟&#xff0c;容器自動運行 主要將dockerfile 寫好 本地部署 1.服務器重啟自動運行代理 參考下面的鏈接&#xff0c;只是把程序換成 java程序&#xff0c;提前確認好需要的jdk版本 Ubuntu20.04 設置開機…