6. 数据排序
6.1 重置索引
6.2 按照语文成绩升序排序,默认升序排列
6.3 按照数学成绩降序排序
6.4 先按语文成绩升序排列,再按数学成绩降序排列
6.5 语文成绩80及以上
6.6 语文成绩80及以上以及数学成绩90分及以上
6.7 语文成绩80及以上或数学成绩90分及以上
6.8 输出成绩100的行和列号
6.9 增加一列“省份-城市”
6.10 增加一列总分
6.11 按照总分、语文、数学、英语成绩依次排序
6.12 新增一列表示学生语文成绩等级的列(优秀、良好、中等、不及格)
# 6.1 重置索引 df_last = df1.reset_index(drop=True) # 6.2 按照语文成绩升序排序,默认升序排列 df_last.sort_values('语文') # 6.3 按照数学成绩降序排序 df_last.sort_values('数学', ascending=False) # 6.4 先按语文成绩升序排列,再按数学成绩降序排列 df_last.sort_values(['语文','数学'], ascending=[True,False]) # 6.5 语文成绩80及以上 df_last[df_last['语文']>=80] df_last.query('语文 > 80') # 6.6 语文成绩80及以上以及数学成绩90分及以上 df_last[(df_last['语文']>=80) & (df_last['数学']>=90)] # 6.7 语文成绩80及以上或数学成绩90分及以上 df_last[(df_last['语文']>=80) | (df_last['数学']>=90)] # 6.8 输出成绩100的行和列号 row, col = np.where(df_last.values == 100) # 6.9 增加一列“省份-城市” df_last['省份-城市'] = df_last['省份'] + '-' + df_last['城市'] # 6.10 增加一列总分 df_last['总分'] = df_last[['语文','数学','英语']].sum(axis = 1) # 6.11 按照总分、语文、数学、英语成绩依次排序 df_last.sort_values(by =['总分','语文','数学','英语'],ascending=False ) # 6.12 新增一列表示学生语文成绩等级的列(优秀、良好、中等、不及格) def get_letter_grade(score): ''' 定义一个函数,根据分数返回相应的等级 ''' if score>=90: return '优秀' elif score>=80: return '良好' elif score>=60: return '中等' else: return '不及格' df_last['语文等级'] = df_last['语文'].apply(lambda score: get_letter_grade(score))
7. 数据分组
7.1 一列分组
7.2 多列分组
7.3 每组的统计数据(横向显示)
7.4 每组的统计数据(纵向显示)
7.5 查看指定列的统计信息
7.6 分组大小
7.7 分组成绩最大值
7.8 分组成绩最小值
7.9 分组成绩总和
7.10 分组平均成绩
7.11 按省份分组,计算英语成绩总分和平均分
7.12 按省份、城市分组计算平均成绩
7.13 不同列不同的计算方法
7.14 性别分别替换为1/0
7.15 增加一列按省份分组的语文平均分
7.16 输出语文成绩最高的男生和女生(groupby默认会去掉空值)
7.17 按列省份、城市进行分组,计算语文、数学、英语成绩最大值的透视表
# 7.1 一列分组 df2.groupby('省份').groups # 7.2 多列分组 df2.groupby(['省份','城市']).groups # 7.3 每组的统计数据(横向显示) df2.groupby('省份').describe() # 7.4 每组的统计数据(纵向显示) df2.groupby('省份').describe().unstack() # 7.5 查看指定列的统计信息 df2.groupby('省份').describe()['语文'] # 7.6 分组大小 df2.groupby('省份').count() df2.groupby('省份').agg(np.size) # 7.7 分组成绩最大值 df2.groupby('省份').max() df2.groupby('省份').agg(np.max) # 7.8 分组成绩最小值 df2.groupby('省份').min() df2.groupby('省份').agg(np.min) # 7.9 分组成绩总和 df2.groupby('省份').sum() df2.groupby('省份').agg(np.sum) # 7.10 分组平均成绩 df2.groupby('省份').mean() df2.groupby('省份').agg(np.mean) # 7.11 按省份分组,计算英语成绩总分和平均分 df2.groupby('省份')['英语'].agg([np.sum, np.mean]) # 7.12 按省份、城市分组计算平均成绩 df2.groupby(['省份','城市']).agg(np.mean) # 7.13 不同列不同的计算方法 df2.groupby('省份').agg({'语文': sum, # 总和 '数学': 'count', # 总数 '英语':'mean'}) # 平均 # 7.14 性别分别替换为1/0 df2 = df2.dropna() df2['性别'] = df2['性别'].map({'男':1, '女':0}) # 7.15 增加一列按省份分组的语文平均分 df2['语文平均分'] = df2.groupby('省份')['语文'].transform('mean') # 7.16 输出语文成绩最高的男生和女生(groupby默认会去掉空值) def get_max(g): df = g.sort_values('语文',ascending=True) print(df) return df.iloc[-1,:] df2.groupby('性别').apply(get_max) # 7.17 按列省份、城市进行分组,计算语文、数学、英语成绩最大值的透视表 df.pivot_table(index=['省份','城市'], values=['语文','数学','英语'], aggfunc=max)
8. 数据统计
8.1 数据汇总统计
8.2 列中非空值的个数
8.3 列最小值
8.4 列最大值
8.5 列均值
8.6 列中位数
8.7 列与列之间的相关系数
8.8 列的标准差
8.9 语文成绩指标
8.10 三个科目的指标
# 8.1 数据汇总统计 df.describe() # 8.2 列中非空值的个数 df.count() # 8.3 列最小值 df.min() # 8.4 列最大值 df.max() # 8.5 列均值 df.mean() # 8.6 列中位数 df.median() # 8.7 列与列之间的相关系数 df.corr() # 8.8 列的标准差 df.std() # 8.9 语文成绩指标 # 对语文列求和 sum0 = df_last['语文'].sum() # 语文成绩方差 var = df_last['语文'].var() # 语文成绩标准差 std = df_last['语文'].std() # 语文平均分 mean = df_last['语文'].mean() print('语文总分:',sum0) print('语文平均分:',mean) print('语文成绩标准差:',std) print('语文成绩方差:',var) # 8.10 三个科目的指标 mean = df_last[['语文','数学','英语']].mean() var = df_last[['语文','数学','英语']].var() total = df_last[['语文','数学','英语']].sum() std = df_last[['语文','数学','英语']].std() rows = [total,mean,var,std] # 索引列表 index = ['总分','平均分','方差','标准差'] # 根据指定索引和行构造 DataFrame 对象 df_tmp = pd.DataFrame(rows,index=index)
9. 表格样式
9.1 示例数据
9.2 列重命名
9.3 设置空值背景红色
9.4 最大数据高亮
9.5 最小数据高亮
9.6 部分列最大数据高亮
9.7 部分列数据高亮(Dataframe全为数据)
9.8 95分以上显示红色
9.9 混合
9.10 设置float类型列数据大于80.0的背景高亮
9.11 设置数学成绩大于80.0分的行背景高亮
9.12 设置数学成绩大于95.0的行数据颜色为红色
9.13 显示热度图
# 9.1 示例数据 df = pd.read_csv(filename, encoding='gbk') # 9.2 列重命名 df.columns = ['姓名','性别','语文','数学','英语','城市','省份'] # 9.3 设置空值背景红色 df.style.highlight_null(null_color = 'red') # 9.4 最大数据高亮 df.style.highlight_max() # 9.5 最小数据高亮 df.style.highlight_min() # 9.6 部分列最大数据高亮 df.style.apply(highlight_max, subset=['语文', '数学']) # 9.7 部分列数据高亮(Dataframe全为数据) df3 = df[['语文','数学','英语']] def highlight_max(s): is_max = s == s.max() return ['background-color: yellow' if v else '' for v in is_max] df3.style.apply(highlight_max) # 9.8 95分以上显示红色 def color_negative_red(val): color = 'red' if val > 95.0 else 'black' return 'color: %s' % color df3.style.applymap(color_negative_red) # 9.9 混合 df3.style.applymap(color_negative_red).apply(highlight_max) # 9.10 设置float类型列数据大于80.0的背景高亮 yellow_css = 'background-color: yellow' sfun = lambda x: yellow_css if type(x) == float and x > 80.0 else '' df3.style.applymap(sfun) # 9.11 设置数学成绩大于80.0分的行背景高亮 yellow_css = 'background-color: yellow' sfun = lambda x: [yellow_css]*len(x) if x.数学 > 80.0 else ['']*len(x) df3.style.apply(sfun, axis=1) # 9.12 设置数学成绩大于95.0的行数据颜色为红色 def row_color(s): if s.数学 > 95: return ['color: red']*len(s) else: return ['']*len(s) df3.style.apply(row_color, axis=1) # 9.13 显示热度图 import seaborn as sns cm = sns.light_palette("green", as_cmap=True) df3.style.background_gradient(cmap=cm)
END
以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道