Pandas DataFrame切片器的基本操作及应用

Series是一维表格,每个元素带标签且有下标,兼具列表和字典的访问形式

import pandas as pd
s = pd.Series(data=[80,90,100],index=['语文','数学','英语'])
for x in s: #>>80 90 100
    print(x,end=" ")
print("")
print(s['语文'],s[1]) #>>80 90 标签和序号都可以作为下标来访问元素
print(s[0:2]['数学']) #>>90 s[0:2]是切片
print(s['数学':'英语'][1]) #>>100
for i in range(len(s.index)): #>>语文 数学 英语
    print(s.index[i],end = " ")
s['体育'] = 110 #在尾部添加元素,标签为'体育',值为110
s.pop('数学') #删除标签为'数学’的元素
s2 = s.append(pd.Series(120,index = ['政治'])) #不改变s
print(s2['语文'],s2['政治']) #>>80 120
print(list(s2)) #>>[80, 100, 110, 120]
print(s.sum(),s.min(),s.mean(),s.median())#输出和、最小值、平均值、中位数
print(s.idxmax(),s.argmax()) #>>体育 2 输出最大元素的标签和下标

DataFrame是带行列标签的二维表格,的每一列都是一个Series

import pandas as pd
pd.set_option('display.unicode.east_asian_width',True) 
#输出对齐方面的设置
scores = [['男',108,115,97],['女',115,87,105],['女',100,60,130],
['男',112,80,50]]
names = ['张三','李四','王五','赵六']
courses = ['性别','语文','数学','英语']
df = pd.DataFrame(data=scores,index = names,columns = courses)
print(df)

print(df.values[0][1],type(df.values))#>>108 <class 'numpy.ndarray'>
print(list(df.index)) #>>['张三', '李四', '王五', '赵六']
print(list(df.columns)) #>>['性别', '语文', '数学', '英语'] 
print(df.index[2],df.columns[2]) #>>王五 数学
s1 = df['语文'] #s1是个Series,代表'语文'那一列
print(s1['张三'],s1[0]) #>>108 108 张三语文成绩
print(df['语文']['张三']) #>>108 列索引先写
s2 = df.loc['李四'] #s2也是个Series,代表“李四”那一行
print(s2['性别'],s2['语文'],s2[2]) 
#>>女 115 87 李四的性别、语文和数学分数

  DataFrame的切片:

行切片:

#DataFrame的切片:
#iloc[行选择器, 列选择器] 用下标做切片
#loc[行选择器, 列选择器] 用标签做切片
#DataFrame的切片是视图
df2 = df.iloc[1:3] #行切片,是视图,选1,2两行
df2 = df.loc['李四':'王五'] #和上一行等价
print(df2)

列切片:

df3 = df.iloc[:,0:3]    #列切片(是视图),选0、1、2三列
df3= df.loc[:,'性别':'数学'] #和上一行等价
print(df3)

行列切片:

df4 = df.iloc[:2,[1,3]]  #行列切片
df4 = df.loc[:'李四',['语文','英语']] #和上一行等价
print(df4)

 

行列切片:

df5 = df.iloc[[1,3],2:4] #取第1、3行,第2、3列
df5 = df.loc[['李四','赵六'],'数学':'英语'] #和上一行等价
print(df5)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值