Pandas -----------------------基础知识(主要matplotlib知识)(七)

Dataframe变形

转置 T

import pandas as pddata = {'2022': [10, 30, 15, 20], '2023': [40, 50, 36, 21]}
df1 = pd.DataFrame(data, index=['q1', 'q2', 'q3', 'q4'])
print("原始数据框:")
print(df1)df2 = df1.Tprint("转换后数据框:")
print(df2)df3 = df2.Tprint("转换后数据框2:")
print(df3)

透视表

案例

# 目标: 优衣库的透视表
"""条件过滤: 只要线下根据 城市 分组根据 产品名称 判断, 再对产品的销售额求和
"""
# 1 加载数据
df = pd.read_csv("/root/pandas_code_ling/data/d_uniqlo.csv")
# df
# 2 过滤线下
df2 = df[df['销售渠道']=='线下']
df2
# 3 透视表
df2.pivot_table(index='城市',columns='产品名称', values='销售金额',aggfunc='sum',margins=True
)

matplotlib绘图基础

导包 

import matplotlib.pyplot as plt

折线图

基础对应 x y 一一对应 (-3,10)...

# 面向过程的版本
x = [-3, 5, 7] #准备数据的x轴坐标
y = [10, 2, 5] #准备数据的y轴坐标plt.figure(figsize=(15,3)) #figure 创建画布  figsize指定画布大小
plt.plot(x, y) #plot 绘图
plt.xlim(-5, 10) #xlim 设置x轴坐标的范围
plt.ylim(-3, 15) #ylim 设置y轴坐标的范围
plt.xlabel('X Axis',size=20) # 设置x轴标签  size字体大小
plt.ylabel('Y axis') # 设置y轴标签
plt.title('Line Plot',size=30) # 设置标题内容, size 字体大小
plt.show() #显示图片

# 面向对象 版本
fig, ax = plt.subplots(figsize=(15,3))  #创建坐标轴对象
ax.plot(x, y) #调用坐标轴的绘图方法
ax.set_xlim(0, 10) # 调用坐标轴的设置x轴上下限的方法
ax.set_ylim(-3, 8) 
ax.set_xlabel('X axis') # 调用坐标轴的设置x轴标签的方法
ax.set_ylabel('Y axis',size = 20) # 调用坐标轴的设置y轴标签的方法
ax.set_title('Line Plot',size = 30) # 调用坐标轴的设置标题的方法
plt.show() 

import matplotlib.pyplot as plt
import numpy as npxpoints = np.array([1, 2, 6, 8])
ypoints = np.array([3, 8, 1, 10])plt.plot(xpoints, ypoints)
plt.show()

实心圆 'o'
plt.plot(ypoints, 'r+')   
#%%
import matplotlib.pyplot as plt
import numpy as npxpoints = np.array([1, 8])
ypoints = np.array([3, 10])plt.plot(xpoints, ypoints,'o')
plt.show()

两条线
import matplotlib.pyplot as plt
import numpy as npx = np.arange(0,4*np.pi,0.1)   # start,stop,step
# print(x)
y = np.sin(x)
z = np.cos(x)
plt.plot(x,y,x,z)
plt.show()

标记、线型和颜色
import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, '^-.g')
plt.show()

标记 以及内外层颜色
import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, marker = 'o', ms = 20, mec = '#4CAF50', mfc = '#4CAF50')
plt.show()

一图多线 
# 简化
import matplotlib.pyplot as plt
import numpy as npy1 = np.array([3, 7, 5, 9])
y2 = np.array([6, 2, 13, 10])plt.plot(y1)
plt.plot(y2)plt.show()#原版
import matplotlib.pyplot as plt
import numpy as npx1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 7, 5, 9])
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 13, 10])plt.plot(x1, y1, x2, y2)
plt.show()

网格线
import numpy as np
import matplotlib.pyplot as pltx = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")plt.plot(x, y)plt.grid(axis='x') # 设置 y 就在轴方向显示网格线plt.show()

import numpy as np
import matplotlib.pyplot as pltx = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])plt.title("RUNOOB grid() Test")
plt.xlabel("x - label")
plt.ylabel("y - label")plt.plot(x, y)plt.grid(color = 'g', linestyle = '-.', linewidth = 1)plt.show()

主图下四个子图
import matplotlib.pyplot as plt
import numpy as np#plot 1:
x = np.array([0, 6])
y = np.array([0, 100])plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")#plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")#plot 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")plt.suptitle("RUNOOB subplot Test")
plt.show()

子图 以及共享轴坐标 散点图
import matplotlib.pyplot as plt
import numpy as np# 创建一些测试数据 -- 图1
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
# print(x)
# print('-----------------------')
# print(y)# 创建一个画像和子图 -- 图2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')# 创建两个子图 -- 图3
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)# 创建四个子图 -- 图4
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)# 共享 x 轴
plt.subplots(2, 2, sharex='col')# 共享 y 轴
plt.subplots(2, 2, sharey='row')
# 
# 共享 x 轴和 y 轴
plt.subplots(2, 2, sharex='all', sharey='all')# # 这个也是共享 x 轴和 y 轴
plt.subplots(2, 2, sharex=True, sharey=True)print('-----------------------------------------')
# 创建标识为 10 的图,已经存在的则删除
fig, ax = plt.subplots(num=10, clear=True)plt.show()

散点图 随机种子
import numpy as np
import matplotlib.pyplot as plt# 随机数生成器的种子
np.random.seed(19680801)N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radiiplt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度plt.title("RUNOOB Scatter Test") # 设置标题plt.show()

图例 以及色系
import matplotlib.pyplot as plt
import numpy as npx = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])plt.scatter(x, y, c=colors, cmap='viridis')plt.colorbar()plt.show()

柱状图
import matplotlib.pyplot as plt
import numpy as npx = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])plt.bar(x,y,color = ["r","g","b","k"],width = 0.8)
plt.show()

条形图
import matplotlib.pyplot as plt
import numpy as npx = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])plt.barh(x,y,color = "#4CAF50",height = 0.8)
plt.show()

饼图
plt.show()
#%%
import matplotlib.pyplot as plt
import numpy as npy = np.array([35, 25, 25, 15])plt.pie(y,labels=['A','B','C','D'], # 设置饼图标签colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色)
plt.title("RUNOOB Pie Test") # 设置标题
plt.show()

饼图样式
import matplotlib.pyplot as plt# 数据
sizes = [15, 30, 45, 10]# 饼图的标签
labels = ['A', 'B', 'C', 'D']# 饼图的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']# 突出显示第二个扇形
explode = (0.1, 0, 0.3, 0)# 绘制饼图
plt.pie(sizes, labels=labels, colors=colors,autopct='%1.1f%%', explode=explode, shadow=True, startangle=90)# 标题
plt.title("RUNOOB Pie Test")# 显示图形
plt.show()

直方图
import matplotlib.pyplot as plt
import numpy as np# 生成三组随机数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)# 绘制直方图
plt.hist(data1, bins=5, alpha=0.5, label='Data 1')
plt.hist(data2, bins=5, alpha=0.5, label='Data 2')
plt.hist(data3, bins=5, alpha=0.5, label='Data 3')# 设置图表属性
plt.title('RUNOOB hist() TEST')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()# 显示图表
plt.show()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 使用 NumPy 生成随机数
random_data = np.random.normal(170, 10, 250)
# print(random_data)
# print(random_data.size)# 将数据转换为 Pandas DataFrame
dataframe = pd.DataFrame(random_data)# 使用 Pandas hist() 方法绘制直方图
dataframe.hist()# 设置图表属性
plt.title('RUNOOB hist() Test')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')# 显示图表
plt.show()

 总结

①df.T 行变列、列变行

②透视表

以列名1作为索引
根据列名2进行分组
对列名3使用pandas内置的聚合函数进行计算
返回新的df对象


df.pivot_table(index='列名1', columns='列名2',values='列名3', aggfunc='内置聚合函数名',margins=True # 默认是False, 如果为True,就在最后一行和最后一列,按行按列分别执行aggfunc参数规定的聚合函数
)
# index:返回df的行索引,并依据其做分组;传入原始数据的列名
# columns:返回df的列索引;传入原始数据的列名,根据该列做分组
# values:  要做聚合操作的原始数据的列名
# aggfunc:内置聚合函数名字

③Matplotlib绘图步骤

  • 导入Matplotlib.pyplot

  • 准备数据

  • 创建图表,坐标轴

  • 绘制图表

  • 设置标题,x,y轴标题等

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

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

相关文章

计算机视觉算法知识详解(含代码示例)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

FRP搭建内网穿透:云服务端 + 家用Linux/Windows主机【2024】

介绍 FRP是一个可以自己搭建内网穿透服务的开源项目,开源地址直达: FRP-GitHub 实际上frp由两个程序组成 ①frps:在服务端运行的程序 ②frpc:在客户端运行的程序 运作方式示意图如下 服务端 因为服务上使用了1Panel面板,直接在应用商店安…

【算法系列-链表】删除链表的倒数第N个结点

【算法系列-链表】删除链表的倒数第N个结点 文章目录 【算法系列-链表】删除链表的倒数第N个结点1. 算法分析🛸2. 模拟解决问题2.1 思路分析🎯2.2 代码示例🌰 3. 双指针(快慢指针)解决问题3.1 思路分析🎯3.2 代码示例&#x1f330…

软件验证与确认实验二-单元测试

目录 1. 实验目的及要求.................................................................................................... 3 2. 实验软硬件环境.................................................................................................... 3 …

进阶岛第4关:InternVL 多模态模型部署微调实践

准备InternVL模型 我们使用InternVL2-2B模型。该模型已在share文件夹下挂载好,现在让我们把移动出来。 mkdir -p /root/project/joke/modelcp -r /root/share/new_models/OpenGVLab/InternVL2-2B /root/project/joke/model # 不用ln -s 准备环境 这里我们来手动配…

Brave编译指南2024 MacOS篇-构建与运行(六)

引言 在上一篇文章中,我们成功初始化了Brave浏览器的构建环境。现在,我们进入了这个编译指南的核心部分:实际构建Brave浏览器并运行它。这个过程将把我们之前准备的所有源代码和依赖项转化为一个可运行的浏览器实例。 1. 编译Brave浏览器 …

【进阶OpenCV】 (5)--指纹验证

文章目录 指纹验证1. 验证原理2. 读取图片3. 计算特征匹配点 总结 指纹验证 指纹验证基于人类指纹的独特性和稳定性。每个人的指纹在图案、断点和交叉点上各不相同,这种唯一性和终生不变性使得指纹成为身份验证的可靠手段。指纹识别技术通过采集和分析指纹图像&…

docker 部署nacos

目录 一、拉取镜像 二、部署 三、访问(默认是用内嵌数据库) 四、配置 五、重启容器 一、拉取镜像 docker pull nacos/nacos-server 二、部署 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --restartalways --privilegedt…

算法笔记(十)——队列+宽搜

文章目录 N 叉数的层序遍历二叉树的锯齿形层序遍历二叉树最大宽度在每个树行中找最大值 BFS是图上最基础、最重要的搜索算法之一; 每次都尝试访问同一层的节点如果同一层都访问完了,再访问下一层 BFS基本框架 void bfs(起始点) {将起始点放入队列中;标记…

Docker启动 Redis提示:Can‘t initialize Background Jobg

问题说明: 在使用docker启动redis失败,但是查看容器日志,除了提示 Fatal:Cant initialize Background Jobg,没有其他错误信息。经过长时间查找资料及试错,现记录下可能的产生原因及解决方案,以便以后参考。 产生原因&…

【漏洞复现】锐捷 RG-EW1200G 无线路由器 登录绕过

》》》产品描述《《《 锐捷网络RG-EW1200G是一款有线无线全千兆双频无线路由器Q,适合平层家居、别墅、小型店铺、SOHO办公等场景使用。设备性能卓越,足以满足千兆上网需求;信号强劲,信号功率功率提升3倍,覆盖距离提升近1倍覆盖能力…

【Linux】进程间关系与守护进程

超出能力之外的事, 如果永远不去做, 那你就永远无法进步。 --- 乌龟大师 《功夫熊猫》--- 进程间关系与守护进程 1 进程组2 会话3 控制终端4 作业控制5 守护进程 1 进程组 之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID(P…

算法: 二分查找题目练习

文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结精华模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target…

Pragmatic Task务实任务——指导语义通信的优化

1. 语义通信 语义通信(Semantic Communication)的核心理念是传递不仅仅是数据本身,而是数据所包含的“语义”或“意义”。这与传统通信系统不同,传统系统只注重如何准确、高效地传输数据,而语义通信则要求传输的信息能…

畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)

畅阅读系统小程序 目录 基于java的畅阅读系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

基金好书入门阅读笔记《基金作战笔记:从投基新手到配置高手的进阶之路》1

今年的新书《基金作战笔记:从投基新手到配置高手的进阶之路》,趁着国庆前这个风潮,拿来学习下。 第一章 军规 军规1:莫求暴富,为自己设定一个长期目标。 军规2:永不满仓,找到自己的资产配置中…

Pikachu-Sql Inject-数字型注入(GET)

一、、破解 SQL 查询语句中的字段数 ?id1 order by 3 -- // -- 是注释, 加号 在MySQL中会转成空格 order by 1 ,by 数字几,就是按照第几列进行排序;如果没有这一行,则报错 如:以下语句,根据…

Pytorch实现RNN实验

一、实验要求 用 Pytorch 模块的 RNN 实现生成唐诗。要求给定一个字能够生成一首唐诗。 二、实验目的 理解循环神经网络(RNN)的基本原理:通过构建一个基于RNN的诗歌生成模型,学会RNN是如何处理序列数据的,以及如何在…

微信小程序使用picker,数组怎么设置默认值

默认先显示请选择XXX。然后点击弹出选择列表。如果默认value是0的话&#xff0c;他就直接默认显示数组的第一个了。<picker mode"selector" :value"planIndex" :range"planStatus" range-key"label" change"bindPlanChange&qu…

使用Conda管理python环境的指南

1. 准备 .yml 文件 确保你有一个定义了 Conda 环境的 .yml 文件。这个文件通常包括环境的依赖和配置设置。文件内容可能如下所示&#xff1a; name: myenv channels:- defaults dependencies:- python3.8- numpy- pandas- scipy- pip- pip:- torch- torchvision- torchaudio2…