[Pandas] 数据迭代

人工智能39

df

[Pandas] 数据迭代

1.迭代Series

Series本身是一个可迭代的对象,可直接对Series使用for语句来遍历它的值

import pandas as pd

df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])
# 迭代指定的列
for i in df.name:
    print(i)

# 效果和上面相同
# df.name.values返回array结构数据可用于迭代
for i in df.name.values:
    print(i)

# 输出结果:
# liver
# Arry
# Ack
# Eorge
# Oah

迭代索引和指定的多列,使用python内置的zip函数将其打包为可迭代的zip对象

import pandas as pd

df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

# 迭代索引和指定的两列
for i, n, q in zip(df.index, df.name, df.Q1):
    print(i, n, q)

# 输出结果:
# 0 liver 89
# 1 Arry 36
# 2 Ack 57
# 3 Eorge 93
# 4 Oah 65

2. df.iterrows()

df.iterrows()生成一个可迭代对象,将DataFrame行作为(索引,行数据)组成的Series数据对进行迭代。在for语句中需要两个变量来承接数据:一个为索引变量,即使索引在迭代中不会使用(这种情况可用useless作为变量名);另一个为数据变量,读取具体列时,可以使用字典的方法和对象属性的方法

df.iterrows()是最常用、最方便的按行迭代方法

import pandas as pd
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])
# 迭代,使用name,Q1数据
for index, row in df.iterrows():
    print(index, row['name'], row.Q1)

# 输出结果:
# 0 liver 89
# 1 Arry 36
# 2 Ack 57
# 3 Eorge 93
# 4 Oah 65

3 df.itertuples()

df.itertuples()生成一个namedtuples类型数据,name默认名为Pandas,可以在参数中指定

与df.iterrows()相比,df.itertuples()运行速度会更快一些,推荐在数据量庞大的情况下优先使用

import pandas as pd

df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

for row in df.itertuples():
    print(row)

# 输出结果:
# Pandas(Index=0, name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Pandas(Index=1, name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Pandas(Index=2, name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Pandas(Index=3, name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Pandas(Index=4, name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)

以下是一些使用方法示例:

import pandas as pd

df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

# 不包含索引数据
for row in df.itertuples(index=False):
    print(row)

# Pandas(name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Pandas(name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Pandas(name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Pandas(name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Pandas(name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)

# 自定义name
# namedtuples
for row in df.itertuples(index=False, name='Hudas'):
    print(row)

# Hudas(name='liver', team='E', Q1=89, Q2=21, Q3=24, Q4=64)
# Hudas(name='Arry', team='C', Q1=36, Q2=37, Q3=37, Q4=57)
# Hudas(name='Ack', team='A', Q1=57, Q2=60, Q3=18, Q4=84)
# Hudas(name='Eorge', team='C', Q1=93, Q2=96, Q3=71, Q4=78)
# Hudas(name='Oah', team='D', Q1=65, Q2=49, Q3=61, Q4=86)

# 使用数据
for row in df.itertuples():
    print(row.Index, row.name)

# 0 liver
# 1 Arry
# 2 Ack
# 3 Eorge
# 4 Oah

4 df.items()

df.items()和df.iteritems()功能相同,它迭代时返回一个(列名,本列的Series结构数据),实现对列的迭代

如果需要对Series的数据再进行迭代,可嵌套for循环

import pandas as pd
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

# Series取前三个
for label, ser in df.items():
    print(label)
    print(ser[:3], end='\n\n')

# 输出结果:------------------------------------------------------------------------------
name
0    liver
1     Arry
2      Ack
Name: name, dtype: object

team
0    E
1    C
2    A
Name: team, dtype: object

Q1
0    89
1    36
2    57
Name: Q1, dtype: int64

Q2
0    21
1    37
2    60
Name: Q2, dtype: int64

Q3
0    24
1    37
2    18
Name: Q3, dtype: int64

Q4
0    64
1    57
2    84
Name: Q4, dtype: int64

#----------------------------------------------------------------------------------------

5 按列迭代

除了df.items(),如需要迭代一个DataFrame的列,可以直接对DataFrame迭代,会循环得到列名

import pandas as pd

df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ],
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

# 直接对DataFrame迭代
for column in df:
    print(column)

# 输出结果:
# name
# team
# Q1
# Q2
# Q3
# Q4

# 再利用df[列名]的方法迭代列
# 依次取出每个列
for column in df:
    print(df[column])

# 输出结果:------------------------------------------------------------------------------
0    liver
1     Arry
2      Ack
3    Eorge
4      Oah
Name: name, dtype: object
0    E
1    C
2    A
3    C
4    D
Name: team, dtype: object
0    89
1    36
2    57
3    93
4    65
Name: Q1, dtype: int64
0    21
1    37
2    60
3    96
4    49
Name: Q2, dtype: int64
0    24
1    37
2    18
3    71
4    61
Name: Q3, dtype: int64
0    64
1    57
2    84
3    78
4    86
Name: Q4, dtype: int64

#----------------------------------------------------------------------------------------

# 可对每个列的内容进行迭代:
for column in df:
    for i in df[column]:
        print(i)

# 输出结果:------------------------------------------------------------------------------
liver
Arry
Ack
Eorge
Oah
E
C
A
C
D
89
36
57
93
65
21
37
60
96
49
24
37
18
71
61
64
57
84
78
86

#----------------------------------------------------------------------------------------

# 可以迭代指定列
for i in df.name:
    print(i)

# 输出结果:
# liver
# Arry
# Ack
# Eorge
# Oah

# 只迭代想要的列
l = ['name','Q1']
cols = df.columns.intersection(l)
for col in cols:
    print(col)

# 输出结果:
# name
# Q1

Original: https://blog.csdn.net/Hudas/article/details/123009927
Author: 山茶花开时。
Title: [Pandas] 数据迭代



相关阅读

Title: ModuleNotFoundError: No module named ‘d2l’

解决方案

问题描述:

Anaconda导入d2l库发生错误

import d2l
ModuleNotFoundError: No module named ‘d2l’

原因分析:

d2l库是李沐大神自己写的库函数,包括了一些我们常用的库和自定义函数。

解决方案:

1.下载

方式一:李沐老师动手深度学习github仓库
[Pandas] 数据迭代
方式二:百度网盘
提取码:3xgq

; 2.寻找conda外部软件包的安装位置

对于windows上的conda环境,我们可以简单地检查conda的外部软件包(或conda环境)的安装位置。

2.1打开命令行

Win+r打开"运行"对话框
输入 cmd
在命令行输入 ipython

2.2查看已安装包的路径

以numpy包为例

import numpy
numpy.__file__

[Pandas] 数据迭代

3.将d2l库移动到安装包路径下

1.找到第二步查看的安装包路径,例如我的路径就是 D:\Anaconda\Lib\site-packages
2.将d2l库移动到安装包路径下

4.其它可能遇到的问题

如果在安装pytorch时,没有安装torchversion包,或者安装的包大于0.5.0版,那么可能会出现以下错误:

ModuleNotFoundError :No module named 'tqdm'
ModuleNotFoundError :No module named 'torchtext'

解决办法

conda install "包名"

Original: https://blog.csdn.net/qq_46378251/article/details/122380964
Author: 卡拉比丘流形
Title: ModuleNotFoundError: No module named ‘d2l’

相关文章
硕士开题所需要考虑的几件事情 人工智能

硕士开题所需要考虑的几件事情

有没有可行性? 可行性是指你是否能在硕士期间做完相应的研究工作. 1.1 有没有足够的参考文献? 参考文献为你的工作提供基本的支撑. 如果没有足够的参考文献, 要么这个工作没有意义, 要么你查文献的方...
COCO2017 数据集分类统计 人工智能

COCO2017 数据集分类统计

文章目录 1. 前言 2. COCO 类别编号及名称 3. 类别数量统计代码 4. 统计结果 1. 前言 最近用到 COCO2017 数据集做目标检测,顺便整理一下数据集。 COCO 数据集用专门的 ...
数据可视化——词云图 人工智能

数据可视化——词云图

本文目的:将爬取的评论数据进行分词,然后使用词云图进行可视化操作。 使用到的工具:结巴中文分词、Wordcloud库 首先介绍一下两个工具,其中结巴中文分词是一个专门将中文句子进行分词的第三方库,当然...
语音合成应用场景之一:配音平台总结 人工智能

语音合成应用场景之一:配音平台总结

声明:本总结不涉及任意相关利益,主要总结语音合成在配音场景落地的几家编辑平台,而且主要总结在线编辑平台,移动端的app不在考虑之内。欢迎关注微信公众号:低调奋进 自媒体的短视频、文章的流行催生配音领域...
【Python】推荐五个常用的图像处理库 人工智能

【Python】推荐五个常用的图像处理库

1. 引言 Python目前是世界上使用最多的编程语言之一。它能够以更少的工作量和更少的代码行数来完成许多事情。它还可以使用很少的代码行来方便地编辑和创建图像。 本文重点介绍,在图像处理领域,我们最常...