【Python】Pandas基础操作手册(上)

news2024/11/27 16:33:11

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ  


今天给大家带来的是【Python】Pandas基础操作手册(上)本次主要讲解, python pandas 模块的一些基本概念, 以及了解 Dataframe 对象的创建, 赋值, 保存. 一起来看看叭~


本期收录于博主的专栏:Python_保护小周ღ的博客-CSDN博客

适用于编程初学者,感兴趣的朋友们可以订阅,查看其它 “Python 基础知识”。

更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘ 


一、Pandas 是啥?

Pandas 是一个开源的 Python 数据分析库,主要用于数据操作和数据分析。它提供了高效、灵活的数据结构和函数,使得数据处理变得更加便捷。Pandas 主要包含两个核心数据结构

  1. Series一维数组,类似于 Python 的列表或 NumPy 的一维数组,可以存储任意类型的数据,还支持索引。 形如: 

  1. DataFrame:二维表格,类似于电子表格或数据库表,可以看作是多个 Series 的集合。DataFrame 支持列名和行索引,方便数据的存储和访问。形如: 

Pandas 的主要功能

  • 数据清洗:处理缺失值、重复数据、格式转换等。
  • 数据选择和过滤:根据条件选择特定的数据。
  • 数据聚合和分组:对数据进行分组并进行求和、平均等计算。
  • 数据合并:将多个 DataFrame 进行合并或连接。
  • 时间序列分析:处理时间序列数据,提供丰富的时间日期功能。

应用领域

Pandas 广泛应用于数据科学、金融、统计分析、机器学习等领域,是数据分析和数据科学工作流中不可或缺的工具之一。


二、Pandas 相关操作

2.1 使用环境

集成开发环境: PyChorm 

如何引入Pandas: 

你可以在命令行中使用以下命令临时指定阿里云源下载安装:

pip install pandas -i https://mirrors.aliyun.com/pypi/simple/

 导入模块: 

import pandas as pd

在 Python 中,导入模块时常用的一些关键字和语法包括:

1import :  用于导入整个模块。

2from ... import . . .   用于从模块中导入特定的属性或函数。

3. as : 用于给模块或导入的函数/类指定一个别名。

接下里我们就可以愉快的学习 Pandas 啦~


2.1 声明一个DataFrame对象并赋值

: pd.DataFrame 则是声明 dataframe 对象的类型, 以便可以调用方法(pyhton 是解释型语言, 如果不提前声明, 则需要解释到该行代码才能知道他的类型).

if __name__ == "__main__":
    # 声明一个 dataframe 对象
    dataframe: pd.DataFrame = pd.DataFrame()

2.1.1 DataFrame 直接赋值

当前标题的主要目的, 为了让大家了解其定义, 以及背后的数据结构, 没有太大的意义, 接下来是有意义的操作.

# 创建一个包含数据的字典(也就是 map 结构的数据)
    data = {
        '姓名': ['张三', '李四', '王五'],
        '年龄': [25, 30, 22],
        '邮箱': ['zhangsan@example.com', 'lisi@example.com', 'wangwu@example.com']
    }

    # 声明一个 DataFrame 对象并赋值
    df = pd.DataFrame(data)

 你可以这样写: 

# 声明一个 DataFrame 对象并赋值
    df = pd.DataFrame({
            '姓名': ['张三', '李四', '王五'],
            '年龄': [25, 30, 22],
            '邮箱': ['zhangsan@example.com', 'lisi@example.com', 'wangwu@example.com']
        })


2.1.2 定义一个 Series(列)

# 声明一个 DataFrame 对象并赋值
    df = pd.DataFrame({
            '姓名': ['张三', '李四', '王五'],
            '年龄': [25, 30, 22],
            '邮箱': ['zhangsan@example.com', 'lisi@example.com', 'wangwu@example.com']
        })
    print(df)

# 创建一个新的 Series (其参数是 list,  [] 列表)
    jobs_eries = pd.Series(['工程师', '医生', '教师'], name='职业')

    # 将 Series 添加到 DataFrame, 就这样水灵灵的添加了一列
    df['职业'] = jobs_eries

    # 打印
    print(df)

 点击打开之后则是如下展示内容: 


正常情况下 dataframe 对象的数据来源于外部文件什么的,  常用的话, 操作有从  excel 表. csv文件, JSON, sql, API, 中获取数据, 也有的从 其他  dataframe 数据合并... 加入进来的.

2.1.3 DataFrame 从 Excel 中获取数据

# 读取
import openpyxl
# 保存
from openpyxl.utils.dataframe import dataframe_to_rows
通过 pandas 提供的 read_excel 方法可以从 excel 中读取数据,  第一个参数为 excel表的路径
    # 通过 pandas 提供的 read_excel 方法可以从 excel 中读取数据,
    # 第一个参数为 excel 的路径
    #  sheet_name 参数则是指定读取那个 excel表中 sheet 对象
    # 如果没有指定, sheet_name 参数默认读取, Sheet1 对象的值
    df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

以下的是一些其他的常用参数, 用的最多的还是  sheet_naem 和 header 

常用参数

  • sheet_name: 要读取的工作表名称或索引,默认为第一个工作表。
  • header: 指定行号作为列名,默认为 0
  • index_col: 指定用作行索引的列。
  • usecols: 指定要读取的列,可以是列名或列索引。
  • dtype: 指定列的数据类型。

注意事项

  • 需要安装 openpyxl 或 xlrd 库来支持 Excel 文件的读取。
  • Excel 文件中的空行可能会导致数据读取不一致(后面讲)。

2.1.4 DataFrame 从 CSV文件 中获取数据

CSV(Comma-Separated Values,逗号分隔值)文件是一种广泛使用的纯文本文件格式,用于存储表格数据。CSV 文件通常用于数据导入和导出,特别是在不同软件和数据库之间传输数据时。以下是关于 CSV 文件的详细介绍及其格式特点。

1. CSV 文件的基本概念

  • 定义:CSV 文件是一种将数据以文本形式存储的格式,使用特定的分隔符(通常是逗号)将数据项分隔开来。
  • 用途:CSV 文件通常用于数据交换、数据分析和数据存储,支持多种应用程序,如电子表格软件(Excel)、数据库管理系统(如 MySQL、PostgreSQL)和编程语言(如 Python、R)。

2. CSV 文件的格式

CSV 文件具有以下基本格式特征:

  • 行与列:数据被组织成行和列。每一行代表一条记录,而每一列代表记录中的一个字段(或属性)。
  • 分隔符:默认情况下,字段使用逗号(,)分隔,但也可以使用其他分隔符,如制表符(\t)、分号(;)等。
  • 第一行:通常,CSV 文件的第一行包含列名(即字段名),用于描述每列数据的内容。
  • 文本引用:当字段包含分隔符、换行符或引号时,字段值通常用双引号(")括起来。例如:"John, Doe"
  • 缺失值:缺失的数据项可以用空字符串表示,通常会留出一个位置,表示该列没有数据。

3. 示例

以下是一个简单的 CSV 文件示例:

Name,Age,Occupation
John Doe,29,Software Engineer
Jane Smith,34,Data Scientist
"Bob, Jr.",25,"Intern, Marketing"

在这个示例中:

  • 第一行包含列名 NameAge 和 Occupation
  • 随后的每一行代表一个人的记录。
  • 注意 "Bob, Jr." 和 "Intern, Marketing" 中的逗号被双引号括起来,以避免被误解析为分隔符。

4. CSV 文件的优缺点

优点

  • 简单易用:CSV 格式直观、易于理解,适合大多数用户。
  • 广泛支持:几乎所有数据处理工具和编程语言都支持 CSV 文件的读写。
  • 可读性:作为纯文本文件,CSV 文件可以使用任何文本编辑器打开和编辑

缺点

  • 缺乏约束:CSV 文件不支持数据完整性约束(如主键、外键约束等),这可能导致数据重复或不一致。例如,如果同一条记录被多次导入,可能无法自动检测并防止这种情况。
  • 格式不统一:不同的应用程序可能对 CSV 的解析和格式化有不同的处理方式,导致同一文件在不同系统上可能出现读取错误或数据损坏。
  • 无法保留数据类型:CSV 文件中的所有数据都被视为文本,无法直接存储数据类型信息(如整数、日期、布尔值等)。这可能导致在导入数据时出现错误或需要进行额外的转换。
  • 格式化信息丢失:例如,在电子表格应用程序中,单元格可能具有特定的格式(如货币、百分比等),而 CSV 文件无法保留这些格式化信息。
  • 不支持复杂数据结构


 通过 pandas 提供的 read_csv 方法可以从 csv文件 中读取数据, 第一个参数为 csv 文件的路径

df = pd.read_csv('data.csv', **kwargs)

 **kwargs 是一种用于传递可变数量的关键字参数的语法。它的全称是 "keyword arguments",使得函数可以接收任意数量的命名参数。

当你调用 pd.read_csv 函数时,可以使用 **kwargs 来传递其他参数,比如:

df = pd.read_csv('data.csv', sep=',', header=0, index_col=None)

这里的 sep=','header=0index_col=None 都是关键字参数。如果你把这些参数放在 **kwargs 中传递,可以这样写:

params = {
        'sep': ',',
        'header': 0,
        'index_col': None
    }

df = pd.read_csv('data.csv', **params)

常用参数

  • sep: 指定分隔符,默认为 ',',可以设置为 '\t'(制表符)等。
  • header: 指定行号作为列名,默认为 0。设置为 None 时不使用任何行作为列名。
  • index_col: 指定用作行索引的列,可以是列名或列的索引。
  • dtype: 指定列的数据类型。
  • na_values: 自定义缺失值的标识。

注意事项

  • 确保文件路径正确。
  • 大文件可能会占用较多内存,可以使用 chunksize 参数按块读取。

使用 CSV 文件呢, 相较于 excel 文件来说, 更加轻量, 如果单纯的执行数据存取, 中转操作, CSV 将是不二之选, 但是, 如果程序运行的结果要给领导康康的话, 还是保存为 excel 文件 方便查阅~


2.1.5 DataFrame 从 JSON 中获取数据

在 python 中, 字典类型的数据 和  JSON 数据是可以互相转换的

1. 字典转换为 JSON

要将 Python 字典转换为 JSON 字符串,可以使用 json.dumps() 函数。

import json

# 定义一个 Python 字典
data = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "is_student": False,
    "courses": ["Math", "Science"],
}

# 将字典转换为 JSON 字符串
json_string = json.dumps(data)

# 打印 JSON 字符串
print("JSON 字符串:")
print(json_string)

2. JSON 转换为字典 

要将 JSON 字符串转换为 Python 字典,可以使用 json.loads() 函数。

import json 

# 1. 字典转换为 JSON
    data = {
        "name": "Alice",
        "age": 30,
        "city": "New York",
        "is_student": False,
        "courses": ["Math", "Science"],
    }

    # 将字典转换为 JSON 字符串
    json_string = json.dumps(data)
    print("JSON 字符串:")
    print(json_string)

    # 2. JSON 转换为字典
    data_dict = json.loads(json_string)
    print("\nPython 字典:")
    print(data_dict)


通过 pandas 提供的 read_json 方法可以从 excel 中读取数据, 第一个参数为  json 文件的路径也可以是 json 对象

df = pd.read_json('data.json', **kwargs)

同时, 也是支持 **kwargs 格式的传参(详情可见上文 csv部分) 即:

params = {
        'orient': 'split',
        'convert_dates': True,
    }

df = pd.read_json('data.json', **params)

常用参数

  • orient: 指定 JSON 数据的格式,常用值包括 'split''records''index''columns''values'
  • dtype: 指定列的数据类型。
  • convert_dates: 指定是否将字符串转换为日期,默认为 True

注意事项

  • 确保 JSON 数据格式正确,避免解析错误。
  • 大的 JSON 文件可能会占用大量内存。

2.1.6 DataFrame 从 数据库 中获取数据

前提条件

  1. 确保已安装 pandasSQLAlchemy 库,可以使用以下命令安装:

    pip install pandas sqlalchemy
  2. 需要有一个可用的 SQL 数据库(例如 SQLite、MySQL、PostgreSQL 等)和相应的连接信息。

下面是一个示例,展示如何从 mysql  数据库读取数据。假设我们有一个名为 employees.db 的数据库,里面有一个名为 employees 的表。

# 创建数据库连接
    
    # 数据库连接配置
    username = 'your_username'
    password = 'your_password'
    host = 'your_host'
    port = 'your_port'  # 通常是 3306
    database = 'your_database'
    
    engine = create_engine(f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}')

    # SQL 查询语句
    sql_query = 'SELECT * FROM employees'

    # 使用 pd.read_sql 从 SQL 数据库读取数据到 DataFrame
    df = pd.read_sql(sql_query, engine)

    # 显示 DataFrame 的前几行
    print(df.head())

常用参数

  • con: 数据库连接对象。
  • index_col: 指定用作行索引的列。
  • params: SQL 查询的参数。
  • coerce_float: 将字符串转换为浮点数,默认为 True

注意事项

  • 确保 SQL 查询语句正确,避免 SQL 注入风险。
  • 使用连接池来提高性能。

正常情况下, 我们是不会采用这种方式来操作数据库的,  而是通过请求后端提供的  API 来操作数据库, 也是为了数据库安全考虑, 以及规范~~~


2.1.7 DataFrame 从 API 中获取数据

这种方式也是, 也是在实际应用中非常常见的操作一切操作还会在后端留痕, 更加安全嘛.

准备工作

在开始之前,请确保你已经安装了请求库。

  • Requests:一个简单易用的 HTTP 客户端库。

可以使用以下命令安装 requests 库:

pip install requests

其次, 需要提供一个可以访问的  API , 提供数据来源, 可能返回一个 json, 也可能返回一个 excel 呢,这个要看双方的约定是啥样的.

import requests

# API 端点(举例)
url = "https://jsonplaceholder.typicode.com/posts"

# 发起 GET 请求
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    # 解析 JSON 数据, 有可能是别的啥格式, 具体看约定
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码: {response.status_code}")

总之这一快, 主要是  request 模块的内容的, 感兴趣的朋友可以去了解一下(博主还没有写这一块的博客).


2.3  将 ''nan''  转换为  ‘’ (空字符)

在 Pandas 的 DataFrame 中,NaN(Not a Number)值表示缺失或无效的数据NaN 值的出现通常有以下几种原因:

  1. 数据缺失

    数据在收集或录入过程中可能会丢失。例如,用户未填写某个字段,或者在数据抓取过程中部分数据未能成功获取。
  2. 计算结果

    某些计算操作可能会产生 NaN 值。例如,尝试对零进行除法、计算无穷大与无穷大的差等情况都会导致 NaN
  3. 合并操作

    在进行 DataFrame 的合并(如 merge 或 join)时,如果某些键在一侧缺失,则结果中的相应值会被填充为 NaN
  4. 数据类型转换

    在尝试将某种类型的数据转换为另一种类型时,如果转换失败,Pandas 可能会将结果设置为 NaN。例如,尝试将字符串转换为数值时,遇到无法转换的字符串。
  5. 缺省值

    在创建 DataFrame 时,可以指定缺省值为 NaN,以便于后续的数据处理和分析。例如,可以通过 NumPy 的 np.nan 来初始化 DataFrame 的某些元素。

 举个例子: 

第一步:

使用 pandas 将学生表的 sheet1 工作簿的数据读取成一个 dataframe 的对象在内存中.

所以像这种情况, 在内存中出现了 NaN值,  在数据计算中, 或者使用都是不方便的, 那么以下是常用的几种方法.

在数据分析过程中,处理 NaN 值是很常见的任务。Pandas 提供了多种方法来处理这些缺失值,例如:

dropna():删除含有 NaN 的行或列。

fillna(value):用指定的值填充 NaN

isna() 或 isnull():检查哪些位置是 NaN

在 Pandas 中,isna()isnull() 方法用于检查 DataFrame 或 Series 中哪些位置是 NaN(缺失值)。这两个方法的功能相同,可以互换使用。它们返回一个布尔型的 DataFrame 或 Series,其中 True 表示该位置是 NaNFalse 表示该位置不是 NaN

  • 定位缺失值:可以通过布尔索引直接定位缺失值的位置。

missing_values = dataframe[dataframe.isna().any(axis=1)]
print("\n包含 NaN 的行:")
print(missing_values)


 2.4 DataFrame 的保存

Pandas DataFrame 可以保存为多种格式,以便于数据的持久化和共享。以下是一些常用的保存格式及其对应的函数:

2.4.1 CSV 格式

  • 函数to_csv()
  • 示例
    df.to_csv('data.csv', index=False)
    • index=False 表示不保存行索引。

2.4.2 Excel 格式

  • 函数to_excel()
  • 示例
    df.to_excel('data.xlsx', index=False)
    • 需要安装 openpyxl 或 xlsxwriter 库来支持 Excel 格式。
def saveDFToExcelSheet(df: pd.DataFrame, target_path, sheet_name):
    """
    将 dataFrame 数据存入指定的 路径下的 excel表 sheet中.
    :param df: 保存的 pandas 对象
    :param target_path: 目标文件的路径
    :param sheet_name: 要保存为的 sheet 的名字
    :return:
    """
    # 检查目标文件是否存在
    try:
        workbook = openpyxl.load_workbook(target_path)
    except FileNotFoundError:
        # 如果文件不存在,则创建一个新的工作簿
        workbook = openpyxl.Workbook()

    # 检查 sheet_name 是否已经存在
    if sheet_name in workbook.sheetnames:
        # 如果已经存在,则将新建的工作表重命名
        new_sheet_name = sheet_name + "_new"
        new_sheet = workbook.create_sheet(new_sheet_name)
    else:
        # 如果不存在,则直接创建新的工作表
        new_sheet = workbook.create_sheet(sheet_name)

    # 将 DataFrame 中的数据写入工作表
    for row in dataframe_to_rows(df, index=False, header=True):
        new_sheet.append(row)

    # 保存工作簿到目标文件
    workbook.save(target_path)
    print("sheet 对象已成功保存至指定 excel 中")

2.4.3. JSON 格式

  • 函数to_json()
  • 示例
    df.to_json('data.json', orient='records', lines=True)
    • orient 参数可以设置不同的格式,records 是常用的格式之一。

也可以通过 SQL 保存到数据库, 但是不推荐 pandas 直接操作数据库, 而是通过 requets 模块发送请求调用后端提供的 API 间接的操作数据库, 当然最主要的数据结构还是 json 啦.


 好了,到这里,【Python】Pandas基础操作手册(上)博主已经分享完了,阐述较为基础,  希望对大家有所帮助,如有不妥之处欢迎批评指正。 

下期预告: 【Python】Pandas基础操作手册 (下)  将详细描述针对 Dataframe 对象的"增删查改"

感谢每一位观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

遇见你,所有的星星都落在我的头上……

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

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

相关文章

【SpringBoot】17 多文件上传(Thymeleaf + MySQL)

Git仓库 https://gitee.com/Lin_DH/system 文件上传 可参考上一篇【SpringBoot】16 文件上传(Thymeleaf MySQL) https://blog.csdn.net/weixin_44088274/article/details/143004298 介绍 文件上传是指将本地的图片、视频、音频等文件上传到服务器&…

php生成PDF文件(FPDF)

FPDF即“Free PDF”,FPDF类库提供了基本的PDF创建功能,其源代码和使用权是免费的。 PDF格式文档优势 通用:PDF文档在UNIX和Windows系统均可正常使用。 安全:PDF文档可设置为只读模式,并且可以添加密码等保护措施。 美…

【PDF文件】默认被某种软件打开,如何进行修改?

当有时下载某种软件后,电脑中的PDF文件就默认由该种软件打开,每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法: (1)点击电脑的“设置”,选择应用 (2)…

深入浅出理解BLE AUDIO CSIS

CSIS是Coordinate Sets Identification service,翻译过来就是协调集识别服务。什么是协调集,可以理解为具有相同特征的一伙设备,最典型的就是左右两个蓝牙耳机是一个协调集,所以它们具有相同的协调集标志,但是具有相同协调集的设备…

disql 全量备份SQL脚本DM7/DM8

disql 全量备份SQL脚本DM7/DM8 环境介绍1 全量备份前准备工作2 全量备份2.1 cd 到数据库bin 目录,并编辑文件2.2 编写数据库全量备份SQL 脚本2.3 执行编写的sql脚本2.4 编写Linux定时任务 , 每月执行全量备份 3 备份还原4 增量备份配置5 更多达梦数据库学习使用列表 环境介绍 …

CTA-GAN:基于生成对抗网络对颈动脉和主动脉的非增强CT影像进行血管增强

写在前面 目前只分析了文章的大体内容和我个人认为的比较重要的细节,代码实现还没仔细看,后续有时间会补充代码细节部分。 文章地址:Generative Adversarial Network-based Noncontrast CT Angiography for Aorta and Carotid Arteries 代…

【C++】STL容器-string常用接口

1.string类的优势及重要性(部分) C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想&…

【Unity实战笔记】第二一 · 基于状态模式的角色控制——以UnityChan为例

目录 一 内容摘要二 前言三 状态模式的必要性3.1 非状态模式的角色控制3.2 简易状态模式的角色控制3.3 状态模式3.3.1 IState3.3.2 IdleState3.3.3 RunState3.3.4 JumpState3.3.5 PlayerController_ComplexStateMode3.3.6 注意事项 3.4 SMB 四 基于SMB的角色控制4.1 项目实战案…

Java | Leetcode Java题解之第497题非重叠矩形中的随机点

题目&#xff1a; 题解&#xff1a; class Solution {Random rand;List<Integer> arr;int[][] rects;public Solution(int[][] rects) {rand new Random();arr new ArrayList<Integer>();arr.add(0);this.rects rects;for (int[] rect : rects) {int a rect[0…

【大模型问答测试】大模型问答测试脚本实现(第二版)——接入pytest与代码解耦

背景 接上一篇&#xff0c;【大模型问答测试】大模型问答测试脚本实现&#xff08;第一版&#xff09;。 在实现自动化的时候&#xff0c;原先把很多方法与request请求写在一块了&#xff0c;趁着目前实现接口数量较少&#xff0c;决定对代码进行解耦&#xff0c;并且清晰目录…

《梦里花落知多少》凄美地,如同散落的花

《梦里花落知多少》凄美地&#xff0c;如同散落的花 三毛&#xff08;1943/3/26~1991/01/04&#xff09;&#xff0c;本名陈平&#xff0c;当代女作家&#xff0c;旅行家。著有《雨季不再来》《撒哈拉的故事》《哭泣的骆驼》《稻草人手记》《温柔的夜》《梦里花落知多少》等作品…

HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException

HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException 异常信息&#xff1a; Hive:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: The NameSpace quota (directories and files) of directory /xxxdir is exceeded: quota10000 file count15001N…

代码随想录-哈希表-有效的字母异位词

思路 哈希表的三种方式:数组、set、map 本题采用数组形式的哈希表来解决 三个注意事项: ①数组哈希表定义&#xff0c;包括思路和原始大小 ②Java中字符串的某个字符访问方式&#xff0c;字符串长度的方法 ③for-each循环的书写方式 代码 class Solution {public boole…

Python 爬虫下载图片

使用免费的代理ip进行网络请求,降低了反爬机制的触发率。加入自动发送邮件的功能,在代码运行出错的时候可以及时收到提醒消息。 主程序代码: import requests import os import time from lxml import etree from bs4 import BeautifulSoup import random # 自定义模块,发…

安全防护修改用户sudo权限

修改ssh端口 vim /etc/ssh/sshd_config 修改port端口为60022端口&#xff0c;端口最大为65535 修改完&#xff0c;重启服务 可以看到此时ssh监听端口为60022,此时远程登陆时就需要用端口60022&#xff0c;原来的22端口拒绝访问 下载nmap端口扫描工具 用命令nmap 192.168.45.…

CZX前端秘籍2

vue生命周期&#xff08; 组件从创建到销毁的过程就是它的生命周期&#xff09; 创建前 beforeCreat&#xff08; 在这个阶段属性和方法都不能使用&#xff09; 创建时 created&#xff08; 这里时实例创建完成之后&#xff0c; 在这里完成了数据监测&#xff0c; 可以使用数…

【C++进阶】之C++11的简单介绍(二)

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

C#使用log4net结合sqlite数据库记录日志

0 前言 为什么要把日志存到数据库里? 因为结构化的数据库存储的日志信息,可以写专门的软件读取历史日志信息,通过各种条件筛选,可操作性极大增强,有这方面需求的开发人员可以考虑。 为什么选择SQLite? 轻量级数据库,免安装,数据库的常用的基本功能都有,可以随程序…

批量修改YOLO格式的标注类别

1.解决的问题 假如你有一个YOLO格式的数据集&#xff0c;标注类别为0&#xff0c;1&#xff0c;2&#xff0c;3四个类别标签。如果你想删除标签1&#xff0c;只保留0&#xff0c;2&#xff0c;3类别的标注信息&#xff0c;或者想将标签0和标签1合并为标签1&#xff0c;只剩下标…

第三届“奇安信杯”网络安全技能竞赛 部分题目WriteUP

第三届“奇安信杯”网络安全技能竞赛WriteUP 文章目录 第三届“奇安信杯”网络安全技能竞赛WriteUPMISCGIFpycseeyouagain CRYPTObase全家桶base6432rsa WEB MISC GIF 下载附件&#xff0c;解压得到test1.jpg。 用010 Editor打开&#xff0c;发现GIF文件头&#xff0c;修改文…