Pandas 【Chapter 4】

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas 【Chapter 4】相关的知识,希望对你有一定的参考价值。

参考技术A 想要实现分组操作,必须明确三个要素:分组依据 、 数据来源 、 操作及其返回结果 。

需要根据多个维度进行分组,只需在 groupby 中传入相应列名构成的列表即可

首先要了解一些直接定义在groupby对象的聚合函数,因为它的速度基本都会经过内部的优化,使用功能时应当优先考虑。根据返回标量值的原则,包括如下函数: max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod 。

在 groupby 对象中,定义了 filter 方法进行组的筛选,其中自定义函数的输入参数为数据源构成的 DataFrame 本身,在之前例子中定义的 groupby 对象中,传入的就是 df[['Height', 'Weight']]

数据可视化实例(十五):有序条形图(matplotlib,pandas)

偏差 (Deviation)

有序条形图 (Ordered Bar Chart)

有序条形图有效地传达了项目的排名顺序。 但是,在图表上方添加度量标准的值,用户可以从图表本身获取精确信息。

https://datawhalechina.github.io/pms50/#/chapter15/chapter15

导入所需要的库

import numpy as np              # 导入numpy库
import pandas as pd             # 导入pandas库
import matplotlib as mpl        # 导入matplotlib库
import matplotlib.pyplot as plt
import seaborn as sns           # 导入seaborn库

设定图像各种属性

large = 22; med = 16; small = 12

params = {axes.titlesize: large,    # 设置子图上的标题字体
            legend.fontsize: med,     # 设置图例的字体
            figure.figsize: (16, 10), # 设置图像的画布
           axes.labelsize: med,      # 设置标签的字体
            xtick.labelsize: med,     # 设置x轴上的标尺的字体
            ytick.labelsize: med,     # 设置整个画布的标题字体
          figure.titlesize: large}  
plt.rcParams.update(params)           # 更新默认属性
plt.style.use(seaborn-whitegrid)    # 设定整体风格
sns.set_style("white")                # 设定整体背景风格

程序代码

# step1:导入数据
df_raw = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")
df = df_raw[[cty, manufacturer]].groupby(manufacturer).apply(lambda x:x.mean())
df.sort_values(cty, inplace = True)
df.reset_index(inplace = True)

# step2:绘制有序条形图
    # 创建画布对象以及子图对象
fig,ax = plt.subplots(figsize = (16, 10),    # 画布尺寸
                     facecolor = white,    # 画布颜色
                     dpi = 80)               # 分辨率
    # 绘制柱状图
ax.vlines(x = df.index,                 # 横坐标
         ymin = 0,                      # 柱状图在y轴的起点
         ymax = df.cty,                 # 柱状图在y轴的终点
         color = firebrick,           # 柱状图的颜色
         alpha = 0.7,                   # 柱状图的透明度
         linewidth = 20)                # 柱状图的线宽

# step3:添加文本
    # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,
for i, cty, in enumerate(df.cty):       
    ax.text(i,                                  # 文本的横坐标位置
            cty+0.5,                            # 文本的纵坐标位置
            round(cty, 1),                      # 对文本中数据保留一位小数
            horizontalalignment = center)     # 相对于xy轴,水平对齐

# step4:装饰
ax.set_title(Bar Chart for Highway Mileage,   # 子图标题名称
            fontdict = {size: 22})            # 标题字体尺寸
ax.set(ylabel = Miles Per Gallon,             # 纵坐标的标题名称
      ylim = (0,30))                            # 纵坐标的取值范围
    # 横坐标的刻度标尺
plt.xticks(df.index,                            # 横坐标的刻度位置
          df.manufacturer.str.upper(),          # 刻度标尺的内容(先转化为字符串,再转换为大写)
          rotation = 60,                        # 旋转角度
          horizontalalignment = right,        # 相对于刻度标尺右移
          fontsize = 12)                        # 字体尺寸

# step5:添加补丁
    # 添加绿色的补丁
p1 = patches.Rectangle((0.57, -0.005),                # 矩形左下角坐标 
                      width = 0.33,                   # 矩形的宽度
                      height = 0.13,                  # 矩形的高度
                      alpha = 0.1,                    # 矩阵的透明度
                      facecolor = green,            # 是否填充矩阵(设置为绿色)
                      transform = fig.transFigure)    # 保持矩形显示在图像最上方
    # 添加红色的补丁
p2 = patches.Rectangle((0.124, -0.005),               # 矩形左下角坐标
                      width = 0.446,                   # 矩形的宽度
                      height = 0.13,                  # 矩形的高度
                      alpha = 0.1,                    # 矩阵的透明度
                      facecolor = red,              # 是否填充矩阵(设置为红色)
                      transform = fig.transFigure)     # 保持矩形显示在图像最上方
    # 将补丁添加至画布
fig.add_artist(p1)    # 将p1添加至画布上
fig.add_artist(p2)    # 将p2添加至画布上
plt.show()            # 显示图像

技术图片

 

 

matplotlib.pyplot.vlines

matplotlib.pyplot.vlines(x, ymin, ymax, colors=k, linestyles=solid, label=‘‘, *, data=None, **kwargs)[源代码]

绘制垂直线。

在每个位置绘制垂直线 x 从 ymin 到 ymax .

参数:
x 标量或一维数组

x-绘制线条的索引。

YMIN,YMAX 标量或一维数组

每行的开始和结束。如果提供标量,则所有行的长度都相同。

colors 类似颜色的数组,可选,默认值:“k”
直线运动 ‘solid‘、‘dashdot‘、‘dashdot‘、‘dotted‘,可选
标签 字符串,可选,默认:“”
返回:
线 : LineCollection LineCollection
其他参数:
**kwargs : LineCollection 性质。 LineCollection属性。

以上是关于Pandas 【Chapter 4】的主要内容,如果未能解决你的问题,请参考以下文章

零元学Expression Design 4 - Chapter 4 教你如何自制超炫笔刷

Python Machine Learning-Chapter4

Chapter 4(栈与队列)

Chapter 4 Invitations——2

Chapter 4 Invitations——9

Chapter 4 Invitations——8