知识点
对Series和DataFrame对象及values属性做循环遍历;
对DataFrame对象使用iterrows函数和itertuples函数按行做循环遍历,使用items函数按列做循环遍历 。
安装和使用pandas
使用前提前安装pandas库:
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
使用时直接导入即可
import pandas as pd
Series数据循环遍历
Series对象是一个一维数组,类似于list列表
1)对Series对象直接遍历
# 从列表创建 Series
data = [1, 2, 3, 4, 5]
s = pd.Series(data)
for i in s:
pritn(i)
结果:
1
2
3
4
5
2)对Series的values属性(返回 Series中的数据值)遍历
举例:定义一个series接口数据并指定索引和名称
data = [[1, 2, 3], [4, 5,6]]
s = pd.Series(data, name='一维数组',index=['a', 'b'])
for i in s.values:
pritn(i)
结果:
[1, 2, 3]
[4, 5, 6]
2. DataFrames数据循环遍历
DataFrame 是一个二维的表格数据结构,具有标记的轴(行和列)。其中每一列相当于一个Series。
我们先定义一个DataFrame对象
import pandas as pd
# 从字典创建 DataFrame,字典的键是列名
data_dict = {
'name': ['lilei', 'lili', 'wanglei'],
'age': [25, 30, 35],
'city': ['shanghai', 'shenzhen', 'nanjing']
}
df = pd.DataFrame(data_dict)
1)对DataFrame的values属性做循环遍历(按行迭代)
for i in df.values:
print(i,type(i))
结果:每行返回的是一个numpy数组
['lilei' 25 'shanghai']
['lili' 30 'shenzhen']
['wanglei' 35 'nanjing']
我们可以继续对每个numpy数组做循环遍历,获取每个元素的值
for i in df.values:
for j in i:
print(j)
结果:
2)iterrows函数:对DataFrame对象做循环遍历(按行迭代)
iterrows函数是一个生成器,每次循环时返回一个元组,元组的第一个元素是索引,第二个元素是每行对应的Series对象
举例:对iterrows函数做循环遍历
for i in df.iterrows():
print(i)
结果:显示每一行为一个元组
我们继续对每个元组的第2个元素做循环遍历
上面的for循环语句变成如下:
for i in df.iterrows():
for j in i[1]:
print(j)
结果显示遍历得到的是每行中的值。
3)itertuples函数:对DataFrame对象做循环遍历(按行迭代)
itertuples函数返回namedtyple元组,参数index默认为True,则元组的第一个元素是索引,第二个元素是每行对应的namedtuple对象 ; 传值为False则不增加索引值,直接返回namedtuple对象
举例:对itertuples函数做循环遍历,参数index=False
for i in df.itertuples(index=False):
print(i,type(i))
for j in i:
print(j)
结果显示遍历得到的是每行中的值。
4)items函数:对DataFrame对象做循环遍历(按列迭代)
items函数是一个生成器,每次循环返回的元组中第一个元素是列名,第二个元素是每列对应的Series对象。
举例:对items函数做循环遍历,并打印第2个元素的type
for i in df.items():
print(i,type(i[1]))
结果:每个元组第1个元素为列名,第2个元素为每列的Series对象
我们继续对第2个元素做循环,得到每列的值:
for i in df.items():
for j in i[1]:
print(j)
结果:
5)直接对DataFrame对象做循环遍历(按列迭代)
举例:对DataFrame对象循环遍历,可以得到每个列名
for i in df:
print(i)
结果:
name
age
city
我们继续通过列名得到每一列的Series对象,并做循环
for i in df:
for j in df[i]:
print(j)
结果:
或者我们直接对某一列做循环处理,比如对name这一列
for i in df['name']:
print(i)
结果:
lilei
lili
wanglei
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,谢谢大家。