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

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)換方法,并通過(guò)實(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ù)類(lèi)型處理

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

特點(diǎn):

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

示例:

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):

  • 逐行處理,可添加過(guò)濾/修改邏輯
  • 內(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萬(wàn)行×3列(整型+浮點(diǎn)型+字符串)

方法10萬(wàn)行耗時(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ù)類(lèi)型時(shí)更穩(wěn)定

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

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

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

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

# 強(qiáng)制轉(zhuǎn)換列類(lèi)型提升速度
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)存映射文件

# 處理超過(guò)內(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ī)。通過(guò)本文的5種方法對(duì)比和性能實(shí)測(cè),你可以根據(jù)數(shù)據(jù)規(guī)模、類(lèi)型需求和處理場(chǎng)景,選擇最優(yōu)轉(zhuǎn)換策略。記?。簺](méi)有最好的方法,只有最適合的方案!下次遇到轉(zhuǎn)換需求時(shí),不妨先問(wèn)問(wèn)自己:我需要速度、內(nèi)存還是靈活性?

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

相關(guān)文章

  • PyQt5實(shí)現(xiàn)登錄頁(yè)面

    PyQt5實(shí)現(xiàn)登錄頁(yè)面

    這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)登錄頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • python中l(wèi)ist,ndarray,Tensor間的轉(zhuǎn)換小結(jié)

    python中l(wèi)ist,ndarray,Tensor間的轉(zhuǎn)換小結(jié)

    數(shù)據(jù)類(lèi)型轉(zhuǎn)換是常見(jiàn)的功能,本文主要介紹了python中l(wèi)ist,ndarray,Tensor間的轉(zhuǎn)換小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • 詳解PyTorch nn.Embedding() 嵌入

    詳解PyTorch nn.Embedding() 嵌入

    在自然語(yǔ)言處理(NLP)中,將文本序列轉(zhuǎn)化為數(shù)字序列(tokenid)后,為了使模型能更好地理解這些數(shù)字背后的含義,引入了嵌入層(Embedding)通過(guò)簡(jiǎn)單的示例,可以看出Embedding的獲取過(guò)程及其在理解語(yǔ)言中的關(guān)鍵作用
    2024-11-11
  • python如何統(tǒng)計(jì)字符串中字符的個(gè)數(shù)

    python如何統(tǒng)計(jì)字符串中字符的個(gè)數(shù)

    這篇文章主要給大家介紹了關(guān)于python如何統(tǒng)計(jì)字符串中字符的個(gè)數(shù)的相關(guān)資料,如果在一個(gè)字符串中,需要統(tǒng)計(jì)某個(gè)字符或字符串出現(xiàn)的次數(shù),可以使用count方法,需要的朋友可以參考下
    2023-10-10
  • Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法

    Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法

    本文介紹基于Python語(yǔ)言,將一個(gè)Excel表格文件中的數(shù)據(jù)導(dǎo)入到Python中,并將其通過(guò)字典格式來(lái)存儲(chǔ)的方法,感興趣的朋友一起看看吧
    2023-01-01
  • 如何使用python自帶IDLE的幾種方法

    如何使用python自帶IDLE的幾種方法

    這篇文章主要介紹了如何使用python自帶IDLE的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python之cv2與圖像的載入、顯示和保存實(shí)例

    python之cv2與圖像的載入、顯示和保存實(shí)例

    今天小編就為大家分享一篇python之cv2與圖像的載入、顯示和保存實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Pandas?DataFrame數(shù)據(jù)修改值的方法

    Pandas?DataFrame數(shù)據(jù)修改值的方法

    本文主要介紹了Pandas?DataFrame修改值,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 如何利用python實(shí)現(xiàn)圖片批處理

    如何利用python實(shí)現(xiàn)圖片批處理

    這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)圖片批處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python中的字符串切片(截取字符串)的詳解

    Python中的字符串切片(截取字符串)的詳解

    這篇文章主要介紹了Python中的字符串切片(截取字符串)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

大兴区| 荔浦县| 东乡族自治县| 孝昌县| 内丘县| 鄂托克旗| 霍城县| 隆林| 上思县| 上蔡县| 西乌珠穆沁旗| 临颍县| 家居| 荥经县| 明水县| 龙岩市| 保定市| 冷水江市| 怀柔区| 白银市| 谢通门县| 娄底市| SHOW| 南阳市| 自治县| 浑源县| 清流县| 西安市| 固镇县| 和平县| 江安县| 富源县| 土默特左旗| 嘉黎县| 射阳县| 会泽县| 嘉峪关市| 深州市| 新昌县| 万山特区| 武宁县|