123个Pandas常用基础指令,真香!(下)

简介: 123个Pandas常用基础指令,真香!(下)

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


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
10月前
|
BI 数据处理 索引
收藏 | 爆肝整理100个Pandas常用基础指令
收藏 | 爆肝整理100个Pandas常用基础指令
|
10月前
|
数据处理 索引 Python
123个Pandas常用基础指令,真香!(上)
123个Pandas常用基础指令,真香!
|
1月前
|
SQL 数据采集 数据可视化
使用Python Pandas实现两表对应列相加(即使表头不同)
使用Python Pandas实现两表对应列相加(即使表头不同)
44 3
|
2天前
|
Python
在Python的pandas库中,向DataFrame添加新列简单易行
【6月更文挑战第15天】在Python的pandas库中,向DataFrame添加新列简单易行。可通过直接赋值、使用Series或apply方法实现。例如,直接赋值可将列表或Series对象分配给新列;使用Series可基于现有列计算生成新列;apply方法则允许应用自定义函数到每一行或列来创建新列。
27 8
|
5天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【6月更文挑战第12天】在数字时代,Python因其强大的数据处理能力和易用性成为数据分析首选工具。结合Pandas(用于高效数据处理)和Matplotlib(用于数据可视化),能助你成为数据分析专家。Python处理数据预处理、分析和可视化,Pandas的DataFrame简化表格数据操作,Matplotlib则提供丰富图表展示数据。掌握这三个库,数据分析之路将更加畅通无阻。
|
7天前
|
存储 数据挖掘 数据处理
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程
【python源码解析】深入 Pandas BlockManager 的数据结构和初始化过程
|
12天前
|
存储 数据挖掘 数据处理
19. Python 数据处理之 Pandas
19. Python 数据处理之 Pandas
23 1
|
13天前
|
数据采集 安全 数据处理
Python采集数据处理:利用Pandas进行组排序和筛选
使用Python的Pandas库,结合亿牛云代理和多线程技术,提升网络爬虫数据处理效率。通过代理IP避免封锁,多线程并发采集,示例代码展示数据分组、排序、筛选及代理IP配置和线程管理。
Python采集数据处理:利用Pandas进行组排序和筛选
|
15天前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
37 2
|
19天前
|
数据采集 SQL 数据处理
Python中的Pandas库:数据处理与分析的利器
Python中的Pandas库:数据处理与分析的利器
30 0

相关实验场景

更多