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'])
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()
| Name | Gender |
---|
0 | Gaopeng Yang | Female |
---|
1 | Changqiang You | Male |
---|
2 | Mei Sun | Male |
---|
3 | Xiaojuan Sun | Female |
---|
4 | Gaojuan You | Male |
---|
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 序列的行索引
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]
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
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]
3 b
2 d
dtype: object
3.1.3 loc索引器
df_demo = df.set_index('Name')
df_demo.head()
| School | Grade | Gender | Weight | Transfer |
---|
Name | | | | | |
---|
Gaopeng Yang | Shanghai Jiao Tong University | Freshman | Female | 46.0 | N |
---|
Changqiang You | Peking University | Freshman | Male | 70.0 | N |
---|
Mei Sun | Shanghai Jiao Tong University | Senior | Male | 89.0 | N |
---|
Xiaojuan Sun | Fudan University | Sophomore | Female | 41.0 | N |
---|
Gaojuan You | Fudan University | Sophomore | Male | 74.0 | N |
---|
df_demo.loc['Qiang Sun']
| School | Grade | Gender | Weight | Transfer |
---|
Name | | | | | |
---|
Qiang Sun | Tsinghua University | Junior | Female | 53.0 | N |
---|
Qiang Sun | Tsinghua University | Sophomore | Female | 40.0 | N |
---|
Qiang Sun | Shanghai Jiao Tong University | Junior | Female | NaN | N |
---|
df_demo.loc['Quan Zhao']
School Shanghai Jiao Tong University
Grade Junior
Gender Female
Weight 53
Transfer N
Name: Quan Zhao, dtype: object
df_demo.loc['Qiang Sun','School']
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']]
| School | Gender |
---|
Name | | |
---|
Quan Zhao | Shanghai Jiao Tong University | Female |
---|
Qiang Sun | Tsinghua University | Female |
---|
Qiang Sun | Tsinghua University | Female |
---|
Qiang Sun | Shanghai Jiao Tong University | Female |
---|
df_demo.loc['Gaojuan You':'Gaoqiang Qian','School':'Gender']
| School | Grade | Gender |
---|
Name | | | |
---|
Gaojuan You | Fudan University | Sophomore | Male |
---|
Xiaoli Qian | Tsinghua University | Freshman | Female |
---|
Qiang Chu | Shanghai Jiao Tong University | Freshman | Female |
---|
Gaoqiang Qian | Tsinghua University | Junior | Female |
---|
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]
| School | Grade | Gender | Weight | Transfer |
---|
5 | Fudan University | Junior | Female | 46.0 | N |
---|
4 | Tsinghua University | Senior | Female | 50.0 | N |
---|
3 | Shanghai Jiao Tong University | Senior | Female | 45.0 | N |
---|
df_loc_slice_demo.loc[3:5]
| School | Grade | Gender | Weight | Transfer |
---|
df_demo.loc[df_demo.Weight>70].head()
| School | Grade | Gender | Weight | Transfer |
---|
Name | | | | | |
---|
Mei Sun | Shanghai Jiao Tong University | Senior | Male | 89.0 | N |
---|
Gaojuan You | Fudan University | Sophomore | Male | 74.0 | N |
---|
Xiaopeng Zhou | Shanghai Jiao Tong University | Freshman | Male | 74.0 | N |
---|
Xiaofeng Sun | Tsinghua University | Senior | Male | 71.0 | N |
---|
Qiang Zheng | Shanghai Jiao Tong University | Senior | Male | 87.0 | N |
---|
df_demo.loc[df_demo.Grade.isin(['Freshman','Senior'])].head()
| School | Grade | Gender | Weight | Transfer |
---|
Name | | | | | |
---|
Gaopeng Yang | Shanghai Jiao Tong University | Freshman | Female | 46.0 | N |
---|
Changqiang You | Peking University | Freshman | Male | 70.0 | N |
---|
Mei Sun | Shanghai Jiao Tong University | Senior | Male | 89.0 | N |
---|
Xiaoli Qian | Tsinghua University | Freshman | Female | 51.0 | N |
---|
Qiang Chu | Shanghai Jiao Tong University | Freshman | Female | 52.0 | N |
---|
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]
| School | Grade | Gender | Weight | Transfer |
---|
Name | | | | | |
---|
Qiang Han | Peking University | Freshman | Male | 87.0 | N |
---|
Chengpeng Zhou | Fudan University | Senior | Male | 81.0 | N |
---|
Changpeng Zhao | Peking University | Freshman | Male | 83.0 | N |
---|
Chengpeng Qian | Fudan University | Senior | Male | 73.0 | Y |
---|