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

從基礎(chǔ)到高級(jí)詳解Python中的DataFrame數(shù)據(jù)轉(zhuǎn)換

 更新時(shí)間:2026年02月27日 08:37:16   作者:detayun  
本文系統(tǒng)介紹了DataFrame數(shù)據(jù)轉(zhuǎn)換的核心技術(shù),涵蓋從基礎(chǔ)到高級(jí)的操作方法,主要內(nèi)容包括數(shù)據(jù)清洗、規(guī)范化、特征工程等轉(zhuǎn)換目的,感興趣的小伙伴可以了解下

在數(shù)據(jù)分析和處理的世界里,DataFrame(數(shù)據(jù)框)是最常用的數(shù)據(jù)結(jié)構(gòu)之一。無論是使用Python的Pandas庫、R語言還是Spark等大數(shù)據(jù)框架,DataFrame都以其直觀的表格形式和強(qiáng)大的操作能力成為數(shù)據(jù)分析師的首選工具。然而,原始數(shù)據(jù)往往并不完美,需要進(jìn)行各種轉(zhuǎn)換才能滿足分析需求。本文將深入探討DataFrame數(shù)據(jù)轉(zhuǎn)換的核心技巧,幫助你掌握數(shù)據(jù)處理的魔法鑰匙。

一、為什么需要數(shù)據(jù)轉(zhuǎn)換

數(shù)據(jù)轉(zhuǎn)換是數(shù)據(jù)預(yù)處理的關(guān)鍵環(huán)節(jié),主要目的包括:

  • 數(shù)據(jù)清洗:處理缺失值、異常值和重復(fù)數(shù)據(jù)
  • 數(shù)據(jù)規(guī)范化:統(tǒng)一數(shù)據(jù)格式和單位
  • 特征工程:創(chuàng)建新特征或轉(zhuǎn)換現(xiàn)有特征以提高模型性能
  • 數(shù)據(jù)整合:合并多個(gè)數(shù)據(jù)源的數(shù)據(jù)
  • 數(shù)據(jù)重塑:改變數(shù)據(jù)結(jié)構(gòu)以適應(yīng)特定分析需求

二、基礎(chǔ)數(shù)據(jù)轉(zhuǎn)換操作

1. 選擇列(特征選擇)

import pandas as pd

# 創(chuàng)建示例DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c'],
    'C': [1.1, 2.2, 3.3]
})

# 選擇單列
col_a = df['A']  # 或 df.A

# 選擇多列
subset = df[['A', 'C']]

2. 過濾行(條件篩選)

# 篩選A列大于1的行
filtered = df[df['A'] > 1]

# 多條件篩選
filtered = df[(df['A'] > 1) & (df['C'] < 3)]

3. 添加新列

# 添加簡(jiǎn)單計(jì)算列
df['D'] = df['A'] * 2

# 添加基于條件的列
df['E'] = ['high' if x > 1 else 'low' for x in df['A']]

# 使用apply函數(shù)
df['F'] = df['B'].apply(lambda x: x.upper())

4. 處理缺失值

# 填充缺失值
df_filled = df.fillna(0)  # 用0填充
df_filled = df.fillna(df.mean())  # 用均值填充

# 刪除包含缺失值的行
df_dropped = df.dropna()

三、高級(jí)數(shù)據(jù)轉(zhuǎn)換技術(shù)

1. 數(shù)據(jù)類型轉(zhuǎn)換

# 字符串轉(zhuǎn)數(shù)值
df['A'] = pd.to_numeric(df['A'], errors='coerce')

# 字符串轉(zhuǎn)日期
df['date_col'] = pd.to_datetime(df['date_str'])

# 分類數(shù)據(jù)轉(zhuǎn)換
df['category_col'] = df['text_col'].astype('category')

2. 數(shù)據(jù)標(biāo)準(zhǔn)化/歸一化

from sklearn.preprocessing import MinMaxScaler, StandardScaler

# 歸一化 (0-1范圍)
scaler = MinMaxScaler()
df[['A', 'C']] = scaler.fit_transform(df[['A', 'C']])

# 標(biāo)準(zhǔn)化 (均值為0,方差為1)
scaler = StandardScaler()
df[['A', 'C']] = scaler.fit_transform(df[['A', 'C']])

3. 離散化/分箱

# 等寬分箱
df['A_binned'] = pd.cut(df['A'], bins=3, labels=['low', 'medium', 'high'])

# 等頻分箱
df['A_qcut'] = pd.qcut(df['A'], q=3, labels=['Q1', 'Q2', 'Q3'])

4. 編碼分類變量

# 標(biāo)簽編碼
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['B_encoded'] = le.fit_transform(df['B'])

# 獨(dú)熱編碼
df_encoded = pd.get_dummies(df, columns=['B'])

四、數(shù)據(jù)重塑與重構(gòu)

1. 透 視表(Pivot Table)

# 創(chuàng)建透 視表
pivot_df = df.pivot_table(index='A', columns='B', values='C', aggfunc='mean')

2. 熔化(Melt)

# 將寬格式轉(zhuǎn)換為長(zhǎng)格式
id_vars = ['A']  # 保持不變的列
value_vars = ['C']  # 要熔化的列
melted_df = pd.melt(df, id_vars=id_vars, value_vars=value_vars)

3. 堆疊/解堆疊

# 堆疊(將多列轉(zhuǎn)換為行)
stacked_df = df.set_index('A').stack().reset_index()

# 解堆疊(將行轉(zhuǎn)換為多列)
unstacked_df = stacked_df.set_index(['A', 'level_1']).unstack().reset_index()

五、合并與連接數(shù)據(jù)

1. 合并(Merge)

# 創(chuàng)建第二個(gè)DataFrame
df2 = pd.DataFrame({
    'A': [1, 2, 4],
    'G': ['x', 'y', 'z']
})

# 內(nèi)連接
merged_inner = pd.merge(df, df2, on='A', how='inner')

# 左連接
merged_left = pd.merge(df, df2, on='A', how='left')

2. 連接(Join)

# 基于索引的連接
left = df.set_index('A')
right = df2.set_index('A')
joined = left.join(right, how='inner')

3. 拼接(Concat)

# 垂直拼接
concatenated = pd.concat([df, df2], axis=0, ignore_index=True)

# 水平拼接
concatenated = pd.concat([df, df2], axis=1)

六、分組與聚合

# 基本分組聚合
grouped = df.groupby('B').agg({
    'A': 'sum',
    'C': ['mean', 'std']
})

# 多級(jí)分組
multi_grouped = df.groupby(['B', pd.cut(df['A'], bins=2)]).size()

七、時(shí)間序列處理

# 創(chuàng)建時(shí)間索引
df['date'] = pd.date_range('2023-01-01', periods=3)
df = df.set_index('date')

# 重采樣
monthly_data = df.resample('M').mean()

# 滾動(dòng)窗口計(jì)算
df['rolling_mean'] = df['C'].rolling(window=2).mean()

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

  • 使用向量化操作:避免循環(huán),盡量使用內(nèi)置的向量化方法
  • 選擇合適的數(shù)據(jù)類型:使用category類型存儲(chǔ)低基數(shù)分類變量
  • 使用chunksize處理大數(shù)據(jù):對(duì)于超出內(nèi)存的數(shù)據(jù),分塊讀取和處理
  • 使用Dask或Modin:對(duì)于超大型DataFrame,考慮使用分布式計(jì)算框架

九、實(shí)際應(yīng)用案例

假設(shè)我們有一個(gè)電商銷售數(shù)據(jù)集,需要進(jìn)行以下轉(zhuǎn)換:

# 加載數(shù)據(jù)
sales = pd.read_csv('sales_data.csv')

# 1. 轉(zhuǎn)換日期列
sales['order_date'] = pd.to_datetime(sales['order_date'])

# 2. 提取年月日信息
sales['year'] = sales['order_date'].dt.year
sales['month'] = sales['order_date'].dt.month
sales['day'] = sales['order_date'].dt.day

# 3. 創(chuàng)建價(jià)格區(qū)間列
bins = [0, 50, 100, 200, float('inf')]
labels = ['0-50', '51-100', '101-200', '200+']
sales['price_range'] = pd.cut(sales['price'], bins=bins, labels=labels)

# 4. 計(jì)算每個(gè)客戶的總消費(fèi)
customer_spending = sales.groupby('customer_id')['amount'].sum().reset_index()
customer_spending.rename(columns={'amount': 'total_spending'}, inplace=True)

# 5. 合并回原數(shù)據(jù)集
sales = pd.merge(sales, customer_spending, on='customer_id', how='left')

十、總結(jié)

DataFrame數(shù)據(jù)轉(zhuǎn)換是數(shù)據(jù)分析流程中不可或缺的環(huán)節(jié)。掌握這些技術(shù)不僅能幫你清理和準(zhǔn)備數(shù)據(jù),還能為后續(xù)的分析和建模工作奠定堅(jiān)實(shí)基礎(chǔ)。從簡(jiǎn)單的列選擇和行過濾,到復(fù)雜的分組聚合和透 視操作,每一種轉(zhuǎn)換技術(shù)都有其特定的應(yīng)用場(chǎng)景。

記住,數(shù)據(jù)轉(zhuǎn)換不僅僅是技術(shù)操作,更是理解數(shù)據(jù)、發(fā)現(xiàn)數(shù)據(jù)中模式和關(guān)系的過程。隨著實(shí)踐經(jīng)驗(yàn)的積累,你會(huì)逐漸形成自己的數(shù)據(jù)轉(zhuǎn)換套路,能夠根據(jù)不同的分析需求快速設(shè)計(jì)出高效的數(shù)據(jù)處理流程。

到此這篇關(guān)于從基礎(chǔ)到高級(jí)詳解Python中的DataFrame數(shù)據(jù)轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)DataFrame數(shù)據(jù)轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python安裝與基本數(shù)據(jù)類型教程詳解

    Python安裝與基本數(shù)據(jù)類型教程詳解

    這篇文章主要介紹了Python安裝與基本數(shù)據(jù)類型教程詳細(xì)講解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • 深入了解Python數(shù)據(jù)類型之列表

    深入了解Python數(shù)據(jù)類型之列表

    下面小編就為大家?guī)硪黄钊肓私釶ython數(shù)據(jù)類型之列表。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 詳解python的四種內(nèi)置數(shù)據(jù)結(jié)構(gòu)

    詳解python的四種內(nèi)置數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要介紹了python的四種內(nèi)置數(shù)據(jù)結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 使用Python刪除PDF中多余或空白頁面的實(shí)現(xiàn)步驟

    使用Python刪除PDF中多余或空白頁面的實(shí)現(xiàn)步驟

    在處理 PDF 文件時(shí),常常會(huì)遇到一些多余或空白的頁面,這些頁面不僅占據(jù)存儲(chǔ)空間,還會(huì)影響文檔的整潔性和可讀性,這篇文章將探討如何使用 Python刪除PDF中多余或空白的頁面,需要的朋友可以參考下
    2025-05-05
  • python?Pydub簡(jiǎn)單易用的音頻處理庫使用實(shí)例探索

    python?Pydub簡(jiǎn)單易用的音頻處理庫使用實(shí)例探索

    Pydub是一個(gè)簡(jiǎn)單易用的Python庫,它讓音頻處理變得像處理列表或字符串一樣簡(jiǎn)單,你可以用Pydub來剪輯、合并、調(diào)整音頻文件,以及執(zhí)行許多其他的音頻處理任務(wù),它支持多種音頻格式,包括常見的MP3、WAV和AAC
    2024-01-01
  • Anaconda使用IDLE的實(shí)現(xiàn)示例

    Anaconda使用IDLE的實(shí)現(xiàn)示例

    這篇文章主要介紹了Anaconda使用IDLE的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python實(shí)現(xiàn)Windows環(huán)境下自動(dòng)備份文件到遠(yuǎn)程目錄

    Python實(shí)現(xiàn)Windows環(huán)境下自動(dòng)備份文件到遠(yuǎn)程目錄

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)Windows環(huán)境下自動(dòng)備份文件到遠(yuǎn)程目錄,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-02-02
  • Python管理Windows服務(wù)小腳本

    Python管理Windows服務(wù)小腳本

    這篇文章主要為大家詳細(xì)介紹了Python管理Windows服務(wù)的小腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python使用bs4爬取boss直聘靜態(tài)頁面

    python使用bs4爬取boss直聘靜態(tài)頁面

    這篇文章主要介紹了python如何使用bs4爬取boss直聘靜態(tài)頁面,幫助大家更好的理解和學(xué)習(xí)爬蟲,感興趣的朋友可以了解下
    2020-10-10
  • python global和nonlocal用法解析

    python global和nonlocal用法解析

    這篇文章主要介紹了python global和nonlocal用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

鹤庆县| 板桥市| 辽阳市| 伽师县| 永寿县| 江陵县| 子洲县| 香港 | 苗栗市| 正阳县| 晴隆县| 武宣县| 府谷县| 塔城市| 江油市| 同心县| 石嘴山市| 墨江| 弥勒县| 漯河市| 东平县| 宣化县| 呈贡县| 睢宁县| 平安县| 健康| 西安市| 丹凤县| 龙岩市| 泰和县| 手游| 安新县| 株洲县| 富裕县| 曲水县| 溧阳市| 临漳县| 康定县| 阿拉善右旗| 山东省| 银川市|