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 = 0
    for i in x:
        result += i
    return 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 "+ y
    return inner

func = 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 text

result = 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 pandarallel

pandarallel.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.1

a = 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,"日本")

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

干货两个常用的 Python 模块

干货|两个常用的 Python 模块 在日常开发工作中,经常会遇到这样的一个问题:要对数据中的某个字段进行匹配,但这个字段有可能会有微小的差异。比如同样是招聘岗位的数据,里面省份一栏有的写“广西”,有的写“广西壮族自…

产品软文推广方案怎么做,媒介盒子告诉你

软文营销现在已经成为许多企业进行宣传的手段,尤其是当新品发布的时候,更需要做好产品软文推广方案,让新产品的推广更加顺利,那么产品软文推广方案怎么开始?又该怎么做好呢?接下来就让媒介盒子告诉你。 一、…

springboot之RESTful接口与Swagger

一、RESTful GET获取资源、POST新建资源、PUT更新资源、DELETE删除资源。 RESTful两大特性 1、安全性:GET请求不会引起资源本身改变。 2、幂等性:对一个接口请求和多次请求返回的资源应该一致。 2xx:成功 4xx:客户端错误。 …

东方博宜 1397. 完美的偶数?

东方博宜 1397. 完美的偶数? 解题思路: 1 读取n个数存到数组里面 2 遍历数组中的每个数:判断每个数是否为偶数位;判断每个数的每个数位是否为偶数。 细节:for循环里面定义的变量只能在for循环内使用。 在遍历数组中的数…

就业班 第二阶段(python) 2401--4.7 day3 python3 函数

八、文件操作 1、读取键盘输入 input 获取标准输入,数据类型统一为字符串 #!/usr/bin/python # -*- coding: UTF-8 -*- str input("请输入:") print("你输入的内容是: ", str) 这会产生如下的对应着输入的…

使用阿里云服务器可以做什么?太多了

阿里云服务器可以干嘛?能干啥你还不知道么!简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等,阿里云百科aliyunbaike.com整理阿里云服务器的用途: 阿里云服务器活动 aliyunbaike.com…

nvm安装node方便版

直接去node官网(Index of /download/release/)下载以前版本,放到nvm的安装路径下(示例:C:\Users\Administrator\AppData\Roaming\nvm),以下图命名方式。 运行命令即可使用 如果报错npm不是外部或…

每日一题(leetcode31):下一个排列-思维

思路&#xff1a;从后往前找到第一个nums[i-1]>nums[i] 然后从后往前(len-1 -->i(包含))找到第一个大于nums[i-1]的数&#xff0c;与nums[i-1]交换&#xff0c;然后对下标区间为[i,len-1]的元素进行排序。 class Solution { public:void nextPermutation(vector<in…

ensp 通过cloud连接交换,通过本机直连telnet交换机

#连接图 #cloud配置 绑定本机一个虚拟网卡&#xff0c;勾选双向通信&#xff0c;这样就可以通过真机直接telent到交换机 #交换机配置 #需要将管理口ip配置为绑定的虚拟网卡同网段的IP&#xff0c;便于直接链接 system-view sysname s5700 undo info-center en telnet server…

Q1剧集市场复盘:2024爱优腾谁在领跑国产剧市场?

2024年Q1剧集市场的成绩单出炉了。 复盘2024年第一季度剧集市场&#xff0c;可以用“生机勃勃”四个字来形容&#xff0c;虽然和去年相比&#xff0c;今年的第一季度缺少了《狂飙》这样的头部大爆款&#xff0c;但市场大盘走势向好。 根据灯塔专业版统计&#xff0c;2024Q1剧…

算法-数论-蓝桥杯

算法-数论 1、最大公约数 def gcd(a,b):if b 0:return areturn gcd(b, a%b) # a和b的最大公约数等于b与a mod b 的最大公约数def gcd(a,b):while b ! 0:cur aa bb cur%bpassreturn a欧几里得算法 a可以表示成a kb r&#xff08;a&#xff0c;b&#xff0c;k&#xff0c…

论大数据服务化发展史

文章目录 引言正文单一指令阶段脚本化阶段用户界面操作阶段大模型AIOPS阶段总结 引言 一直想写一篇服务化相关的文章&#xff0c;那就别犹豫了现在就开始吧 正文 作为大数据基础架构工程师&#xff0c;业界也笑称“运维Boy”&#xff0c;日常工作就是在各个机器上部署以及维…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 3

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件…

C语言文件操作1

1.文件的基础知识 ⚀文件 ▶︎概念◀︎ 文件是指存储在外部存储器上的数据集合。 常见的有&#xff1a;磁盘、U盘等等。 ▶︎作用◀︎ 保存数据 ▶︎文件名◀︎ 文件是指文件的标识符号&#xff0c;每个文件都有一个文件名。 文件名主要由三部分组成:文件路径文件名字文件后…

JSP课设:学校招生系统(附源码+调试)

Java web学校招生系统 Java web学校招生系统功能概述 &#xff08;1&#xff09;登录模块&#xff1a;学校招生系统提供管理员和考生两者登录角色&#xff0c;分别对应不同的功能&#xff0c;登录信息存储在数据库中。 &#xff08;2&#xff09;前台浏览&#xff1a;学校招生…

医药行业痛点以及OKR解决方案

一、背景 随着医药行业的快速发展和市场竞争的加剧&#xff0c;企业面临着前所未有的挑战和机遇。为了在激烈的市场竞争中立于不败之地&#xff0c;某知名医药企业决定引入OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;管理模式&#xff0…

【多线程】进程process(进程的管理+进程的调度+分时复用(并发)+PCB)

文章目录 进程一、计算机的组成&#xff1a;1.指令&#xff08;Instruction&#xff09; 二、浅谈操作系统1.日常的操作系统1.操作系统内核内核&#xff1a;进程的隔离性&#xff1a; 三、进程&#xff08;process&#xff09;1.进程的概念2.进程的管理1.管理的两个角度&#x…

NAT网络地址转换原理解析

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

基于javassm实现的旅游景点线路网站

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.…

基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台

一、项目背景介绍&#xff1a; 随着社会信息化的快速发展&#xff0c;图书馆作为知识传播和学术研究的重要场所&#xff0c;扮演着不可替代的角色。然而&#xff0c;传统的图书馆借阅方式存在一些问题&#xff0c;如人工操作复杂、排队等待时间长、信息交流不便等。为了提高用户…