1.Series对象索引和切片
loc与iloc的使用方式
import pandas as pd
import numpy as np
# 创建Series对象
data = pd.Series([4,3,25,2,6], index=list('abcde'))
# 索引
# 根据普通key值获取值
print('根据普通key值获取值:',data['a'])
# 根据正位置索引获取值
print('根据正位置索引获取值:',data[2])
# 根据负位置索引获取值
print('根据负位置索引获取值:',data[-2])
# 切片
# 1.普通索引:data['key1':'key2'] 是 ['key1':'key2']
print('1.普通索引:\n', data['a':'c'])
# 2.位置索引:data[x:y] 是 [x:y) 【第一个位置:最后一个位置(不包括):间隔的位置】
print('2.位置索引:\n', data[0:4:2])
# 3.利用索引进行筛选数据
print('3.筛选大于5的数据:\n',data[data>5])
# loc(通过普通索引)与iloc(通过位置索引获取)的使用:当我们的普通索引也是数字,与位置索引相重复时,就需要使用(都是不包含结束值)
data2 = pd.Series([5,2,56,13,11],index=[1,2,3,4,5])
print('loc通过普通索引获取值:\n',data2[1:3])
print('iloc通过位置索引获取值:\n',data2[1:3])
2.DataFrame对象列的选择
2.1DataFrame列对象的索引和切片
import pandas as pd
df = pd.read_excel('stu_data.xlsx')
# 设置显示的行数
pd.options.display.max_rows = 8
# 获取列的方式
# 方式1:获取单列 df[col]
print('方式1:获取单列:\n', df['学号'])
# 方式2:获取多列 df[[col1, col2]]
print('方式2:获取多列:\n', df[['学号','性别']])
# 方式3:使用loc通过普通索引来获取 df.loc[普通行索引:普通列索引]
df = df.set_index(['学号'])
print('方式3:使用loc通过普通索引来获取行:\n', df.loc[1510248008:1512332010])
print('方式3:使用loc通过普通索引来获取列:\n', df.loc[:,'性别':'体重'])
# 方式4:使用iloc通过位置索引来获取 df.iloc[位置行索引:位置列索引]
print('方式4:使用iloc通过位置索引来获取行:\n', df.iloc[3:7])
print('方式4:使用iloc通过位置索引来获取列:\n', df.iloc[1:3])
# 方式5:获取多列数据
print("方式5:获取多列数据:\n", df.loc[:,['体重','性别']])
# 方式6:获取多行数据
print("方式6:获取多行数据:\n", df.loc[[1510248008,1512108019],:])
# 筛选数据:筛选身高高于185的学生
print("筛选数据:筛选身高高于185的学生:\n",df[df['身高']>185])
# 筛选数据:筛选身高高于170的女生
print('筛选数据:筛选身高高于170的女生:\n',df[(df['身高'] > 170) & (df['性别'] =='女')])
2.2 DataFrame对象的索引和切片
df = pd.read_excel('stu_data.xlsx')
# 设置显示的行数
pd.options.display.max_rows = 8
# 设置行索引
df = df.set_index('学号')
# 1.通过普通行索引获取单行值
print('1.通过普通行索引获取值:\n',df.loc[1510248008])
# 2.通过位置行索引获取单行值
print('2.通过位置行索引获取值:\n',df.iloc[0])
# 3.通过普通行索引获取多行值
print('3.通过普通行索引获取多行值:\n',df.loc[[1510248008,1510229019,1512108019]])
# 4.通过位置行索引获取多行值
print('4.通过位置行索引获取多行值:\n',df.iloc[[0,1,2]])
# 5.通过普通行索引切片获取多行值(必须要唯一索引)
print('5.通过普通行索引切片获取多行值:\n',df.loc[1510248008:1512108019])
# 6.通过位置行索引切片获取多行值
print('6.通过位置行索引切片获取多行值:\n',df.iloc[0:2])
# 7.通过普通行索引获取部分行部分列
print('7.通过普通行索引获取部分行部分列:\n',df.loc[[1510248008,1540294017],["性别","身高"]])
# 8.通过位置行索引获取部分行部分列
print('8.通过位置行索引获取部分行部分列:\n',df.iloc[[0,1],[0,1]])
# 7.通过普通行索引切片获取部分行部分列
print('7.通过普通行索引切片获取部分行部分列:\n',df.loc[1510248008:1540294017,["性别","身高"]])
# 8.通过普通行索引切片获取部分行部分列
print('8.通过普通行索引切片获取部分行部分列:\n',df.iloc[0:3,[0,1]])
# 9.筛选数据:获取身高高于170的性别和体重
print("9.筛选数据:获取身高高于170的性别和体重:\n", df[df['身高']>170][['性别','体重']])