【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)
目录
1 Pandas 可视化功能
2 Pandas绘图实例
2.1 绘制线图
2.2 绘制柱状图
2.3 绘制随机散点图
2.4 绘制饼图
2.5 绘制箱线图A
2.6 绘制箱线图B
2.7 绘制散点图矩阵
2.8 绘制面积图
2.9 绘制热力图
2.10 绘制核密度估计图
1 Pandas 可视化功能
pandas是一个强大的数据分析库,提供了一些可视化工具来帮助用户更好地理解和展示数据。以下是pandas可视化工具的一些常见功能:
1. 折线图:通过plot()函数可以绘制折线图,展示数据随时间或其他变量的变化趋势。
2. 散点图:使用scatter()函数可以绘制散点图,在二维平面上展示两个变量之间的关系。
3. 条形图:使用bar()函数可以绘制条形图,用于比较不同类别或组的数值大小。
4. 直方图:使用hist()函数可以绘制直方图,用于展示数值型数据的分布情况。
5. 饼图:使用pie()函数可以绘制饼图,展示不同类别的占比情况。
6. 箱线图:使用boxplot()函数可以绘制箱线图,展示数值型数据的分布特征、离群值等。
Pandas 是一个用于数据处理和分析的流行库,它提供了一些内置的可视化功能,通常基于 Matplotlib 这个底层库。
-
绘制线图:
df['column_name'].plot(kind='line')
绘制柱状图:
df['column_name'].plot(kind='bar')
绘制散点图:
df.plot(x='x_column', y='y_column', kind='scatter')
hist()函数:hist()函数用于绘制直方图,以显示数据的分布和频率。
df['column_name'].hist(bins=10)
boxplot()函数:boxplot()函数用于绘制箱线图,显示数据的分位数和离群值。
df.boxplot(column='column_name')
scatter_matrix()函数:scatter_matrix()函数用于绘制多个变量之间的散点图矩阵,有助于了解变量之间的关系。
from pandas.plotting import scatter_matrixscatter_matrix(df, alpha=0.5, figsize=(8, 8), diagonal='hist')
plotting.scatter_matrix()函数:这是一个更高级的散点图矩阵绘制函数,可以自定义每个子图的属性。
from pandas.plotting import scatter_matrixscatter_matrix(df, alpha=0.5, figsize=(8, 8), diagonal='kde', color='red')
plot.barh()函数:plot.barh()函数用于绘制水平柱状图。
df['column_name'].plot(kind='barh')
plot.pie()函数:plot.pie()函数用于绘制饼图,用于显示数据的占比。
df['column_name'].plot(kind='pie', autopct='%1.1f%%')
plot.area()函数:plot.area()函数用于绘制堆叠面积图,显示数据的累积变化趋势。
df.plot.area()
plot.kde()函数:plot.kde()函数用于绘制核密度估计图,显示数据的概率密度分布。
2 Pandas绘图实例
2.1 绘制线图
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建数据
data = {'年份': [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017],'销售额': [100, 150, 120, 180, 200, 250, 300, 280]}# 转换为DataFrame格式
df = pd.DataFrame(data)# 绘制折线图
plt.plot(df['年份'], df['销售额'], marker='o')# 设置x轴和y轴标签、标题
plt.xlabel('年份')
plt.ylabel('销售额')
plt.title('销售额变化趋势')# 添加图例
plt.legend(['销售额'])# 显示图形
plt.show()

当使用Pandas绘制柱状图、散点图和饼图时,您可以使用plot()函数的不同kind参数来指定要绘制的图表类型。
2.2 绘制柱状图
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 替换为您系统中支持的字体
# 创建一个示例DataFrame
data = {'Category': ['A', 'B', 'C', 'D'],'Values': [10, 15, 7, 12]}df = pd.DataFrame(data)# 绘制柱状图
df.plot(x='Category', y='Values', kind='bar', title='柱状图')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()

2.3 绘制随机散点图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 替换为您系统中支持的字体
# 生成随机数据
np.random.seed(0) # 设置随机种子以确保可重复性
num_points = 100
x = np.random.rand(num_points) # 随机生成x坐标
y = np.random.rand(num_points) # 随机生成y坐标
colors = np.random.rand(num_points) # 随机生成颜色值# 创建DataFrame
data = {'X': x, 'Y': y, 'Color': colors}
df = pd.DataFrame(data)# 绘制散点图
plt.figure(figsize=(8, 6)) # 设置图形大小
plt.scatter(x='X', y='Y', c='Color', data=df, cmap='viridis', alpha=0.7)
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('随机散点图')
plt.colorbar(label='颜色')
plt.show()

上述示例中,我们首先使用NumPy生成了一些随机的x和y坐标数据,以及随机的颜色值。然后,我们将这些数据放入一个Pandas DataFrame 中,并使用Matplotlib绘制了散点图。颜色使用了色彩映射(cmap),并添加了颜色条(colorbar)以显示颜色映射的对应关系。
2.4 绘制饼图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 替换为您系统中支持的字体# 创建一个示例DataFrame,包含不同类别的值
data = {'Category': ['A', 'B', 'C', 'D'],'Values': [10, 15, 7, 12]}df = pd.DataFrame(data)# 指定用于饼图的数值列和标签列
values = df['Values']
labels = df['Category']# 绘制饼图
plt.figure(figsize=(6, 6)) # 设置图形大小
df.plot(y='Values', kind='pie', labels=df['Category'], autopct='%1.1f%%', title='饼图') # 绘制饼图
plt.title('饼图') # 设置图表标题# 显示图表
plt.axis('equal') # 使饼图保持圆形
plt.show()

在上述示例中,首先创建了一个包含类别和对应数值的DataFrame。然后,使用
plt.pie()函数来绘制饼图,其中values包含数值数据,labels包含饼图的标签。autopct参数用于显示百分比标签,startangle参数用于指定饼图的起始角度。最后,使用plt.axis('equal')确保饼图保持圆形。
2.5 绘制箱线图A
import pandas as pd
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['SimHei']# 创建示例数据集
data = {'Product_A': [random.randint(50, 100) for _ in range(50)],'Product_B': [random.randint(40, 90) for _ in range(50)],'Product_C': [random.randint(60, 110) for _ in range(50)],'Product_D': [random.randint(30, 70) for _ in range(50)],'Product_E': [random.randint(20, 80) for _ in range(50)],'Product_F': [random.randint(70, 120) for _ in range(50)]
}df = pd.DataFrame(data)# 使用boxplot()函数绘制箱线图
df.boxplot(column=['Product_A', 'Product_B', 'Product_C', 'Product_D', 'Product_E', 'Product_F'])# 添加标题和标签
plt.title('不同产品销售数据箱线图')
plt.ylabel('销售数量')# 显示图形
plt.show()

在这个示例中,我们创建了一个包含6种产品的示例DataFrame
df,每种产品有50个销售数据点。然后,我们使用boxplot()函数绘制了这6种产品的箱线图。箱线图将展示每种产品的销售数量分布情况,包括中位数、四分位数、离群值等信息。通过比较不同产品的箱线图,您可以更好地了解它们的销售数据分布,以便进行进一步的分析和决策。这种可视化方法可以帮助您分析潜在的销售趋势和异常情况。
2.6 绘制箱线图B
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体# 创建一个示例数据集,包括三个组的数据
data = pd.DataFrame({'Group1': np.random.normal(0, 1, 100),'Group2': np.random.normal(2, 1, 100),'Group3': np.random.normal(1, 1, 100),'Group4': np.random.normal(3, 1, 100)
})# 使用boxplot()函数绘制箱线图,指定显示的列和参数
data.boxplot(column=['Group1', 'Group2', 'Group3', 'Group4'],notch=True, # 添加缺口以估计中位数的不确定性sym='o', # 设置异常值标记为圆圈vert=False, # 水平显示箱线图patch_artist=True, # 填充箱体颜色showmeans=True, # 显示均值点meanline=True, # 显示均值线widths=0.5 # 箱体宽度)# 添加标题和标签
plt.title('箱线图示例')
plt.xlabel('值')
plt.ylabel('分组')# 显示图形
plt.show()

在这个示例中,我们创建了一个包含四个组的示例DataFrame
data,每个组有100个随机数。然后,我们使用boxplot()函数绘制箱线图,并自定义了多个参数:
notch=True:在箱体中添加缺口以估计中位数的不确定性。sym='o':将异常值标记为圆圈。vert=False:水平显示箱线图。patch_artist=True:填充箱体颜色。showmeans=True:显示均值点。meanline=True:显示均值线。widths=0.5:设置箱体宽度。其中每个箱体表示一个组的数据分布情况。箱线图还显示了中位数、均值点和异常值。这种可视化工具有助于比较多个组的数据分布,并检测异常值。
2.7 绘制散点图矩阵
pandas.plotting.scatter_matrix()函数用于绘制多个变量之间的散点图矩阵,帮助您了解各个变量之间的关系。这个函数可以自定义每个子图的属性,包括颜色、标记、直方图和核密度估计等。下面是一个详细的示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建一个包含多个变量的示例数据集
data = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D'])# 使用scatter_matrix()函数绘制散点图矩阵
# 主要参数包括DataFrame对象,alpha(透明度),diagonal(对角线上的图表类型),color(颜色),marker(标记类型)等
scatter_matrix(data, alpha=0.8, figsize=(8, 8), diagonal='hist', color='blue', marker='o')# 添加标题
plt.suptitle('散点图矩阵示例')# 显示图形
plt.show()

在这个示例中,我们首先创建了一个包含四个随机变量的示例DataFrame
data。然后,我们使用scatter_matrix()函数绘制散点图矩阵,指定了一些参数:
alpha参数设置透明度,这样可以看到重叠点。figsize参数设置图形的大小。diagonal参数设置对角线上的图表类型,这里使用直方图。color参数设置散点的颜色。marker参数设置散点的标记类型。最后,我们添加了标题并显示图形。
2.8 绘制面积图
面积图 (Area Plot)
面积图用于可视化时间序列或有序数据的变化趋势,通常用于显示数据的累积变化
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']# 创建示例数据集
data = {'Year': [2000, 2001, 2002, 2003, 2004],'Product_A': [100, 120, 140, 160, 180],'Product_B': [80, 90, 110, 130, 150]
}df = pd.DataFrame(data)# 使用plot()函数创建面积图
plt.figure(figsize=(8, 6))
plt.stackplot(df['Year'], df['Product_A'], df['Product_B'], labels=['Product_A', 'Product_B'], alpha=0.7)
plt.xlabel('年份')
plt.ylabel('销售数量')
plt.title('面积图示例')
plt.legend(loc='upper left')
plt.show()
在上述示例中,我们首先创建了一个包含年份和两种产品销售数量的示例DataFrame。然后,使用
stackplot()函数创建面积图,alpha参数设置透明度,labels参数设置图例标签,legend()函数用于显示图例。

2.9 绘制热力图
热力图 (Heatmap)
热力图用于可视化矩阵数据中各个元素之间的关系,通常通过颜色来表示数值的大小。
要在Pandas中绘制热力图,通常需要使用辅助库,最常见的是Seaborn和Matplotlib。Seaborn提供了高级的热力图绘制函数,而Matplotlib用于显示图形。以下是如何在Pandas中使用Seaborn和Matplotlib绘制热力图的示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsplt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体# 创建示例数据集
data = np.random.rand(5, 5) # 5x5的随机矩阵# 转换为DataFrame
df = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])# 使用seaborn的heatmap()函数创建热力图
plt.figure(figsize=(8, 6))
sns.heatmap(df, annot=True, cmap='coolwarm', linewidths=.5)
plt.title('热力图示例')
plt.show()

在上述示例中,我们首先创建了一个随机矩阵,并将其转换为Pandas DataFrame。然后,使用Seaborn的
heatmap()函数来绘制热力图。参数annot=True用于在图表上显示数值标签,cmap用于设置颜色映射,linewidths用于设置单元格之间的间隔线宽度。
2.10 绘制核密度估计图
plot.kde()函数:plot.kde()函数用于绘制核密度估计图,显示数据的概率密度分布。
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] #替换为系统中支持的字体# 创建示例数据集
data = {'Values': [10, 15, 13, 18, 25, 12, 22, 27, 16, 21]}df = pd.DataFrame(data)# 使用plot.kde()函数创建核密度估计图
df['Values'].plot.kde()
plt.xlabel('数值')
plt.ylabel('概率密度')
plt.title('核密度估计图示例')
plt.show()

在这个示例中,我们首先创建了一个包含示例数据的DataFrame
df,然后使用plot.kde()函数绘制核密度估计图。这个图表显示了数据的概率密度分布,它是一个平滑的曲线,代表了数据在不同数值上的概率密度。
相关文章:
【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)
目录 1 Pandas 可视化功能 2 Pandas绘图实例 2.1 绘制线图 2.2 绘制柱状图 2.3 绘制随机散点图 2.4 绘制饼图 2.5 绘制箱线图A 2.6 绘制箱线图B 2.7 绘制散点图矩阵 2.8 绘制面积图 2.9 绘制热力图 2.10 绘制核密度估计图 1 Pandas 可视化功能 pandas是一个强大的数…...
2023华为产品测评官-开发者之声 | 华为云CodeArts征文活动,多重好礼邀您发声!
"2023华为产品测评官-开发者之声"活动激发了众多开发者和技术爱好者的热情,他们纷纷递交了精心编写的产品测评报告。活动社群充满活力,参与者们热衷于交流讨论,互相帮助解决问题,一起探索云技术的无限可能。…...
Python 图形化界面基础篇:获取文本框中的用户输入
Python 图形化界面基础篇:获取文本框中的用户输入 引言 Tkinter 库简介步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口步骤3:创建文本框步骤4:获取文本框中的用户输入步骤5:启动 Tkinter 主事件循环 完整…...
【驱动开发】实现三盏灯的控制,编写应用程序测试
head.h #ifndef __HEAD_H__ #define __HEAD_H__//LED1:PE10 //LED2:PF10 //LED3:PE8#define LED_RCC 0X50000A28 //使能GPIO#define LED_MODER 0X50006000 //设置输出模式 #define LED_ODR 0X50006014 //设置输出高低电平#define LED2_MODER 0X50007000 …...
Vue3+ElementUI使用
<!DOCTYPE html> <html> <head><meta charset"UTF-8"><meta name"viewport" content"initial-scale1.0,maximum-scale1.0,minimum-scale1.0,user-scalable0, widthdevice-width"/><!-- 引入样式 --><lin…...
MySQL 和 MariaDB 版本管理的历史背景及差异
目录 MariaDB MySQL 差异 关于 SQLE SQLE 获取 了解更多 需要说明的是 MySQL 和 MariaDB 都有社区版和企业版。对于 MySQL,这两个版本都是由同一家公司(Oracle)提供,遵循相同的版本编号体系,企业版包含更丰富…...
linux驱动开发--day4(字符设备驱动注册内部流程、及实现备文件和设备的绑定下LED灯实验)
一、字符设备驱动注册的内部过程 1.分配struct cdev对象空间 2.初始化struct cdev对象 3.注册cdev对象 二、注册字符设备驱动分步实现 1.分配字符设备驱动对象 2.字符设备驱动对象初始化 3.设备号的申请 4.根据申请的设备号和驱动对象注册驱动 三、open函数回调驱动中…...
elasticsearch5-RestAPI操作
个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…...
数据结构与算法(一)
文章目录 数据结构与算法(一)1 位运算、算法是什么、简单排序1.1 实现打印一个整数的二进制1.2 给定一个参数N,返回1!+2!+3!+4!+...+N!的结果1.3 简单排序算法2 数据结构大分类、前缀和、对数器2.1 实现前缀和数组2.2 如何用1\~5的随机函数加工出1\~7的随机函数2.3 如何把不…...
Matlab--微积分问题的计算机求解
目录 1.单变量函数的极限问题 1.1.公式例子 1.2.对应例题 1 2.多变量函数的极限问题 3.函数导数的解析解 4.多元函数的偏导数 5.Jacobian函数 6.Hessian矩阵 7.隐函数的偏导 8.不定积分问题的求解 9.定积分的求解问题 10. 多重积分的问题求解 1.单变量函数的极限问题 …...
GRU实现时间序列预测(PyTorch版)
💥项目专栏:【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码数据集原理介绍) 文章目录 前言一、基于PyTorch搭建GRU模型实现风速时间序列预测二、时序数据集的制作三、数据归一化四、数据集加载器…...
文本框粘贴时兼容Unix、Mac换行符的方法源码
本篇文章属于《518抽奖软件开发日志》系列文章的一部分。 我在开发《518抽奖软件》(www.518cj.net)的时候,要在文本框粘贴从别处复制来的名单。发现一个问题,就是一些Unix传过来的多行文本,粘贴后都变成了一行。原来&a…...
2023年华为杯研究生数学建模竞赛辅导
2023年华为杯研究生数学建模竞赛辅导 各研究生培养单位: 中国研究生数学建模竞赛作为教育部学位管理与研究生教育司指导,中国学位与研究生教育学会、中国科协青少年科技中心主办的“中国研究生创新实践系列大赛”主题赛事之一,是一项面向在校…...
post更新,put相当于删除重新增一条
索引数据 //删除后新增 PUT my_dynamic_temp/_doc/1 { “name”:“test”, “class”:“1204” } //覆盖更新 POST my_dynamic_temp/_update/1 { “doc”: { “name”:“test”, “class”:“1203”, “pernum”:“998” } }...
python责任链模式
责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理它为止。在Python中,你可以使用多线程来实现责任链模式的框架。 首先,你需要定义一个基础的处理者类,它包含处理请求的方…...
大数据技术准备
Hbase:HBase 底层原理详解(深度好文,建议收藏) - 腾讯云开发者社区-腾讯云 Hbase架构图 同一个列族如果有多个store,那么这些store在不同的region Hbase写流程(读比写慢) MemStore Flush Hbas…...
【力扣周赛】第 362 场周赛(⭐差分匹配状态压缩DP矩阵快速幂优化DPKMP)
文章目录 竞赛链接Q1:2848. 与车相交的点解法1——排序后枚举解法2——差分数组⭐差分数组相关题目列表📕1094. 拼车1109. 航班预订统计2381. 字母移位 II2406. 将区间分为最少组数解法1——排序贪心优先队列解法2——差分数组 2772. 使数组中的所有元素…...
四大函数式接口(重点,必须掌握)
新时代程序员必须要会的 :lambda表达式、链式编程、函数式接口、Stream流式计算 什么是函数式接口 1.函数型接口 package com.kuang.function;import java.util.function.Function;/*** Function函数型接口 有一个输入参数,有一个输出* 只要是函数式接口…...
2023Web前端逻辑面试题
1、现有9个小球,已知其中一个球比其它的重,如何只用天平称2次就找出该球? ①把9个球分成三份,三个一份; ②拿出其中两份进行称量;会分为两种情况 若拿出的两份小球称量结果,重量相等;…...
uniapp中git忽略node_modules,unpackage文件
首先在当前项目的命令行新建.gitignore文件: touch .gitignore再在编辑器中打开该文件,并在该文件中加入需要忽略的文件名: node_modules/ .project unpackage/ .DS_Store 提示:如果以前提交过unpackage文件的话,需…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
