pandas(day6 图表)

一. 计算效率

1. 测量代码运行时间  %%time  %%timeit

单纯计算 代码块执行的时长
%%time
_sum(np.arange(6))
CPU times: total: 0 ns
Wall time: 1.66 ms用于多次运行代码块并计算平均执行时间
%%timeit
_sum(np.arange(6))738 ns ± 10.7 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)

2. 装饰器  @nb.jit     (import numba as nb) (提高执行的速度)

这个函数接受一个可迭代对象 x,并返回其所有元素的总和。
通过使用 @nb.jit(nopython=True) 装饰器,
函数将在 Numba 中被编译为机器码,以提高执行速度。@nb.jit(nopython = True)
def _sum(x):result = 0for i in x:result += ireturn result _sum(np.arange(100))

3. 闭包

  •  在一个函数内部定义了另一个函数,并且这个内部函数引用了外部函数的局部变量
  • 简单说就是函数下嵌套一个函数       
这里的outer 返回 inner 函数,然后 inner再当调用 outer("yx") 时,它会返回一个函数 inner,并且这个 inner 函数中的 x 被设定为 "yx"。
但是,inner 函数并不会立即执行,而是被返回给调用者。我们将返回的函数赋值给变量 func。
此时,func 实际上是一个函数,即 inner 函数。def outer(x):def inner(y):return x +  " like "+ yreturn innerfunc = outer("yx")
func("apple")结果是  yx  like apple

3.1 闭包和装饰器的结合


def outer(func):def inner(y):x = "吴雨龙"return func(x + "吃" + y)return inner@outer     #outer(my_func)
def my_func(text):return textresult = my_func("苹果")
print(result)  # 输出:吴雨龙吃苹果解释: @outer 装饰器 相当于把 my_func(苹果)整体 传给了 outer,
所以 outer(my_func(苹果))  -- inner(苹果)-- 

4. swifter   提高并行处理能力

通过 switer 可以提升 并行处理能力
import swifter 
df.swifter.apply(lambda x : x["数量"] * x["单价"],axis=1)

5. pandarallel

from pandarallel import pandarallelpandarallel.initialize(nb_workers=8)
初始化 Pandarallel 库,设置并行处理的工作线程数为 8。
这意味着在后续的 Pandas 操作中,可以同时使用多达 8 个工作线程来并行处理数据,
以提高数据处理速度。df.parallel_apply(np.sum,axis=1)
parallel_apply 函数会在多个工作线程上并行应用 np.sum 函数到数据框的每一行上,从而加速了计算过程。

二. 快速构图

1. np.linspace()  创建等间隔数组

用于创建等间隔的一维数组(向量)
np.linspace(1,10,num=20,endpoint=False)  
'''
array([1.  , 1.45, 1.9 , 2.35, 2.8 , 3.25, 3.7 , 4.15, 4.6 , 5.05, 5.5 ,5.95, 6.4 , 6.85, 7.3 , 7.75, 8.2 , 8.65, 9.1 , 9.55])
'''
闭区间  endpoint可以控制区间类型start  end ,  endpoint = True  区间是闭区间

2.  建立 x,y 轴. X大写, y 小写

  •    import scipy.stats as stats     
  • 使用 stats 来执行各种统计分析,比如计算均值、方差、概率密度函数、累积分布函数
# y = f(x)
X = np.linspace(-5,5,200)#概率密度函数  均值=中位数=众数=0   标准差=1
y = stats.norm.pdf(X) / np.max(stats.norm.pdf(X))

3. 线型图的绘制

3.1  需要的库
from matplotlib import pyplot as plt  #画图层
from matplotlib import style
import warnings
warnings.filterwarnings("ignore")
import scipy.stats as stats

 

 3.2  配置图的大小 颜色 字体等
获取所有的背景主题
print(style.available)#配置
style.use("fivethirtyeight")  #颜色主题plt.rcParams["figure.figsize"] = (10,6.18) # 尺寸大小 单位是英寸plt.rcParams["figure.dpi"] = 100   #清晰度plt.rcParams["font.sans-serif"] = ["SimHei"]  #微软黑体字plt.rcParams["axes.unicode_minus"] = False   #调控负号问题

 3.3 画图
线形图
plt.plot(X,y,label="PDF") label 是标签plt.fill(X,y,alpha=0.5) #透明度 y1 = stats.norm.cdf(X)  #累积分布函数plt.plot(X,y1,label="CDF")  plt.legend()  # 添加图例,就是说明那条线是哪一个刻度控制
plt.xticks(np.arange(-5,6)) #np.arange() 是左闭右开的  
plt.yticks(np.arange(0,11)/10)刻度轴标题
plt.xlabel("x的标题",fontsize=15)
plt.ylabel("y的标题",fontsize=15,c="red")注释部分
plt.text(-3.5,0.7,"我是注释")去除背景
plt.grid()保存图形
plt.savefig("./demo.png",dpi=100)

4.点线面控制
%matplotlib inline
X = np.linspace(-5,5,20)y = np.sin(X)'''
ls : 线的样式 - 实线  -- 虚线  : 虚线  -.感叹线
lw : 线宽
marker : 点样式 o s D d x X 
markersize : 点大小
markerfacecolor : 面的颜色
markeredgecolor : 边缘颜色
'''
plt.plot(X,y,ls=":",lw=1,marker="X",markersize=20,markerfacecolor="white",markeredgecolor="orange")标记数据for a,b in list(zip(X,y)):plt.text(a-0.15,b-0.01,s=round(b,2),fontsize=10,color="#ff00005f")s = : s后面写的是你要标记的数据

4.柱状图


#不要使用 数字以外 的数据作为轴plt.bar(np.arange(data.index.size),data.金额,width=.4) 画图的时候 ,x轴使用的  城市的 下标xticks 可以执行映射  把数字部分 替换程  文字部分
plt.xticks(np.arange(data.index.size),data.index,rotation=90)
rotation 是把横坐标 字进行转动for a,b in list(zip(np.arange(data.index.size),data.金额)):plt.text(a-.1,b,b,rotation=90)这里的 zip(np.arange(data.index.size) 是因为 直接使用 文字作为横坐标
下面不能 调整 他的位置,因为不能对齐进行加减

 空画布画法: 

        针对某一个画布时:要用set_xticks

plt.figure(figsize=(20,6))
#不要使用 数字以外 的数据作为轴#1.生成一个空画布
axes1 = plt.gca()#2.把金额的柱状图绘制在 画布1
axes1.bar(np.arange(data.index.size),data.金额,width=.4,color='r',label="销售额")  #画图的时候 ,x轴使用的  城市的 下标#3. 公用一条轴
axes2 = axes1.twinx()   #返回画布2# +.4 偏移图形
axes2.bar(np.arange(data.index.size)+.4,data.数量,width=.4,label="销量")#xticks 可以执行映射  把数字部分 替换程  文字部分
axes1.set_xticks(np.arange(data.index.size),data.index,rotation=90)for a,b in list(zip(np.arange(data.index.size),data.金额)):axes1.text(a-.1,b,b,rotation=90)for a,b in list(zip(np.arange(data.index.size),data.数量)):axes2.text(a+.25,b,b,rotation=90)axes1.grid(False)
axes2.grid(False)#调节legend的位置
axes1.legend(loc=[0,1])  # 当前的 1 比例是整个画布的长度或宽度比例
axes2.legend(loc=[0.1,1])

5.多图组合

#1.先设置空画布axes1 = plt.gca()#2.在空画布当中绘制图形  ,x轴 最好使用 索引
inds = np.arange(data.index.size)axes1.bar(inds,data.金额,color="purple",label="销售额")#3.将x轴进行映射
axes1.set_xticks(inds,data.index,rotation=90,fontsize=10)#4.设置共轴axes2 = axes1.twinx()axes2.plot(inds,data.数量,color="orange",alpha=0.8,ls="--",lw=1.5,marker="o",markerfacecolor="b",label="销量")#5.设置y轴的标签
axes1.set_ylabel("销售额(元)")axes2.set_ylabel("销量(件)")#6.设置图例
axes1.legend(loc=[0,1.1])
axes2.legend(loc=[0,1.04])axes1.grid(False)

6. 直方图 

pd.cut(d,bins=10)  分箱
plt.hist(d,bins=10)

7. 饼图

import seaborn as sns   颜色调色板
sns.palplot(sns.color_palette("hls",10)) 设置的颜色#获取最大值索引
mi = da.金额.reset_index(drop=True).idxmax()
#飞离效果 数组生成
ex = np.zeros(da.shape[0])
ex[mi]=0.1a = plt.pie(da.金额,labels=da.index,colors = sns.color_palette("hls",da.shape[0]),autopct="%.2f%%",  # 计算每块的比例explode = ex,       # 分离效果wedgeprops={"width":.4},  # 宽带边缘属性pctdistance=0.75,          # 就是调整比例数值位置textprops={"fontsize":10,"color":"k"} #比例数字属性
)plt.legend(labels=[f"{a}={b}元" for a,b in  zip(da.index,da.金额)],loc=[0,-.4],ncol=2)

8. 旭日图 

plt.pie(total.金额,colors = sns.color_palette("summer",total.shape[0]),autopct="%.2f%%",radius=0.5, #半径
)a = plt.pie(tmp.金额,labels=tmp.省份,colors = sns.color_palette("summer",tmp.shape[0]),explode=np.full(tmp.shape[0],0.01),wedgeprops={"width":.4},pctdistance=0.75,textprops={"fontsize":10,"color":"k"}
)plt.text(0.1,0.1,"中国")# plt.text(0.1,-0.1,"日本")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java常用设计模式介绍及代码示例

设计模式是在软件设计中发现、研究和应用的一种有效方法。设计模式并不直接转化成代码,而是提供了解决某一问题的框架。下面介绍一些常用的设计模式以及对应的Java代码示例: 1. 单例模式:确保某一个类只有一个实例,同时提供一个访…

java流式计算Stream

java流式计算Stream 流(Stream)到底是什么呢? 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 “集合讲的是数据,流讲的是计算! ” 特点: Stream自己不会存储元素。 Stream不会改变源对象。相反&#x…

金三银四面试题(十六):MySQL面试都问什么(1)

在开发岗位面试中,MySQL基本是必考环节。所以接下来我们就进入MySQL八股文环节,看看都有哪些高频考题。 MySQL 中有哪些不同的表格? 在MySQL中,可以创建多种不同类型的表格,其中一些常见的类型包括: InnoD…

代码随想录第18天: 二叉树part05

力扣513 找树左下角的值 class Solution {public int findBottomLeftValue(TreeNode root) {Queue<TreeNode> que new LinkedList<>();que.offer(root);int res 0;while(!que.isEmpty()) {int size que.size();for(int i 0; i < size; i) {TreeNode tmp q…

Git(8)之分支间同步特定提交

Git(8)之分支间同步特定提交 Author&#xff1a;Once Day Date&#xff1a;2024年4月7日 漫漫长路有人对你微笑过嘛… 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客 文章目录 Git(8)之分支间同步特定提交1. 分支间同步提交2. cherry-pick同步分支间的特定提交…

docker打包haproxy并代理web或mysql集群

1、需求&#xff1a; 使用haproxy代理两个服务&#xff08;web服务或者是mysql服务&#xff09; 2、编写Dockerfile 2.1、创建Dockerfile专用目录 mkdir /docker/images/haproxy -p && cd /docker/images/haproxy 2.2、下载软件包到Dockerfile专用目录 curl -O h…

性能优化-如何爽玩多线程来开发

前言 多线程大家肯定都不陌生&#xff0c;理论滚瓜烂熟&#xff0c;八股天花乱坠&#xff0c;但是大家有多少在代码中实践过呢&#xff1f;很多人在实际开发中可能就用用Async&#xff0c;new Thread()。线程池也很少有人会自己去建&#xff0c;默认的随便用用。在工作中大家对…

ThingsBoard通过MQTT发送属性数据

MQTT基础 客户端 MQTT连接 属性上传API 案例 MQTT基础 MQTT是一种轻量级的发布-订阅消息传递协议&#xff0c;它可能最适合各种物联网设备。 你可以在此处找到有关MQTT的更多信息&#xff0c;ThingsBoard服务器支持QoS级别0&#xff08;最多一次&#xff09;和QoS级别1&…

3D打印技术引领压铸模具制造新变革

随着工业4.0浪潮的席卷&#xff0c;3D打印技术以其独特优势&#xff0c;正逐渐成为新一轮工业革命中的璀璨明星。这一技术不仅为“中国制造”向“中国智造”的转型提供了强大动力&#xff0c;也为压铸模具这一铸造行业的重要分支带来了前所未有的变革。 压铸模具&#xff0c;作…

文心一言指令词宝典之咨询分析篇

作者&#xff1a;哈哥撩编程&#xff08;视频号、抖音、公众号同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5;…

深入浅出理解ArrayBuffer对象TypedArray和DataView视图

目录 举例理解 1. ArrayBuffer对象 2. TypedArray 3. DataView 总结 具体讲解 1. ArrayBuffer对象 2. TypedArray 3. DataView 注意事项 举例理解 先举个简单的例子理解ArrayBuffer对象TypedArray和DataView视图的概念和之间的关系 1. ArrayBuffer对象 想象一个场景…

2024.2.17力扣每日一题——N叉树的层序遍历

2024.2.17 题目来源我的题解方法一 广度优先搜索&#xff08;队列实现&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;429 我的题解 方法一 广度优先搜索&#xff08;队列实现&#xff09; 和二叉树的层序遍历相同&#xff0c;只是在添加子节点的细节有所不…

NAT网络地址转换原理解析

NAT&#xff08;Network Address Translation&#xff09;&#xff0c;即网络地址转换&#xff0c;是一种在1994年提出的地址转换技术。它的主要目的是在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局IP地址。NAT实际上是为解决IPv4地址短缺而开发的技术。NAT…

MBTI测试背后的心理学原理:为什么它能揭示你的职业性格?(包含开源免费的API接口)

MBTI简介 迈尔斯-布里格斯类型指标&#xff08;Myers–Briggs Type Indicator&#xff0c;MBTI&#xff09;是由美国作家伊莎贝尔布里格斯迈尔斯和她的母亲凯瑟琳库克布里格斯共同制定的一种人格类型理论模型。 该指标以瑞士心理学家卡尔荣格划分的8种心理类型为基础&#xff…

[算法前沿]--022-使用 StarCoder 创建一个编程助手

文章目录 StarCoder调优测试StarCoder BigCode 开发的 StarCoder,这是一个在一万亿的 token、80 多种编程语言上训练过的 16B 参数量的模型。训练数据多来自 GitHub 上的 issues、使用 Git 提交的代码、Jupyter Notebook 等等 。得益于对企业友好的许可证、长度为 8192 的 to…

Mojo编程语言案例及介绍

Mojo是一种新兴的编程语言&#xff0c;它结合了现代编程范式与简洁易读的语法&#xff0c;为开发者提供了一个强大且高效的开发工具。以下将详细介绍Mojo编程语言的特性&#xff0c;并通过一个实际案例来展示Mojo的应用。 一、Mojo编程语言介绍 Mojo编程语言的设计理念是“简单…

以诚待人,用心做事,做到最好,追求更好

无数个日日夜夜&#xff0c;终于换来了这样一份努力的证明。 2023年&#xff0c;收获满满&#xff0c;前一阵子拿到了证书&#xff0c;忘记拍照了&#xff0c;今天抽空记录一下 收获&#xff01;又得到一份肯定&#xff0c;这份荣誉证书将伴随我一直为了进步而奋斗&#xff1a…

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的基于个人需求和地域特色的外卖推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

非关系型数据库(缓存数据库)redis的集群

目录 一.群集模式——Cluster 1.原理 2.作用 3.特点 4.工作机制 哈希槽 哈希槽的分配 哈希槽可按照集群主机数平均分配&#xff08;默认分配&#xff09; 根据主机的性能以及功能自定义分配 redis集群的分片 分片 如何找到给定key的分片 优势 二. 搭建Redis群集…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看&#xff0c;忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的&#xff0c;顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化&#xff0c;但是迁移过程发生些小插曲&#xff0c;在此记录…