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

Pandas高階用法之數(shù)據(jù)清洗與高效分析的完整指南

 更新時間:2025年04月24日 08:50:41   作者:Python_trys  
在數(shù)據(jù)科學和數(shù)據(jù)分析領域,Pandas無疑是Python生態(tài)系統(tǒng)中最強大的數(shù)據(jù)處理庫之一,本文我們將深入探討Pandas的高階用法,主要是數(shù)據(jù)清洗與高效分析,需要的小伙伴可以參考下

一、前言

在數(shù)據(jù)科學和數(shù)據(jù)分析領域,Pandas無疑是Python生態(tài)系統(tǒng)中最強大的數(shù)據(jù)處理庫之一。本文將深入探討Pandas的高階用法,重點介紹數(shù)據(jù)清洗和高效分析的技巧,幫助您從Pandas初級用戶成長為高級數(shù)據(jù)分析師。

二、Pandas核心數(shù)據(jù)結構回顧

Series與DataFrame

import pandas as pd

# 創(chuàng)建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])

# 創(chuàng)建DataFrame
df = pd.DataFrame({
    'A': 1.,
    'B': pd.Timestamp('20230101'),
    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
    'D': np.array([3] * 4, dtype='int32'),
    'E': pd.Categorical(["test", "train", "test", "train"]),
    'F': 'foo'
})

三、高級數(shù)據(jù)清洗技巧

3.1 缺失值處理

3.1.1 檢測缺失值

# 檢測缺失值
df.isna().sum()

# 可視化缺失值
import missingno as msno
msno.matrix(df)

3.1.2 處理缺失值

# 刪除缺失值
df.dropna(how='any')  # 任何列有缺失就刪除
df.dropna(subset=['col1', 'col2'])  # 指定列有缺失才刪除

# 填充缺失值
df.fillna(value={'col1': 0, 'col2': 'unknown'})  # 不同列不同填充值
df.fillna(method='ffill')  # 前向填充
df.fillna(method='bfill', limit=2)  # 后向填充,最多填充2個

# 插值法填充
df.interpolate(method='linear')  # 線性插值
df.interpolate(method='time')  # 時間序列插值

3.2 異常值處理

3.2.1 檢測異常值

# 使用描述性統(tǒng)計
df.describe()

# 使用Z-score方法
from scipy import stats
z_scores = stats.zscore(df['numeric_col'])
abs_z_scores = np.abs(z_scores)
filtered_entries = (abs_z_scores < 3)
df_clean = df[filtered_entries]

# 使用IQR方法
Q1 = df['numeric_col'].quantile(0.25)
Q3 = df['numeric_col'].quantile(0.75)
IQR = Q3 - Q1
df_clean = df[~((df['numeric_col'] < (Q1 - 1.5 * IQR)) | (df['numeric_col'] > (Q3 + 1.5 * IQR)))]

3.2.2 處理異常值

# 替換為邊界值
df['numeric_col'] = np.where(df['numeric_col'] > upper_bound, upper_bound, 
                            np.where(df['numeric_col'] < lower_bound, lower_bound, df['numeric_col']))

# 使用分箱處理
df['binned'] = pd.cut(df['numeric_col'], bins=5, labels=False)

3.3 數(shù)據(jù)轉換

3.3.1 標準化與歸一化

# Min-Max歸一化
df['normalized'] = (df['col'] - df['col'].min()) / (df['col'].max() - df['col'].min())

# Z-score標準化
df['standardized'] = (df['col'] - df['col'].mean()) / df['col'].std()

3.3.2 類別型數(shù)據(jù)編碼

# One-Hot編碼
pd.get_dummies(df, columns=['categorical_col'])

# Label編碼
from sklearn.preprocessing import LabelEncoder
df['encoded'] = LabelEncoder().fit_transform(df['categorical_col'])

四、高效數(shù)據(jù)分析技巧

4.1 高性能數(shù)據(jù)處理

4.1.1 使用eval()和query()

# eval方法加速計算
df.eval('new_col = col1 + col2', inplace=True)

# query方法高效過濾
df.query('col1 > col2 & col3 == "value"')

4.1.2 使用category類型節(jié)省內存

# 轉換category類型
df['category_col'] = df['category_col'].astype('category')

# 查看內存使用
df.memory_usage(deep=True)

4.2 高級分組操作

4.2.1 agg聚合函數(shù)

# 多函數(shù)聚合
df.groupby('group_col').agg({
    'col1': ['mean', 'max', 'min'],
    'col2': lambda x: np.percentile(x, 95)
})

# 命名聚合(Pandas 0.25+)
df.groupby('group_col').agg(
    mean_col1=('col1', 'mean'),
    max_col2=('col2', 'max'),
    custom=('col3', lambda x: x.std() / x.mean())
)

4.2.2 transform和apply

# transform保持原DataFrame形狀
df['group_mean'] = df.groupby('group_col')['value_col'].transform('mean')

# apply靈活應用函數(shù)
def custom_func(group):
    return (group - group.mean()) / group.std()

df.groupby('group_col').apply(custom_func)

4.3 時間序列分析

4.3.1 重采樣

# 降采樣
df.resample('M').mean()  # 按月平均

# 升采樣
df.resample('D').ffill()  # 按天填充

# 自定義重采樣
def custom_resampler(array_like):
    return np.sum(array_like) * 1.5

df.resample('W').apply(custom_resampler)

4.3.2 滾動窗口計算

# 簡單滾動平均
df.rolling(window=7).mean()

# 擴展窗口
df.expanding().sum()

# 自定義滾動函數(shù)
def custom_roll(x):
    return x[-1] * 2 + x[0]

df.rolling(window=3).apply(custom_roll)

五、數(shù)據(jù)可視化集成

5.1 直接繪圖

# 線圖
df.plot.line(x='date_col', y=['col1', 'col2'], figsize=(12, 6))

# 箱線圖
df.plot.box(column=['col1', 'col2', 'col3'])

# 六邊形箱圖
df.plot.hexbin(x='col1', y='col2', gridsize=20)

5.2 高級可視化技巧

# 使用seaborn集成
import seaborn as sns
sns.pairplot(df, hue='category_col')

# 使用plotly交互式可視化
import plotly.express as px
fig = px.scatter_matrix(df, dimensions=['col1', 'col2', 'col3'], color='category_col')
fig.show()

六、性能優(yōu)化技巧

6.1 使用高效數(shù)據(jù)類型

# 優(yōu)化數(shù)值類型
df['int_col'] = pd.to_numeric(df['int_col'], downcast='integer')
df['float_col'] = pd.to_numeric(df['float_col'], downcast='float')

# 使用布爾類型
df['bool_col'] = df['bool_col'].astype('bool')

6.2 避免鏈式賦值

# 不好的做法 - 鏈式賦值
df[df['col'] > 100]['new_col'] = 1  # 可能不會生效

# 好的做法 - 使用loc
df.loc[df['col'] > 100, 'new_col'] = 1

6.3 使用并行處理

# 使用swifter加速apply
import swifter
df['new_col'] = df['col'].swifter.apply(lambda x: x*2)

# 使用dask處理大數(shù)據(jù)
import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=4)
result = ddf.groupby('group_col').mean().compute()

七、實戰(zhàn)案例:電商數(shù)據(jù)分析

7.1 數(shù)據(jù)準備

# 讀取數(shù)據(jù)
orders = pd.read_csv('orders.csv', parse_dates=['order_date'])
products = pd.read_csv('products.csv')
customers = pd.read_csv('customers.csv')

# 合并數(shù)據(jù)
merged = pd.merge(orders, products, on='product_id')
merged = pd.merge(merged, customers, on='customer_id')

7.2 RFM分析

# 計算RFM指標
now = pd.to_datetime('today')
rfm = merged.groupby('customer_id').agg({
    'order_date': lambda x: (now - x.max()).days,  # Recency
    'order_id': 'count',  # Frequency
    'total_price': 'sum'  # Monetary
}).rename(columns={
    'order_date': 'recency',
    'order_id': 'frequency',
    'total_price': 'monetary'
})

# RFM評分
rfm['r_score'] = pd.qcut(rfm['recency'], q=5, labels=[5,4,3,2,1])
rfm['f_score'] = pd.qcut(rfm['frequency'], q=5, labels=[1,2,3,4,5])
rfm['m_score'] = pd.qcut(rfm['monetary'], q=5, labels=[1,2,3,4,5])
rfm['rfm_score'] = rfm['r_score'].astype(str) + rfm['f_score'].astype(str) + rfm['m_score'].astype(str)

# 客戶分群
segment_map = {
    r'[4-5][4-5][4-5]': '高價值客戶',
    r'[3-5][3-5][3-5]': '潛力客戶',
    r'[1-2][1-2][1-2]': '流失風險客戶',
    r'.*': '一般客戶'
}
rfm['segment'] = rfm['rfm_score'].replace(segment_map, regex=True)

八、總結

本文全面介紹了Pandas在數(shù)據(jù)清洗和高效分析方面的高階用法,包括:

高級數(shù)據(jù)清洗技巧:缺失值處理、異常值檢測與處理、數(shù)據(jù)轉換

高效數(shù)據(jù)分析方法:高性能數(shù)據(jù)處理、高級分組操作、時間序列分析

數(shù)據(jù)可視化集成:直接繪圖方法和高級可視化技巧

性能優(yōu)化技巧:數(shù)據(jù)類型優(yōu)化、避免鏈式賦值、并行處理

實戰(zhàn)案例:電商數(shù)據(jù)分析中的RFM模型應用

掌握這些高階技巧后,您將能夠更加高效地處理和分析各種復雜的數(shù)據(jù)集,為數(shù)據(jù)驅動的決策提供有力支持。記住,熟練使用Pandas的關鍵在于不斷實踐和探索其豐富的功能。

到此這篇關于Pandas高階用法之數(shù)據(jù)清洗與高效分析的完整指南的文章就介紹到這了,更多相關Pandas數(shù)據(jù)清洗與高效分析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Python3之數(shù)據(jù)指紋MD5校驗與對比

    詳解Python3之數(shù)據(jù)指紋MD5校驗與對比

    這篇文章主要介紹了Python3之數(shù)據(jù)指紋MD5校驗與對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • Numpy 改變數(shù)組維度的幾種方法小結

    Numpy 改變數(shù)組維度的幾種方法小結

    今天小編就為大家分享一篇Numpy 改變數(shù)組維度的幾種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Python初學者常見錯誤詳解

    Python初學者常見錯誤詳解

    這篇文章主要介紹了Python初學者常見錯誤詳解,即便是有編程經(jīng)驗的程序員,也容易按照固有的思維和語法格式來寫 Python 代碼,需要的朋友可以參考下
    2019-07-07
  • python實現(xiàn)簡單socket通信的方法

    python實現(xiàn)簡單socket通信的方法

    這篇文章主要介紹了python實現(xiàn)簡單socket通信的方法,結合實例形式分析了socket通信服務端與客戶端的具體實現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • Python利用request庫實現(xiàn)翻譯接口

    Python利用request庫實現(xiàn)翻譯接口

    這篇文章主要為大家詳細介紹了Python如何利用request庫打造自己的翻譯接口,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-04-04
  • python uv常用命令使用及說明

    python uv常用命令使用及說明

    uv是一個快速的現(xiàn)代構建系統(tǒng)和包管理器,支持虛擬環(huán)境管理、包安裝與卸載、項目構建和發(fā)布等功能,旨在比傳統(tǒng)工具更快,更多詳情請參考官方文檔
    2026-01-01
  • python uvloop事件循環(huán)庫使用功能示例探究

    python uvloop事件循環(huán)庫使用功能示例探究

    這篇文章主要為大家介紹了python uvloop事件循環(huán)庫使用功能示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • python使用openpyxl實現(xiàn)批量調整字體和樣式

    python使用openpyxl實現(xiàn)批量調整字體和樣式

    這篇文章主要介紹了python使用openpyxl實現(xiàn)批量調整字體和樣式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Python基于Streamlit實現(xiàn)音頻處理示例詳解

    Python基于Streamlit實現(xiàn)音頻處理示例詳解

    這篇文章主要為大家詳細介紹了如何基于Streamlit實現(xiàn)的音頻處理,包含錄音,語音轉文本,文件下載和進度顯示功能,有需要的小伙伴可以參考一下
    2025-03-03
  • python人工智能tensorflow常用激活函數(shù)Activation?Functions

    python人工智能tensorflow常用激活函數(shù)Activation?Functions

    這篇文章主要為大家介紹了python人工智能tensorflow常用激活函數(shù)Activation?Functions的匯總介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論

郎溪县| 金湖县| 衡南县| 宜城市| 临高县| 长武县| 阳泉市| 潜江市| 醴陵市| 嵊泗县| 盱眙县| 任丘市| 罗甸县| 尤溪县| 广德县| 鄯善县| 扬州市| 德惠市| 邢台县| 惠州市| 南阳市| 延庆县| 年辖:市辖区| 苍山县| 清涧县| 渝中区| 鸡泽县| 隆昌县| 临海市| 远安县| 泾川县| 婺源县| 嘉黎县| 图片| 霍邱县| 澄迈县| 浑源县| 屯留县| 兴和县| 沙洋县| 抚宁县|