Python学习第二十二天,Pandas学习(四)

73 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情

数据提取

行数据

DataFrame有两个函数可以直接读取行数据:

DataFrame.loc()
DataFrame.iloc()

举例:

import pandas as pd

data=[[45,65,200],[56,45,50],[67,67,67]]
index=['张三','李四','王五']
columns=['数学','语文','英语']
df=pd.DataFrame(data=data,index=index,columns=columns)
print (df)
print('----------')

#提取多行数据
print('loc提取多行数据\n',df.loc[['张三','王五']])
print('----------')
print('loc提取多行数据\n',df.iloc[[0,2]])

结果:

image.png

列数据

上述的函数也可以提取列数据:

data=[[45,65,200],[56,45,50],[67,67,67]]
index=['张三','李四','王五']
columns=['数学','语文','英语']
df=pd.DataFrame(data=data,index=index,columns=columns)

print (df)
print('----------')
print('直接提取\n',df[['数学','英语']])#直接提取
print('----------')
#提取多行数据
print('loc提取列数据\n',df.loc[:,['数学','英语']])#含头含尾
print('----------')
print('iloc提取连续多列数据\n',df.iloc[:,1:])#含头不含尾

结果:

image.png

提取区域数据

data=[[45,65,200],[56,45,50],[67,67,67]]
index=['张三','李四','王五']
columns=['数学','语文','英语']
df=pd.DataFrame(data=data,index=index,columns=columns)

print(df)
print('----------')
print('李四的数学与英语成绩\n',df.loc['李四',['数学','英语']])
print('----------')
print('张三与王五的语文成绩\n',df.iloc[[0,2],[1]])

结果:

image.png

根据条件提取数据

举例:

data=[[75,56,80],[56,45,50],[60,67,67]]
index=['张三','李四','王五']
columns=['数学','语文','英语']
df=pd.DataFrame(data=data,index=index,columns=columns)

print(df)
print('----------')
print('提取数学成绩及格的数据\n',df.loc[df['数学']>=60])
print('----------')
print('提取数学和语文成绩都及格的数据\n',df.loc[(df['数学']>=60)&(df['语文']>=60)])

结果:

image.png

小结

实际上这些都只是loc函数和iloc函数的灵活运用,并没有什么大的难度,不过十分好用需要记忆一下。