第三章. Pandas入门
3.5 数据抽取
1. 数据抽取:主要使用DataFrame对象中的loc属性和iloc属性。
1).loc:以列名和行名作为参数,当只有一个参数时,默认为行名,df.loc[‘A’]
2).iloc:以列和行所在位置索引作为参数,当只有一个参数时,默认为行索 引,df.iloc[0]
2.抽取一行或多行数据:
import pandas as pd
pd.set_option("display.unicode.east_asian_width", True)
data = [[110, 115, 80], [93, 110, 92], [90, 68, 92], [106, 42]]
name = ['小明', '小美', '小强', '小王']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
#抽取一行数据
print(df.loc['小王'])
print(df.iloc[1])
#抽取多行数据
print(df.loc[['小明','小强']])
print(df.iloc[[0,2]])
#抽取多行数据
print(df.loc['小明':'小强'])
print(df.iloc[0:2])
结果展示:
注:df.iloc[0:2]:包含’[‘前面,不包含’]'后面
3.抽取指定的行列数据:
import pandas as pd
pd.set_option("display.unicode.east_asian_width", True)
data = [[110, 115, 80], [93, 110, 92], [90, 68, 92], [106, 42]]
name = ['小明', '小美', '小强', '小王']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
#抽取指定列数据
print(df[['语文','英语']])
#抽取指定行列的数据
print(df.loc[['小明','小王'],['语文','英语']])
结果展示:
4.按指定条件抽取数据的几种方式:
1).取其中的一个元素:如.iat[x,y]
2).基于位置的查询:如.icol[x,y]
3).基于行列名称的查询:如.col[x]
import pandas as pd
pd.set_option("display.unicode.east_asian_width", True)
data = [[110, 115, 80], [93, 110, 92], [90, 68, 92], [106, 42]]
name = ['小明', '小美', '小强', '小王']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
#使用DataFrame对象实现数据查询有以下几种方式
print('*'*50)
#取其中的一个元素
print(df.iat[0,2])
print('*'*50)
#基于位置的查询
print(df.iloc[0,:])
print('*'*50)
#基于行列名称的查询
print(df.loc[['小明'],['数学']])
结果展示:
5.抽取指定的学科指定分数的数据:
import pandas as pd
pd.set_option("display.unicode.east_asian_width", True)
data = [[110, 115, 80], [93, 110, 92], [90, 68, 92], [106, 42]]
name = ['小明', '小美', '小强', '小王']
columns = ['语文', '数学', '英语']
df = pd.DataFrame(data=data, index=name, columns=columns)
print(df)
#抽取指定学科和指定分数的数据
print(df.loc[(df['语文'] >100) & (df['英语']>60)])
结果展示: