1、导入文件students.csv(在data文件夹中),第1列作为行索引,创建DataFrame对象data。

import pandas as pd
data = pd.read_csv('data\students.csv',index_col = 0)
data

2、查看data的4个属性: 行索引index ,列索引columns ,值values,形状shape。

(提示如何查看属性:data.index)

data.index
data.columns
data.values
data.shape

3、选取两列数据Age, Score

data[['Age','Score']]

4、选取3行数据,行索引为1,5,10。

data.loc[[1,5,10]]
data.iloc[[0,4,9]]
data.loc[[1,5,10],: ]
data.loc[[1,5,10],]

5、选取前5行数据。

data.iloc[ :5]
data.loc[:5]
data.loc[1:5]
data.iloc[0:5]
data.iloc[0:5,: ]
data.loc[[1,2,3,4,5]]
data.loc[1:5,: ]

6、将行索引为10的学生的成绩修改为100 。

data.loc[10,'Score'] = 100

7、筛选出分数为90分以上(包括90分)的学生信息。并导出到E:\ 中,文件名为a.csv(根据所使用电脑的实际情况,也可以导出到C盘,D盘中)

(导出操作提示:dataframe对象.to_csv(‘e:\a.csv’, mode='w’))

data1 = data.loc[data['Score']>= 90]
data1.to_csv('e:/a.csv',mode = 'w')   #此处E大小写皆可
data1 = data.loc[data['Score']>= 90]
data1.to_csv('e:\a.csv',mode = 'w')   #右单斜杠\会出错,右双斜杠\\不会出错

8、 在第1 列插入新列,列索引名为city ,值为shanghai。

data.insert(1,'city','shanghai')   #使用insert函数

9、删除行序为10行到15行数据,不修改原始数据。

data.drop([10,11,12,13,14,15])    #默认axis = 0,删除行
data.drop(data.index[9:15])
data.drop(index = [10,11,12,13,14,15],axis = 0)

10、 删除前5列数据,不修改原始数据。

data.drop(data.columns[:5],axis = 1)
data.drop(['Gender','city','Age','Height','Weight'],axis = 1)

11、删除Courses为3的行,修改原始数据。

(提示:使用条件筛选选出Courses为3的行,得到这些行的行索引,然后从data中删除这些行)

data.drop(data[data['Courses'] == 3].index,inplace = True)

12、批量修改:将Courses为4并且CaseTeaching为5的这些学生的CaseTeaching数据修改为8。

dataframe索引多列 dataframe列索引属性名_dataframe索引多列

data.loc[data[(data['Courses'] == 4)&(data['CaseTeaching'] == 5)].index,'CaseTeaching'] = 8
data

13、学生按照性别分组,统计男生女生的平均成绩和月生活费的平均值。

maledata = data[data['Gender'] == 'male']
femaledata = data[data['Gender'] =='female']
print('男生与女生的平均成绩分别为:\n',maledata['Score'].mean(),femaledata['Score'].mean(),'\n',
     '男生与女生的月生活费的平均值为:\n',maledata['MonthFee'].mean(),femaledata['MonthFee'].mean())
print('男生与女生的平均成绩分别为(保留两位小数):\n','%.2f'%maledata['Score'].mean(),'%.2f'%femaledata['Score'].mean(),'\n',
     '男生与女生的月生活费的平均值为(保留两位小数):\n','%.2f'%maledata['MonthFee'].mean(),'%.2f'%femaledata['MonthFee'].mean())
import numpy as np
grouped = data.groupby(['Gender'])
grouped.aggregate({'Score':np.mean,'MonthFee':np.mean})
#保留两位小数
grouped = data.groupby(['Gender'])
np.set_printoptions(precision = 3)
grouped.aggregate({'Score':np.mean,'MonthFee':np.mean}).round(2)       #round()函数实现小数位数的保留
data.groupby('Gender').agg({'Score':['mean'],'MonthFee':['mean']})
#保留两位小数
data.groupby('Gender').agg({'Score':['mean'],'MonthFee':['mean']}).round(2)

14、将学生按照性别分组,统计男生女生身高的最大值,男生女生体重的最小值,男生女生分数的(最大值、最小值、平均值)。

(提示:分组后,使用aggregate()构建字典)

方法一
grouped = data.groupby(['Gender'])
grouped.aggregate({'Height':np.max,'Weight':np.min,'Score':[np.max,np.min,np.mean]})                #注amax等同max,amin等同min
方法二
data.groupby('Gender').aggregate({'Height':['max'],'Weight':['min'],'Score':['max','min','mean']})   #groupby中只有一个值时可不用列表
data.groupby(['Gender']).agg({'Height':['max'],'Weight':['min'],'Score':['max','min','mean']})       #aggregate也可以缩写为agg
方法三
maledata = data[data['Gender'] == 'male']              #提取男生数据
femaledata = data[data['Gender'] =='female']           #提取女生数据
maledata.aggregate({'Height':['max'],'Weight':['min'],'Score':['max','min','mean']})    #男生数据统计分析
femaledata.aggregate({'Height':['max'],'Weight':['min'],'Score':['max','min','mean']})   #女生数据统计分析