Datawhale Task03 索引 打卡

import numpy as np
import pandas as pd

3.1 索引器

3.1.1 表的列索引

df = pd.read_csv('joyful-pandas-master/data/learn_pandas.csv',usecols = ['School','Grade','Name','Gender','Weight','Transfer']) 
#usecoles表示读取列的集合
df['Name'].head() #通过[]来实现
0      Gaopeng Yang
1    Changqiang You
2           Mei Sun
3      Xiaojuan Sun
4       Gaojuan You
Name: Name, dtype: object
df[['Name','Gender']].head()  #通过[列名组成的列表来实现]
NameGender
0Gaopeng YangFemale
1Changqiang YouMale
2Mei SunMale
3Xiaojuan SunFemale
4Gaojuan YouMale
df.Name.head()
0      Gaopeng Yang
1    Changqiang You
2           Mei Sun
3      Xiaojuan Sun
4       Gaojuan You
Name: Name, dtype: object

3.1.2 序列的行索引

#以字符串为索引的Series
s = pd.Series([1,2,3,4,5,6],index = ['a','b','a','a','a','c'])
s
a    1
b    2
a    3
a    4
a    5
c    6
dtype: int64
s['c':'b':-2]  #???
c    6
a    4
b    2
dtype: int64
s['c':'b':-3]
c    6
a    3
dtype: int64
s['c':'b':-1]
c    6
a    5
a    4
a    3
b    2
dtype: int64
s['b']
2



s[['c','b']]
c    6
b    2
dtype: int64
s['c':'b':-2] #-2是步长

c    6
a    4
b    2
dtype: int64
s['c':'b':-3]
c    6
a    3
dtype: int64
s['c':'b':-3]
c    6
a    3
dtype: int64
s['c':'b':-1]
c    6
a    5
a    4
a    3
b    2
dtype: int64
#以整数为索引的Series
s = pd.Series(['a','b','c','d','e','f'],index = [1,3,1,2,5,4])
s
1    a
3    b
1    c
2    d
5    e
4    f
dtype: object
s[1]
1    a
1    c
dtype: object
s[[2,3]]
2    d
3    b
dtype: object
s[1:-1:2]  #从第2个元素到到最后一个元素,而且最后一个元素取不到,步长为2,所以取
        #索引是从0开始的!脑子瓦特了吧 
        #3 1 2 5 步长为2  所以取b d
3    b
2    d
dtype: object

3.1.3 loc索引器

df_demo = df.set_index('Name')

df_demo.head()
SchoolGradeGenderWeightTransfer
Name
Gaopeng YangShanghai Jiao Tong UniversityFreshmanFemale46.0N
Changqiang YouPeking UniversityFreshmanMale70.0N
Mei SunShanghai Jiao Tong UniversitySeniorMale89.0N
Xiaojuan SunFudan UniversitySophomoreFemale41.0N
Gaojuan YouFudan UniversitySophomoreMale74.0N
#*为单个元素
df_demo.loc['Qiang Sun']  #重复为dataframe
SchoolGradeGenderWeightTransfer
Name
Qiang SunTsinghua UniversityJuniorFemale53.0N
Qiang SunTsinghua UniversitySophomoreFemale40.0N
Qiang SunShanghai Jiao Tong UniversityJuniorFemaleNaNN
df_demo.loc['Quan Zhao']  #不重复为series
School      Shanghai Jiao Tong University
Grade                              Junior
Gender                             Female
Weight                                 53
Transfer                                N
Name: Quan Zhao, dtype: object
#同时选择行和列
df_demo.loc['Qiang Sun','School'] #返回Series
Name
Qiang Sun              Tsinghua University
Qiang Sun              Tsinghua University
Qiang Sun    Shanghai Jiao Tong University
Name: School, dtype: object
df_demo.loc['Quan Zhao','School']  #返回单个元素
'Shanghai Jiao Tong University'
# *为元素列表
df_demo.loc[['Quan Zhao','Qiang Sun'],['School','Gender']] #取出所有元素值对应的行和列
SchoolGender
Name
Quan ZhaoShanghai Jiao Tong UniversityFemale
Qiang SunTsinghua UniversityFemale
Qiang SunTsinghua UniversityFemale
Qiang SunShanghai Jiao Tong UniversityFemale
#*为切片
df_demo.loc['Gaojuan You':'Gaoqiang Qian','School':'Gender']
SchoolGradeGender
Name
Gaojuan YouFudan UniversitySophomoreMale
Xiaoli QianTsinghua UniversityFreshmanFemale
Qiang ChuShanghai Jiao Tong UniversityFreshmanFemale
Gaoqiang QianTsinghua UniversityJuniorFemale
df_loc_slice_demo = df_demo.copy()
df_loc_slice_demo.index = range(df_demo.shape[0],0,-1)
df_loc_slice_demo
df_loc_slice_demo.loc[5:3]
SchoolGradeGenderWeightTransfer
5Fudan UniversityJuniorFemale46.0N
4Tsinghua UniversitySeniorFemale50.0N
3Shanghai Jiao Tong UniversitySeniorFemale45.0N
df_loc_slice_demo.loc[3:5]
SchoolGradeGenderWeightTransfer
#布尔值列表
df_demo.loc[df_demo.Weight>70].head()
SchoolGradeGenderWeightTransfer
Name
Mei SunShanghai Jiao Tong UniversitySeniorMale89.0N
Gaojuan YouFudan UniversitySophomoreMale74.0N
Xiaopeng ZhouShanghai Jiao Tong UniversityFreshmanMale74.0N
Xiaofeng SunTsinghua UniversitySeniorMale71.0N
Qiang ZhengShanghai Jiao Tong UniversitySeniorMale87.0N
df_demo.loc[df_demo.Grade.isin(['Freshman','Senior'])].head()
SchoolGradeGenderWeightTransfer
Name
Gaopeng YangShanghai Jiao Tong UniversityFreshmanFemale46.0N
Changqiang YouPeking UniversityFreshmanMale70.0N
Mei SunShanghai Jiao Tong UniversitySeniorMale89.0N
Xiaoli QianTsinghua UniversityFreshmanFemale51.0N
Qiang ChuShanghai Jiao Tong UniversityFreshmanFemale52.0N
condition_1_1 = df_demo.School == 'Fudan University'
condition_1_2 = df_demo.Grade == 'Senior'
condition_1_3 = df_demo.Weight>70
condition_1 = condition_1_1 & condition_1_2 & condition_1_3
condition_2_1 = df_demo.School == 'Peking University'
condition_2_2 = df_demo.Grade == 'Senior'
condition_2_3 = df_demo.Weight > 80
condition_2 = condition_2_1 & (~condition_2_2) & condition_2_3
df_demo.loc[condition_1 | condition_2]
SchoolGradeGenderWeightTransfer
Name
Qiang HanPeking UniversityFreshmanMale87.0N
Chengpeng ZhouFudan UniversitySeniorMale81.0N
Changpeng ZhaoPeking UniversityFreshmanMale83.0N
Chengpeng QianFudan UniversitySeniorMale73.0Y

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值