欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中DataFrame轉(zhuǎn)列表的最全指南

 更新時(shí)間:2025年03月21日 15:26:42   作者:傻啦嘿喲  
在Python數(shù)據(jù)分析中,Pandas的DataFrame是最常用的數(shù)據(jù)結(jié)構(gòu)之一,本文將為你詳解5種主流DataFrame轉(zhuǎn)換為列表的方法,大家可以根據(jù)需求進(jìn)行選擇

引言

在Python數(shù)據(jù)分析中,Pandas的DataFrame是最常用的數(shù)據(jù)結(jié)構(gòu)之一。然而,當(dāng)需要與只接受列表的API交互,或進(jìn)行某些算法輸入時(shí),將DataFrame轉(zhuǎn)換為列表就成為必要操作。本文將為你詳解5種主流轉(zhuǎn)換方法,并通過實(shí)測(cè)數(shù)據(jù)揭示它們的性能差異,助你輕松應(yīng)對(duì)各種轉(zhuǎn)換場(chǎng)景。

一、基礎(chǔ)轉(zhuǎn)換方法解析

1. tolist()直接轉(zhuǎn)換法

適用場(chǎng)景:?jiǎn)瘟袛?shù)據(jù)快速提取

語(yǔ)法:df['列名'].tolist()

特點(diǎn):

  • 直接調(diào)用Series對(duì)象的tolist()方法,代碼最簡(jiǎn)潔
  • 自動(dòng)處理缺失值(NaN會(huì)被保留在列表中)

示例:

import pandas as pd
df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
name_list = df['Name'].tolist()  # 輸出:['Alice', 'Bob']

2. values.tolist()矩陣轉(zhuǎn)換法

適用場(chǎng)景:全量數(shù)據(jù)按行轉(zhuǎn)換

語(yǔ)法:df.values.tolist()

特點(diǎn):

  • 先將DataFrame轉(zhuǎn)為NumPy矩陣,再轉(zhuǎn)換為嵌套列表
  • 每行數(shù)據(jù)成為一個(gè)子列表,保留原始數(shù)據(jù)結(jié)構(gòu)

示例:

matrix_list = df.values.tolist()  
# 輸出:[['Alice', 25], ['Bob', 30]]

3. to_numpy().tolist()增強(qiáng)轉(zhuǎn)換法

適用場(chǎng)景:混合數(shù)據(jù)類型處理

語(yǔ)法:df.to_numpy().tolist()

特點(diǎn):

  • pandas 0.24+版本支持,比values更靈活
  • 能更好處理整數(shù)/浮點(diǎn)數(shù)混合類型

示例:

numpy_list = df.to_numpy().tolist()  # 輸出同上

4. 列表推導(dǎo)式轉(zhuǎn)換法

適用場(chǎng)景:需要額外處理的轉(zhuǎn)換

語(yǔ)法:[list(row) for _, row in df.iterrows()]

特點(diǎn):

  • 逐行處理,可添加過濾/修改邏輯
  • 內(nèi)存占用更低,適合超大數(shù)據(jù)集

示例:

comprehension_list = [list(row) for _, row in df.iterrows()]

5. flatten()扁平化轉(zhuǎn)換法

適用場(chǎng)景:獲取所有值的一維列表

語(yǔ)法:df.values.flatten().tolist()

特點(diǎn):

  • 將二維數(shù)據(jù)轉(zhuǎn)換為一維列表
  • 丟失行列結(jié)構(gòu)信息

示例:

flat_list = df.values.flatten().tolist()  
# 輸出:['Alice', 25, 'Bob', 30]

二、性能實(shí)測(cè)對(duì)比

測(cè)試環(huán)境

系統(tǒng):Windows 11,Python 3.10,Pandas 1.5.3

數(shù)據(jù)規(guī)模:10萬行×3列(整型+浮點(diǎn)型+字符串)

方法10萬行耗時(shí)內(nèi)存占用適用性評(píng)分
tolist()0.012s★★★★★
values.tolist()0.008s★★★★☆
to_numpy().tolist()0.009s★★★★☆
列表推導(dǎo)式0.152s★★★☆☆
flatten()0.015s★★☆☆☆

結(jié)論:

速度王者:values.tolist()在速度(快20%)和內(nèi)存(比推導(dǎo)式低30%)上表現(xiàn)最優(yōu)

靈活之選:to_numpy().tolist()在處理混合數(shù)據(jù)類型時(shí)更穩(wěn)定

內(nèi)存敏感:超大數(shù)據(jù)集(>100萬行)建議使用列表推導(dǎo)式,可節(jié)省40%內(nèi)存

避免使用:flatten()僅適用于特殊場(chǎng)景,效率最低且丟失結(jié)構(gòu)信息

三、進(jìn)階技巧與優(yōu)化策略

1. 類型轉(zhuǎn)換優(yōu)化

# 強(qiáng)制轉(zhuǎn)換列類型提升速度
df['Age'] = df['Age'].astype('int32')

2. 分塊處理大數(shù)據(jù)

chunk_size = 10000
result = []
for chunk in pd.read_csv('large_data.csv', chunksize=chunk_size):
    result.extend(chunk.values.tolist())

3. 并行加速(使用Dask)

import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=4)
parallel_list = ddf.compute().values.tolist()

4. 內(nèi)存映射文件

# 處理超過內(nèi)存容量的大文件
with open('huge_data.csv', 'r') as f:
    df = pd.read_csv(f, iterator=True, chunksize=10000)
    # 分塊轉(zhuǎn)換...

四、典型應(yīng)用場(chǎng)景

機(jī)器學(xué)習(xí)輸入:使用values.tolist()將特征矩陣轉(zhuǎn)為算法接受的二維列表

API交互:用tolist()提取特定列數(shù)據(jù)發(fā)送HTTP請(qǐng)求

數(shù)據(jù)導(dǎo)出:to_dict('records')+json.dumps()生成JSON列表

可視化數(shù)據(jù):將坐標(biāo)列轉(zhuǎn)換為列表輸入Matplotlib

結(jié)語(yǔ)

DataFrame轉(zhuǎn)列表看似簡(jiǎn)單,實(shí)則暗藏玄機(jī)。通過本文的5種方法對(duì)比和性能實(shí)測(cè),你可以根據(jù)數(shù)據(jù)規(guī)模、類型需求和處理場(chǎng)景,選擇最優(yōu)轉(zhuǎn)換策略。記?。簺]有最好的方法,只有最適合的方案!下次遇到轉(zhuǎn)換需求時(shí),不妨先問問自己:我需要速度、內(nèi)存還是靈活性?

到此這篇關(guān)于Python中DataFrame轉(zhuǎn)列表的最全指南的文章就介紹到這了,更多相關(guān)Python DataFrame轉(zhuǎn)列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch中的modle.train,model.eval,with torch.no_grad解讀

    Pytorch中的modle.train,model.eval,with torch.no_grad解讀

    這篇文章主要介紹了Pytorch中的modle.train,model.eval,with torch.no_grad解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 在Python中過濾Windows文件名中的非法字符方法

    在Python中過濾Windows文件名中的非法字符方法

    今天小編就為大家分享一篇在Python中過濾Windows文件名中的非法字符方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python中sql解析庫(kù)sqlparse基本操作指南

    python中sql解析庫(kù)sqlparse基本操作指南

    sqlparse是用于Python的非驗(yàn)證SQL解析器,它提供了對(duì)SQL語(yǔ)句的解析,拆分和格式化的支持,這篇文章主要給大家介紹了關(guān)于python中sql解析庫(kù)sqlparse基本操作指南的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • pandas如何解決excel科學(xué)計(jì)數(shù)法問題

    pandas如何解決excel科學(xué)計(jì)數(shù)法問題

    這篇文章主要介紹了pandas如何解決excel科學(xué)計(jì)數(shù)法問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python+pyecharts繪制交互式可視化圖表

    Python+pyecharts繪制交互式可視化圖表

    本文我們來了解一個(gè)新的可視化模塊pyecharts,并且利用該模塊繪制讓數(shù)據(jù)變成優(yōu)美的交互式可視化圖表,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • 詳解Python設(shè)計(jì)模式之策略模式

    詳解Python設(shè)計(jì)模式之策略模式

    這篇文章主要介紹了Python設(shè)計(jì)模式之策略模式的相關(guān)知識(shí),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Python利用Canny算法檢測(cè)硬幣邊緣

    Python利用Canny算法檢測(cè)硬幣邊緣

    這篇文章主要介紹了如何使用Canny算法檢測(cè)出紙面上硬幣的邊緣。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-01-01
  • Pandas檢查dataFrame中的NaN實(shí)現(xiàn)

    Pandas檢查dataFrame中的NaN實(shí)現(xiàn)

    本文主要介紹了Pandas檢查dataFrame中的NaN實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python 文件與目錄操作

    python 文件與目錄操作

    可以使用簡(jiǎn)單的方法匹配某個(gè)目錄下的所有子目錄或文件,用法也很簡(jiǎn)單。
    2008-12-12
  • python二進(jìn)制串轉(zhuǎn)字符串的方法詳解

    python二進(jìn)制串轉(zhuǎn)字符串的方法詳解

    這篇文章主要介紹了python二進(jìn)制串轉(zhuǎn)字符串的方法詳解,使用json,可以自動(dòng)檢測(cè)編碼,但需要注意的是,它返回的是python對(duì)象,不一定是字符串,具體是什么對(duì)象要視原始內(nèi)容而定,需要的朋友可以參考下
    2023-11-11

最新評(píng)論