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 .
参数: |
|
---|---|
返回: |
|
其他参数: |
|
以上是关于Pandas 【Chapter 4】的主要内容,如果未能解决你的问题,请参考以下文章
零元学Expression Design 4 - Chapter 4 教你如何自制超炫笔刷