数据挖掘-padans初步使用

目录标题

  • Jupyter Notebook
      • 安装
      • 启动
    • Pandas快速入门
      • 查看数据
      • 验证数据
      • 建立索引
      • 数据选取
      • ⚠️注意:
      • 排序
      • 分组聚合
      • 数据转换
      • 增加列
      • 绘图
        • 'line' 或 ''**(默认):绘制折线图。
        • 'bar':绘制条形图。
        • 'barh':绘制水平条形图。
        • 'hist':绘制直方图。
        • 'box':绘制箱形图(Boxplot)。
        • 'kde' 或 'density':绘制核密度估计图(Kernel Density Estimate)。
        • 'area':绘制面积图。面积图下方区域将被填充。
        • 'pie':绘制饼图。饼图通常用于显示部分与整体之间的关系。
        • 'scatter':绘制散点图。散点图用于显示两个变量之间的关系。
        • 'hexbin':绘制六边形分箱图(Hexbin plot)。
      • 写出数据

Jupyter Notebook

Jupyter(https://jupyter.org)项目是一个非营利性开源项目,于2014年由IPython项目中诞生,它能支持所有编程语言的交互式数据科学和科学计算。它的特点是能够在网页上直接执行编写的代码,同时支持动态交互,在做数据可视化时尤其方便
在这里插入图片描述

安装

# 安装Jupyter Notebook,使用清华大学下载源加快下载速度
pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装 Jupyter Lab 的命令如下
pip install jupyterlab

启动

jupyter notebook

这样就会在浏览器中打开一个网页

Pandas快速入门

import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
df

在这里插入图片描述

查看数据

import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print(df.head()) # 打印前5行数据
print('================================================================')
print(df.tail()) # 打印后5行数据
print('================================================================')
print(df.sample()) # sample
print('================================================================')

在这里插入图片描述

验证数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : lw
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('查看数据类型')
print(df.dtypes) # 查看数据类型
print('================================')
print('查看数据信息')
print(df.info) # 查看数据信息
print('================================')
print('查看数据统计信息')
print(df.describe()) # 查看数据统计信息 df.describe()会计算出各数字字段的总数(count)​、平均数 (mean)​、标准差(std)​、最小值(min)​、四分位数和最大值(max
print('================================')
print('查看数据索引')
print(df.axes)
print('================================')
print('查看数据列名')
print(df.columns)

查看数据类型
name object
team object
Q1 int64
Q2 int64
Q3 int64
Q4 int64
dtype: object
================================
查看数据信息
<bound method DataFrame.info of name team Q1 Q2 Q3 Q4
0 Liver E 89 21 24 64
1 Arry C 36 37 37 57
2 Ack A 57 60 18 84
3 Eorge C 93 96 71 78
4 Oah D 65 49 61 86
… … … … … … …
95 Gabriel C 48 59 87 74
96 Austin7 C 21 31 30 43
97 Lincoln4 C 98 93 1 20
98 Eli E 11 74 58 91
99 Ben E 21 43 41 74
[100 rows x 6 columns]>
================================
查看数据统计信息
Q1 Q2 Q3 Q4
count 100.000000 100.000000 100.000000 100.000000
mean 49.200000 52.550000 52.670000 52.780000
std 29.962603 29.845181 26.543677 27.818524
min 1.000000 1.000000 1.000000 2.000000
25% 19.500000 26.750000 29.500000 29.500000
50% 51.500000 49.500000 55.000000 53.000000
75% 74.250000 77.750000 76.250000 75.250000
max 98.000000 99.000000 99.000000 99.000000
================================
查看数据索引
[RangeIndex(start=0, stop=100, step=1), Index([‘name’, ‘team’, ‘Q1’, ‘Q2’, ‘Q3’, ‘Q4’], dtype=‘object’)]
================================
查看数据列名
Index([‘name’, ‘team’, ‘Q1’, ‘Q2’, ‘Q3’, ‘Q4’], dtype=‘object’)
Process finished with exit code 0

建立索引

以上数据真正业务意义上的索引是name列,所以我们需要使它成为索引:

#!/usr/bin/env python
# -*- coding: utf-8 -*-import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('\n 原始表格 \n')
print(df)
print('\n 姓名为索引 \n')
df.index = df['name']
print(df)

原始表格
name team Q1 Q2 Q3 Q4
0 Liver E 89 21 24 64
1 Arry C 36 37 37 57
2 Ack A 57 60 18 84
3 Eorge C 93 96 71 78
4 Oah D 65 49 61 86
… … … … … … …
95 Gabriel C 48 59 87 74
96 Austin7 C 21 31 30 43
97 Lincoln4 C 98 93 1 20
98 Eli E 11 74 58 91
99 Ben E 21 43 41 74
[100 rows x 6 columns]
姓名为索引
name team Q1 Q2 Q3 Q4
name
Liver Liver E 89 21 24 64
Arry Arry C 36 37 37 57
Ack Ack A 57 60 18 84
Eorge Eorge C 93 96 71 78
Oah Oah D 65 49 61 86
… … … … … … …
Gabriel Gabriel C 48 59 87 74
Austin7 Austin7 C 21 31 30 43
Lincoln4 Lincoln4 C 98 93 1 20
Eli Eli E 11 74 58 91
Ben Ben E 21 43 41 74
[100 rows x 6 columns]
Process finished with exit code 0

数据选取

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
# 查看指定列
print('查看 name列')
print(df['name'])
print('================================')
print('查看 name和Q1列')
print(df[['name','Q1']])
print('================================')# 用指定索引选取
df[df.index == 'Liver'] # 指定姓名# 用自然索引选择,类似列表的切片
print('查看前三行')
print(df[0:3]) # 取前三行
print('================================')
print('每两个取一个')
print(df[0:10:2]) # 在前10个中每两个取一个
print('================================')
print('查看前10行')
print(df.iloc[:10,:]) # 前10个
查看 name列
0        Liver
1         Arry
2          Ack
3        Eorge
4          Oah...   
95     Gabriel
96     Austin7
97    Lincoln4
98         Eli
99         Ben
Name: name, Length: 100, dtype: object
================================
查看 name和Q1列name  Q1
0      Liver  89
1       Arry  36
2        Ack  57
3      Eorge  93
4        Oah  65
..       ...  ..
95   Gabriel  48
96   Austin7  21
97  Lincoln4  98
98       Eli  11
99       Ben  21[100 rows x 2 columns]
================================
查看前三行name team  Q1  Q2  Q3  Q4
0  Liver    E  89  21  24  64
1   Arry    C  36  37  37  57
2    Ack    A  57  60  18  84
================================
每两个取一个name team  Q1  Q2  Q3  Q4
0   Liver    E  89  21  24  64
2     Ack    A  57  60  18  84
4     Oah    D  65  49  61  86
6    Acob    B  61  95  94   8
8  Reddie    D  64  93  57  72
================================
查看前10行name team  Q1  Q2  Q3  Q4
0   Liver    E  89  21  24  64
1    Arry    C  36  37  37  57
2     Ack    A  57  60  18  84
3   Eorge    C  93  96  71  78
4     Oah    D  65  49  61  86
5  Harlie    C  24  13  87  43
6    Acob    B  61  95  94   8
7    Lfie    A   9  10  99  37
8  Reddie    D  64  93  57  72
9   Oscar    A  77   9  26  67Process finished with exit code 0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei68
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取
print('条件选择')
print(df[df['Q1'] > 80]) # 选择Q1列中大于80的行
print(df[df['Q1'] > 80]['name']) # 选择Q1列中大于80的行 name列
print(df[df['Q1'] > 80][['name','Q1']]) # 选择Q1列中大于80的行 name和Q1列

⚠️注意:

选择一列和切片一样的使用方式,多列的时候要使用二维数组切片形式

排序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei68
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取df = df.sort_values(by = 'Q1') # 按照Q1列进行排序
print(df)
df = df.sort_values(by = 'Q1',ascending=False)  # 降序排序
print(df)df = df.sort_values(by = ['name','Q2'],ascending=[True,False]) # 先按照name升序,再按照Q2降序
print(df)
         name team  Q1  Q2  Q3  Q4
37  Sebastian    C   1  14  68  48
39     Harley    B   2  99  12  13
85       Liam    B   2  80  24  25
58      Lewis    B   4  34  77  28
82       Finn    E   4   1  55  32
..        ...  ...  ..  ..  ..  ..
3       Eorge    C  93  96  71  78
88      Aaron    A  96  75  55   8
38     Elijah    B  97  89  15  46
19        Max    E  97  75  41   3
97   Lincoln4    C  98  93   1  20[100 rows x 6 columns]name team  Q1  Q2  Q3  Q4
97   Lincoln4    C  98  93   1  20
19        Max    E  97  75  41   3
38     Elijah    B  97  89  15  46
88      Aaron    A  96  75  55   8
3       Eorge    C  93  96  71  78
..        ...  ...  ..  ..  ..  ..
82       Finn    E   4   1  55  32
58      Lewis    B   4  34  77  28
85       Liam    B   2  80  24  25
39     Harley    B   2  99  12  13
37  Sebastian    C   1  14  68  48[100 rows x 6 columns]name team  Q1  Q2  Q3  Q4
88    Aaron    A  96  75  55   8
2       Ack    A  57  60  18  84
6      Acob    B  61  95  94   8
33     Adam    C  90  32  47  39
94    Aiden    D  20  31  62  68
..      ...  ...  ..  ..  ..  ..
40     Toby    A  52  27  17  68
46    Tommy    C  29  44  28  76
79    Tyler    A  75  16  44  63
18  William    C  80  68   3  26
55  Zachary    E  12  71  85  93[100 rows x 6 columns]Process finished with exit code 0

分组聚合

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : li
@Description   : 
"""import pandas as pd # 引入Pandas库,按惯例起别名pd# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
# df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取print(df.groupby('team').sum('Q1'))
print(df.groupby('team').mean('Q1'))
print(df.groupby(['team','name']).mean())
# 不同列不同的计算方法
df1 = df.groupby('team').agg({'Q1': sum,  # 总和'Q2': 'count', # 总数'Q3':'mean', # 平均'Q4': max}) # 最大值print(df1)

数据转换

import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df1 = df.groupby('team').agg({'Q1': sum,  # 总和'Q2': 'count', # 总数'Q3':'mean', # 平均'Q4': max}) # 最大值print(df1)
print(df1.T)

df.T 转置

转置前

        Q1  Q2         Q3  Q4
team                         
A     1066  17  51.470588  97
B      975  22  54.636364  99
C     1056  22  48.545455  98
D      860  19  65.315789  99
E      963  20  44.050000  98

转置后

team            A           B            C           D       E
Q1    1066.000000  975.000000  1056.000000  860.000000  963.00
Q2      17.000000   22.000000    22.000000   19.000000   20.00
Q3      51.470588   54.636364    48.545455   65.315789   44.05
Q4      97.000000   99.000000    98.000000   99.000000   98.00

增加列

直接切片增加索引的方式

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei
@Description   : 
"""import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df['one'] = 1 # 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# # 将计算得来的结果赋值给新列
df['total2'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)df['avg'] = df.total/4 # 增加平均成绩列print(df)

绘图

Pandas利用plot()调用Matplotlib快速绘制出数据可视化图形。注意,第一次使用plot()时可能需要执行两次才能显示图形。 可以使用plot()快速绘制折线图。

在Python中,使用pandas库的DataFrame对象的plot()方法可以很容易地绘制图表。默认情况下,df.plot()会将图表显示在Jupyter Notebook中,但不会自动保存为文件。如果你想保存图表,可以使用matplotlib.pyplot.savefig()函数。

以下是一个简单的例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下df['one'] = 1 # 增加一个固定值的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# # 将计算得来的结果赋值给新列
df['total2'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)df['avg'] = df.total/4 # 增加平均成绩列df.plot()
plt.plot()
plt.savefig('team.png')

在这里插入图片描述

在pandas中,df.plot()是一个非常方便的函数,用于基于DataFrame或Series的数据快速生成图表。kind参数是df.plot()方法中一个非常重要的参数,它指定了要绘制的图表类型。kind参数可以接收多种不同的字符串值,以生成不同类型的图表。以下是一些常见的kind参数值及其对应的图表类型:

‘line’ 或 ‘’**(默认):绘制折线图。

如果DataFrame有多列,则每列都会被绘制为一条线。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下file_path_out = 'team_out.xlsx'
# groupby 分组,sum求和,reset_index重置索引
# 注意 此处如果不重置索引,df中将会没有groupBy的字段
df1 = df.groupby('team').sum('Q1').reset_index()with pd.ExcelWriter(file_path_out) as writer:df1.to_excel(writer, sheet_name='结果', index=False)print(df1)
df1.plot(x = 'team',y = 'Q1' ,kind = 'line')
plt.plot()
plt.savefig('team.png')

在这里插入图片描述

‘bar’:绘制条形图。

如果DataFrame有多列,则每列都会被绘制为独立的条形图组。

df1.plot(x = 'team',y = 'Q1' ,kind = 'bar')

在这里插入图片描述

‘barh’:绘制水平条形图。

与条形图类似,但条是水平的。

df1.plot(x = 'team',y = 'Q1' ,kind = 'barh')

在这里插入图片描述

‘hist’:绘制直方图。

这通常用于Series,但也可以用于DataFrame的每列,为每列绘制直方图。

df1.plot(x = 'team',y = 'Q1' ,kind = 'hist')

在这里插入图片描述

‘box’:绘制箱形图(Boxplot)。

箱形图用于显示数据分布的四分位数,并可能显示异常值。
在这里插入图片描述

‘kde’ 或 ‘density’:绘制核密度估计图(Kernel Density Estimate)。

这是一种用于估计单变量概率密度函数的非参数方法。
在这里插入图片描述

‘area’:绘制面积图。面积图下方区域将被填充。

如果DataFrame有多列,则堆叠这些区域(除非指定stacked=False)。
在这里插入图片描述

‘pie’:绘制饼图。饼图通常用于显示部分与整体之间的关系。

注意,饼图通常用于单个Series,因为DataFrame的每一行都会被解释为饼图的一部分。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下file_path_out = 'team_out.xlsx'
# groupby 分组,sum求和,reset_index重置索引
# 注意 此处如果不重置索引,df中将会没有groupBy的字段
# 各组人数对比
df.groupby('team').count().Q1.plot.pie()plt.savefig('team_pie.png')

在这里插入图片描述

‘scatter’:绘制散点图。散点图用于显示两个变量之间的关系。

如果DataFrame有多列,则默认使用前两列作为x和y轴。
在这里插入图片描述

‘hexbin’:绘制六边形分箱图(Hexbin plot)。

这是一种用于表示两个变量之间关系的二维直方图。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Date          : 2024/10/4
@File          : pandas_start_one.py
@Author        : liwei 
@Description   : 
"""import numpy as np
import matplotlib.pyplot as plt# 生成一些随机数据
np.random.seed(19680801)
x = np.random.randn(10000)
y = np.random.randn(10000)# 绘制Hexbin plot
plt.hexbin(x, y, gridsize=50, cmap='viridis')# 添加颜色条
cb = plt.colorbar(label='counts in bin')# 设置图表标题和坐标轴标签
plt.title("Hexbin of 10,000 points")
plt.xlabel("X")
plt.ylabel("Y")# 显示图表
plt.show()

在这里插入图片描述

写出数据

with pd.ExcelWriter(file_path_out) as writer:df1.to_excel(writer, sheet_name='结果', index=False)

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

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

相关文章

QT将QBytearray的data()指针赋值给结构体指针变量后数据不正确的问题

1、问题代码 #include <QCoreApplication>#pragma pack(push, 1) typedef struct {int a; // 4字节float b; // 4字节char c; // 1字节int *d; // 8字节 }testStruct; #pragma pack(pop)#include <QByteArray> #include <QDebug>int main() {testStruct …

leetcode练习 路径总和II

给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

告别传统互动:AI数字人正全面进入人类社会

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 今天我们来聊聊AI数字人&#xff01; 当我…

全网最详细kubernetes中的资源

1、资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务。 所谓的部署服务&#xff0c;其实就是在kubernetes集群中运行一个个的…

C语言基础(7)之操作符(1)(详解)

目录 1. 各种操作符介绍 1.1 操作符汇总表 2. 移位操作符 2.1 移位操作符知识拓展 —— 原码、反码、补码 2.2 移位操作符讲解 2.2.1 右移操作符 ( >> ) 2.2.2 左移操作符 ( << ) 3. 位操作符 3.1 & (按位与) 3.2 | (按位或) 3.3 ^ (按位异或) 3.4…

gm/ID设计方法学习笔记(一)

前言&#xff1a;为什么需要gm/id &#xff08;一&#xff09;主流设计方法往往侧重于强反型区&#xff08;过驱>0.2V&#xff09;&#xff0c;低功耗设计则侧重于弱反型区&#xff08;<0&#xff09;&#xff0c;但现在缺乏对中反型区的简单和准确的手算模型。 1.对于…

10月2日笔记(内网资源探测篇)

内网资源探测 在内网渗透中&#xff0c;测试人员往往需要通过各种内网扫描技术来探测内网资源的情况&#xff0c;为后续的横向渗透做准备&#xff0c;通常需要发现内网存活的主机&#xff0c;并探测主机的操作系统、主机开放了哪些端口、端口上运行了哪些服务、服务的当前版本…

SQL SERVER 从嫌弃存储到爱上存储过程我给存储过程开发了版本控制工具和远程调试功能...

优缺点 SQL SERVER 爱上存储过程我给存储过程开发了版本控制工具和远程调试功能 先说说 存储过程的优缺点吧存储过程的优点 提高执行效率&#xff1a;存储过程是预编译的&#xff0c;执行速度较快&#xff0c;减少了网络传输量。 减少开发工作量&#xff1a;存储过程可以将复杂…

数据结构——对顺序线性表的操作

大家好啊&#xff0c;今天给大家分享一下对于顺序线性表的相关操作&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦…

中级软件设计师:一文搞懂下午第一题——数据流图技术

中级软件设计师&#xff1a;一文搞懂下午第一题——数据流图技术 0. 答题技巧-【11-12分】分必拿方法0. 本章的考点1. 数据流图的基本元素1.1 数据流1.2 加工1.3 数据存储(文件)1.4 外部实体1.5 分层数据流图&#xff08;DFD&#xff09;1.6 自顶至下&#xff0c;逐步精化1.6.1…

8645 归并排序(非递归算法)

### 思路 非递归归并排序通过逐步合并相邻的子数组来实现排序。每次合并后输出当前排序结果。 ### 伪代码 1. 读取输入的待排序关键字个数n。 2. 读取n个待排序关键字并存储在数组中。 3. 对数组进行非递归归并排序&#xff1a; - 初始化子数组的大小curr_size为1。 - 逐…

GO网络编程(二):客户端与服务端通信【重要】

本节是新知识&#xff0c;偏应用&#xff0c;需要反复练习才能掌握。 目录 1.C/S通信示意图2.服务端通信3.客户端通信4.通信测试5.进阶练习&#xff1a;客户端之间通信 1.C/S通信示意图 客户端与服务端通信的模式也称作C/S模式&#xff0c;流程图如下 其中P是协程调度器。可…

使用VBA快速生成Excel工作表非连续列图片快照

Excel中示例数据如下图所示。 现在需要拷贝A2:A15,D2:D15,J2:J15,L2:L15,R2:R15为图片&#xff0c;然后粘贴到A18单元格&#xff0c;如下图所示。 大家都知道VBA中Range对象有CopyPicture方法可以拷贝为图片&#xff0c;但是如果Range对象为非连续区域&#xff0c;那么将产生10…

Web安全 - 安全防御工具和体系构建

文章目录 安全标准和框架1. 国内安全标准&#xff1a;等级保护制度&#xff08;等保&#xff09;2. 国际安全标准&#xff1a;ISO27000系列3. NIST安全框架&#xff1a;IDPRR方法4. COBIT与ITIL框架 防火墙防火墙的基本作用防火墙的三种主要类型防火墙的防护能力防火墙的盲区 W…

【MATLAB2024b】安装离线帮助文档(windows)

文章目录 一、在 MATLAB 设置中安装二、从math works 网站下载ISO&#xff1a;给无法联网的电脑安装三、重要说明 版本&#xff1a;matlab 2024b&#xff08;或者大于等于2023a&#xff09; 所需空间&#xff1a;10~15 GB 平台&#xff1a;Windows 需要注册math works账号。 一…

【计算机网络】详解UDP协议格式特点缓冲区

一、UDP 协议端格式 16 位 UDP 长度, 表示整个数据报(UDP 首部UDP 数据)的最大长度&#xff1b;如果16位UDP检验和出错&#xff0c;报文会被直接丢弃。 1.1、检验和出错的几种常见情况 数据传输过程中的比特翻转&#xff1a;在数据传输过程中&#xff0c;由于物理介质或网络设…

UE5.4.3 录屏回放系统ReplaySystem蓝图版

这是ReplaySystem的蓝图使用方法版&#xff0c;以第三人称模版为例&#xff0c;需要几个必须步骤 项目config内DefaultEngine.ini的最后添加&#xff1a; [/Script/Engine.GameEngine] NetDriverDefinitions(DefName"DemoNetDriver",DriverClassName"/Script/…

二、Spring Boot集成Spring Security之实现原理

Spring Boot集成Spring Security之实现原理 一、Spring Security实现原理概要介绍二、使用WebSecurityConfiguration向Spring容器中注册FilterChainProxy类型的对象springSecurityFilterChain1、未配置securityFilterChain过滤器链时使用默认配置用于生成默认securityFilterCha…

JDBC 快速入门

JDBC 快速入门 搭建步骤代码实现数据库java 代码 搭建步骤 准备数据库官网下载数据库连接驱动jar 包。https://downloads.mysql.com/archives/c-j/创建 java 项目&#xff0c;在项目下创建 lib 文件夹&#xff0c;将下载的驱动 jar 包复制到文件夹里选中 lib 文件夹右键 ->…

第二十一章 (动态内存管理)

1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常⻅的动态内存的错误 5. 动态内存经典笔试题分析 6. 总结C/C中程序内存区域划分 1.为什么要有动态内存管理 我们目前已经掌握的内存开辟方式有 int main() {int num 0; //开辟4个字节int arr[10] …