1.5 训练场
1.5.1 创建1000条语、数、外、Python的考试成绩DataFrame,范围是0~150包含150,分别将数据保存到csv文件以及Excel文件,保存时不保存行索引。
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint(0, 151, size = (1000, 4)), columns = ['语', '数', '英', 'Python']) df.to_csv('./score.csv', index = False) df.to_excel('./score.xlsx', index = False)
1.5.2 创建使用字典创建DataFrame,行索引是a~z,列索引是:身高(160-185)、体重(50-90)、学历(无、本科、硕士、博士)。身高、体重数据使用NumPy随机数生成,学历数据先创建数组 edu =np.array([‘无’,‘本科’,‘硕士’,‘博士’]),然后使用花式索引从四个数据中选择26个数据。
import numpy as np import pandas as pd edu = np.array(['无', '本科', '硕士', '博士']) # 花式索引取数据 index = np.random.randint(0, 4, size = 26) edu = edu[index] data = pd.DataFrame({'身高':np.random.randint(160, 186, size = 26), '体重':np.random.randint(50, 91, size = 26), '学历':edu}, index = list('qwertyuiopasdfghjklzxcvbnm')) # 这个单纯是为了图省事儿,手指按住键盘滑动产生 # 我们要求行索引是 a~ z,故我们来排个序 data = data.sort_index(ascending = True) ''' 或者要生成 a ~ z 也可以采取: index = np.arange(97, 123) index = [chr(i) for i in index] ''' display(data)
1.5.3 使用题目二中的数据,进行数据筛选。
1.5.3.1 筛选索引大于 ‘t’ 的所有数据
# 获取索引,进行逻辑运算 # data.index 可以获取 data 的行索引 cnt = data.index > 't' data[cnt]
1.5.3.2 筛选学历是博士,身高大于170或者体重小于80的学生
cnt1 = data['学历'] == '博士' cnt2 = data['身高'] > 170 cnt3 = data['体重'] < 80 cnt = cnt1 & (cnt2 | cnt3) data[cnt]
1.5.4 使用题目二中数据,开始学生们开始减肥
1.5.4.1 本科生减肥,减掉的体重统一是10
cnt = data['学历'] == '本科' display(data[cnt]) data.loc[cnt,'体重'] -= 10 display(data[cnt])
1.5.4.2 博士生减肥,减掉体重范围是5~10
cnt = data['学历'] == '博士' display(data[cnt]) ''' data[cnt].shape 运行结果为(8, 3) data[cnt].shape[0] 运行结果为 8 ''' data.loc[cnt, '体重'] -= np.random.randint(5, 11, size = data[cnt].shape[0]) # 相当于 size = 8 display(data[cnt])