pandas 进阶(五)

简介: 本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 高级,读本文之前建议先修:pandas 入门,pandas 高级

7.训练场

首先我们需要下载一个 Excel 文件:

链接:https://pan.baidu.com/s/1gkEEH1yVA1RdaXTrFbw3ww?pwd=rm9t

提取码:rm9t

下载完成之后,把该文件和我们的代码放到同一个文件夹下,这一操作我们在之前的博客中已经反复说到,这里就不再进行演示

7.1 找到一班(名字后面跟的数字表示班级),获取班级将其男生1000米跑,成绩绘制线形图

import numpy as np
import pandas as pd
# 获取1班数据
df = pd.read_excel('./分数汇总.xlsx', sheet_name = 0)
# 获取1班的名字
cnt = df['姓名'].str[3:].astype(np.int16) == 1
df2 = df[cnt]
s = df2['男1000米跑分数']
# 把 Series 数据转为 DataFrame
# 重置行索引,0、1、2、3......
score = s.reset_index()[['男1000米跑分数']]
# 绘图
score.plot()

20.png

绘图虽然绘制出来了,但是报错一大堆,这是因为有中文的原因,我们接着继续处理:

接下来的处理方法涉及matplotlib属于超纲内容,可以不进行模拟,安装matplotlib见博文:matplotlib的安装教程以及简单调用

这是字体需要导包:import matplotlib.pyplot as plt

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 获取1班数据
df = pd.read_excel('./分数汇总.xlsx', sheet_name = 0)
# 获取1班的名字
cnt = df['姓名'].str[3:].astype(np.int16) == 1
df2 = df[cnt]
s = df2['男1000米跑分数']
# 把 Series 数据转为 DataFrame
# 重置行索引,0、1、2、3......
score = s.reset_index()[['男1000米跑分数']]
# 把字体设置为楷体(你的电脑上需有这个字体才能进行设置)
plt.rcParams['font.family'] = 'STKaiti'
# 调整字体大小
plt.rcParams['font.size'] = 18
# 绘图
score.plot()

21.png

7.2 对各项体侧指标进行分箱操作:不及格(0~59)、及格(60~69)、中等(70~79)、良好(80~89)、优秀(90~100)

columns = df.columns
for col in columns:
    if col.endswith('分数'):
        df[col] = pd.cut(df[col], bins = [0, 60, 70, 80, 90, 101],
                         labels = ['不及格', '及格', '中等', '良好', '优秀'],
                         right = False)
df2 = pd.read_excel('./分数汇总.xlsx', sheet_name = 1)
columns = df2.columns
for col in columns:
    if col.endswith('分数'):
        df2[col] = pd.cut(df2[col], bins = [0, 60, 70, 80, 90, 101],
                          labels = ['不及格', '及格', '中等', '良好', '优秀'],
                          right = False)

7.3 绘制全校男生1000米跑和男跳远的条形图(分箱操作后统计各个成绩水平数量)

# 获取男1000米跑分数的数据
s1 = df['男1000米跑分数'].value_counts()
s1.sort_index()
# 获取男跳远分数的数据
s2 = df['男跳远分数'].value_counts()
s2.sort_index()
# 合并成为一个新的 DataFrame
df3 = pd.DataFrame({'男1000米跑分数':s1, '男跳远分数':s2})
# 绘图
df3.plot.bar()

image.png

7.4 绘制全校女生50米跑和女仰卧的饼图(分箱操作后统计各个成绩水平的数量)

# 获取女50米跑分数的数据
s3 = df2['女50米跑分数'].value_counts()
s3 = s3.sort_index()
# 获取女仰卧分数的数据
s4 = df2['女仰卧分数'].value_counts()
s4 = s3.sort_index()
# 合并数据
df4 = pd.DataFrame({'女50米跑分数':s3, '女仰卧分数':s4})
df4.plot.pie(subplots = True)

image.png

更改一下我们的图像尺寸:

# 获取女50米跑分数的数据
s3 = df2['女50米跑分数'].value_counts()
s3 = s3.sort_index()
# 获取女仰卧分数的数据
s4 = df2['女仰卧分数'].value_counts()
s4 = s3.sort_index()
# 合并数据
df4 = pd.DataFrame({'女50米跑分数':s3, '女仰卧分数':s4})
df4.plot.pie(subplots = True, figsize = (16, 16))

22.png

显示各部分的百分比:

# 获取女50米跑分数的数据
s3 = df2['女50米跑分数'].value_counts()
s3 = s3.sort_index()
# 获取女仰卧分数的数据
s4 = df2['女仰卧分数'].value_counts()
s4 = s3.sort_index()
# 合并数据
df4 = pd.DataFrame({'女50米跑分数':s3, '女仰卧分数':s4})
# 显示百分比,百分比保留两位小数
df4.plot.pie(subplots = True, figsize = (16, 16), autopct = '%0.2f%%')

23.png

7.5 绘制男跳远、女跳远的堆叠条形图(分箱操作后统计各个成绩水平的数量)

# 获取男跳远分数的数据
s5 = df['男跳远分数'].value_counts()
s5 = s5.sort_index()
# 获取女跳远分数的数据
s6 = df2['女跳远分数'].value_counts()
s6 = s6.sort_index()
# 数据合并
df5 = pd.DataFrame({'男跳远分数':s5, '女跳远分数':s6})
# 绘制堆叠条形图
df5.plot.bar(stacked = True)

24.png


目录
相关文章
|
8月前
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
6月前
|
数据处理 Python
数据科学进阶之路:Pandas与NumPy高级操作详解与实战演练
【7月更文挑战第13天】探索数据科学:Pandas与NumPy提升效率的高级技巧** - Pandas的`query`, `loc`和`groupby`用于复杂筛选和分组聚合,例如筛选2023年销售额超1000的记录并按类别计总销售额。 - NumPy的广播和向量化运算加速大规模数据处理,如快速计算两个大数组的元素级乘积。 - Pandas DataFrame基于NumPy,二者协同加速数据处理,如将DataFrame列转换为NumPy数组进行标准化再回写,避免链式赋值。 掌握这些高级操作,实现数据科学项目的效率飞跃。
75 0
|
SQL 数据可视化 数据挖掘
Python 数据分析(四):Pandas 进阶
Python 数据分析(四):Pandas 进阶
98 0
Python 数据分析(四):Pandas 进阶
|
8月前
|
Python
Pandas进阶--map映射,分组聚合和透视pivot_table详解
Pandas进阶--map映射,分组聚合和透视pivot_table详解
169 0
|
8月前
|
机器学习/深度学习 数据可视化 数据处理
Pandas进阶学习:探索更多高级特性与技巧
【4月更文挑战第16天】本文深入探讨Pandas的进阶特性,包括向量化操作、apply方法、数据重塑、布尔索引、多重索引、性能优化和库集成。通过学习,可以提升数据处理效率,如使用布尔条件筛选、CategoricalDtype优化性能、分块处理大数据及与NumPy、Matplotlib、Seaborn和scikit-learn集成。掌握这些技巧能助你更好地挖掘数据价值。
|
数据挖掘 数据处理 Python
Pandas进阶:处理缺失数据和数据聚合
在本篇文章中,我们将深入探讨Pandas库中两个重要的数据处理功能:处理缺失数据和数据聚合。
|
数据挖掘 Java 索引
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十七)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
322 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十七)
|
存储 SQL 数据挖掘
【python进阶系列之pandas】数据处理的大佬 pandas之数据结构
这里是三岁,速学了pandas,怕自己不会用整理了一下资料,有问题的地方或者不对的希望大家多多指出,批评指正!!! 由于pandas的内容过多我们就把经常使用的进行解析,其他的我们后续逐步添加
356 0
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十三)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
147 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十三)
|
数据挖掘 索引 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十四)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
158 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas进阶(十四)

热门文章

最新文章