Python Pandas库简介及常见用法

news2025/5/23 19:13:08

Python Pandas库简介及常见用法

    • 一、 Pandas简介
      • 1. 简介
      • 2. 主要特点
        • (一)强大的数据结构
        • (二)灵活的数据操作
        • (三)时间序列分析支持
        • (四)与其他库的兼容性
      • 3.应用场景
        • (一)金融领域
        • (二)数据科学与机器学习
        • (三)商业数据分析
        • (四)生物医学研究
    • 二、Pandas库的常见用法
      • 1. 数据读取
        • 1.1 读取CSV文件
        • 1.2 读取Excel文件
        • 1.3 读取数据库数据
        • 1.4 读取JSON数据
      • 2. 写入数据
        • 2.1 写入CSV文件
        • 2.2 写入Excel文件
        • 2.3 写入数据库
      • 3. 数据清洗
        • 3.1 处理缺失值
        • 3.2 处理重复数据
        • 3.3 数据类型转换
        • 3.4 重命名列名
      • 4. 数据查看与统计
        • 4.1 查看数据结构
        • 4.2 数据统计
      • 5. 数据筛选与过滤
        • 5.1 通过布尔表达式筛选
        • 5.2 按索引筛选
        • 5.3 按列名筛选
      • 6. 数据转换与处理
        • 6.1 数据排序
        • 6.2 数据分组与聚合
        • 6.3 数据透视表
      • 7. 数据合并与连接
        • 7.1 数据合并
        • 7.2 数据连接
      • 8. 时间序列数据处理
        • 8.1 创建时间序列
        • 8.2 时间频率转换
        • 8.3 时间窗口计算

一、 Pandas简介

1. 简介

Pandas是一个开源的Python数据分析库,它提供了高性能、易用的数据结构和数据分析工具。Pandas的名字来源于“Panel Data”(面板数据),它主要用于处理结构化数据,例如表格数据、时间序列数据等。Pandas是在NumPy库的基础上构建的,它继承了NumPy的高性能数组计算能力,并在此基础上增加了对复杂数据操作的支持。它提供了两种主要的数据结构:Series(一维数组)和DataFrame(二维表格),使得数据处理更加高效和便捷。
Pandas最初由Wes McKinney在2008年创建,目的是为了满足金融数据分析的需求。随着时间的推移,它已经成为Python数据分析生态系统中不可或缺的一部分,被广泛应用于数据科学、机器学习、金融、统计等多个领域。

2. 主要特点

(一)强大的数据结构
  • DataFrame:这是Pandas中最核心的数据结构之一,它是一个二维表格型数据结构,类似于Excel中的表格。DataFrame的每一列可以存储不同类型的数据(如数字、字符串等),并且可以通过列名和行索引来访问数据。例如,我们可以创建一个包含员工信息(姓名、年龄、部门等)的DataFrame,通过列名“姓名”来获取所有员工的名字,或者通过行索引来获取特定员工的全部信息。
  • Series:Series是一个一维数组,类似于NumPy数组,但它可以带有索引。索引可以是整数、字符串等任何哈希类型。Series在处理单列数据时非常方便,比如对一组时间序列数据(如股票价格)进行操作,可以通过日期索引来快速访问特定时间点的价格。
(二)灵活的数据操作
  • 数据清洗:Pandas提供了丰富的数据清洗功能,可以轻松处理缺失值(如填充缺失值、删除缺失值)、重复数据(如删除重复行)、异常值等。例如,对于一个包含缺失值的DataFrame,我们可以使用fillna()方法来填充缺失值,或者使用dropna()方法来删除包含缺失值的行。
  • 数据筛选:可以使用布尔索引、标签索引、位置索引等多种方式对数据进行筛选。例如,我们可以通过布尔表达式df[df[‘年龄’] > 30]来筛选出年龄大于30的员工数据。
  • 数据合并:Pandas支持多种数据合并操作,如concat()(用于连接多个数据结构)、merge()(类似于SQL中的JOIN操作,可以根据指定的键将两个DataFrame合并在一起)和join()(基于索引进行合并)。这些功能使得在处理多个数据源时可以方便地将它们整合到一起。比如,将员工信息表和员工绩效表根据员工ID进行合并。
  • 数据分组与聚合:通过groupby()方法可以对数据进行分组,然后对每个分组应用聚合函数(如求和、求平均、计数等)。例如,对销售数据按照地区分组,然后计算每个地区的总销售额。
(三)时间序列分析支持

Pandas对时间序列数据提供了强大的支持。它可以直接解析日期时间字符串,生成时间序列索引。例如,pd.date_range(start=‘2024-01-01’, end=‘2024-12-31’, freq=‘D’)可以生成一个从2024年1月1日到2024年12月31日的每日时间序列索引。此外,Pandas还支持时间频率的转换(如将日数据转换为月数据)、时间窗口计算(如计算移动平均值)等操作,这使得它在金融数据分析、气象数据分析等涉及时间序列的领域非常有用。

(四)与其他库的兼容性

Pandas可以无缝地与Python的其他数据分析和科学计算库配合使用。例如,它可以与NumPy进行高效的数组操作,与Matplotlib进行数据可视化,与Scikit - learn进行机器学习模型的训练和预测。这种良好的兼容性使得Pandas能够融入完整的数据分析工作流中。

3.应用场景

(一)金融领域

在金融数据分析中,Pandas可以用来处理股票价格数据、交易数据等。例如,通过读取股票价格的时间序列数据,可以计算股票的收益率、移动平均线等指标。还可以对多个股票的收益率数据进行合并,分析股票之间的相关性。此外,Pandas也可以用于风险管理,比如通过分析交易数据来识别异常交易行为。

(二)数据科学与机器学习

在数据科学项目中,Pandas是数据预处理的重要工具。数据科学家可以使用Pandas来加载数据(如从CSV文件、数据库等来源加载)、清洗数据(处理缺失值、异常值等)、探索数据(计算描述性统计量、绘制数据分布图等)。在机器学习中,Pandas可以将数据集划分为训练集和测试集,还可以对特征数据进行标准化、归一化等操作,为机器学习模型的训练做好准备。

(三)商业数据分析

商业分析师可以使用Pandas来分析销售数据、客户数据等。例如,通过分析销售数据的时间序列,可以发现销售的季节性规律;通过分析客户数据,可以对客户进行分群(如使用groupby()方法根据客户消费金额分组),并计算每个客户群的特征(如平均消费金额、购买频率等)。这些分析结果可以帮助企业制定营销策略、优化产品布局等。

(四)生物医学研究

在生物医学领域,Pandas可以用于处理实验数据,如基因表达数据、临床试验数据等。研究人员可以使用Pandas来整理数据格式、筛选特定的样本或基因,还可以对数据进行统计分析,如计算基因表达的差异等。

二、Pandas库的常见用法

1. 数据读取

1.1 读取CSV文件

Pandas加载CSV文件并在 Python 中以编程方式操作它。 Pandas的核心是“DataFrame”的对象类型- 本质上是一个值表,每行和每列都有一个标签。用read_csv()方法加载CSV 文件:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('2010-2024年国家经济运行情况.csv',encoding='utf-8')
 
# 显示前5行数据
print(df.head())
1.2 读取Excel文件
  • 使用pd.read_excel()方法可以读取Excel文件(.xls或.xlsx格式)。
import pandas as pd

# 读取Excel文件
df = pd.read_excel('2010-2024年北京市经济运行情况.xlsx',encoding='gbk')
 
# 显示前5行数据
print(df.head())
1.3 读取数据库数据
  • 使用pd.read_sql()方法可以从数据库中读取数据。
import pandas as pd
import sqlite3

# 连接到SQLite数据库
conn = sqlite3.connect('economics_data.db')  
 # 从数据库表中读取数据
df = pd.read_sql('SELECT * FROM table_name', conn) 
1.4 读取JSON数据
  • 使用pd.read_json()方法可以读取JSON格式的文件。
import pandas as pd

df = pd.read_json("2025年北京报告数据.json", orient="records")

参数

  • orient:指定JSON文件的格式,常见的有’records’(每行是一个JSON对象)、‘split’(键值对分开存储)等。
    • ‘records’:JSON 是一个记录列表,每个记录是一个字典,这是默认值。
    • ‘index’:JSON 的键是索引,值是列。
    • ‘columns’:JSON 的键是列,值是索引。
    • ‘values’:JSON 是一个二维数组,每一行是一个记录。
import pandas as pd

# 示例 JSON 数据
json_data = {
    "index": ["row1", "row2"],
    "columns": ["col1", "col2"],
    "data": [[1, 2], [3, 4]]
}
# 使用 orient='split' 读取
df = pd.read_json(pd.io.json.dumps(json_data), orient='split')
print(df)

2. 写入数据

2.1 写入CSV文件
  • 使用DataFrame.to_csv()方法可以将DataFrame保存为CSV文件。
import pandas as pd

# 创建一个 DataFrame
data = {
    'name': ['Alice', 'Bob'],
    'age': [25, 30]
}
df = pd.DataFrame(data)

# 将数据写入CSV文件
# index=False表示不保存行索引
df.to_csv('output.csv', index=False)

参数说明

  • index:是否保存行索引,默认为True。
  • sep:指定分隔符,默认为逗号(,)。
2.2 写入Excel文件
  • 使用DataFrame.to_excel()方法可以将DataFrame保存为Excel文件。
import pandas as pd

# 创建一个 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Gary', 'Lily'],
    'age': [25, 30, 24, 26],
    'Grade': [97, 76, 61, 88]
}
df = pd.DataFrame(data)

# 写入Excel文件中
df.to_excel('exam_result.xlsx', sheet_name='Sheet1', index=False)

参数说明

  • sheet_name:指定保存的工作表名称。
  • index:是否保存行索引。
2.3 写入数据库
  • 使用DataFrame.to_sql()方法可以将DataFrame保存到数据库中。
import pandas as pd
from sqlalchemy import create_engine

# 创建一个 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Gary', 'Lily'],
    'age': [25, 30, 24, 26],
    ‘gender’: ['F', 'M', 'M', 'F'],
    'Grade': [97, 76, 61, 88]
}
df = pd.DataFrame(data)

# 创建sqlalchemy的数据库连接
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/exam_db?charset=utf8') 

# 写入数据库中
df.to_sql('exam_result', conn, if_exists='replace', index=False)

参数说明

  • 第一个参数是目标数据库表的名称。
  • conn是数据库连接对象, 必须是sqlalchemy的数据库连接。
  • if_exists:指定如果表已存在时的行为,可选值为’fail’(抛出错误)、‘replace’(替换表)、‘append’(追加数据)。
    index:是否将行索引作为一列保存到数据库中。

3. 数据清洗

3.1 处理缺失值

(1)检查缺失值

  • 使用isnull()或isna()方法可以检查数据中的缺失值。
# 返回一个布尔型DataFrame,缺失值为True
print(df.isnull()) 
# 统计每列的缺失值数量
print(df.isnull().sum())  

(2)填充缺失值

  • 使用fillna()方法可以填充缺失值。
# 将所有缺失值填充为0
df.fillna(value=0, inplace=True)  
# 用列的均值填充该列的缺失值
df['列名'].fillna(value=df['列名'].mean(), inplace=True)  

(3)删除缺失值

  • 使用dropna()方法可以删除包含缺失值的行或列。

# 删除包含缺失值的行
df.dropna(inplace=True) 
# 删除包含缺失值的列
df.dropna(axis=1, inplace=True)  
3.2 处理重复数据

(1)检查重复数据

  • 使用duplicated()方法可以检查重复行。
# 返回布尔型Series,重复行为True
print(df.duplicated())  
# 统计重复行的数量
print(df.duplicated().sum())  

(2)删除重复数据

  • 使用drop_duplicates()方法可以删除重复行。
# 删除重复行
df.drop_duplicates(inplace=True)  
3.3 数据类型转换
  • 使用astype()方法可以将列的数据类型转换为指定类型。

# 将列转换为整数类型
df['列名'] = df['列名'].astype('int')  
# 将列转换为浮点数类型
df['列名'] = df['列名'].astype('float')  
# 将列转换为字符串类型
df['列名'] = df['列名'].astype('str')  
3.4 重命名列名
  • 使用rename()方法可以重命名列名。
  • 用法:

    df.rename(columns={‘旧列名1’: ‘新列名1’, ‘旧列名2’: ‘新列名2’}, inplace=True)

stock_data_frame = pd.DataFrame(stock_data).rename(
        columns={
            0: 'SECURITY_CODE',
            1: 'SECURITY_NAME',
            2: 'LATEST_PRICE',
            3: 'PRICES_CHANGE_RATIO',
            4: 'PRICES_CHANGE',
            5: 'TRADING_COUNT',
            6: 'TRADING_VALUE',
            7: 'AMPLITUDE',
            8: 'TURN_OVER_RATIO',
            9: 'PE_RATIO',
            10: 'TRADE_RATIO',
            11: 'MAX_PRICE',
            12: 'MIN_PRICE',
            13: 'OPEN_PRICE',
            14: 'PRE_CLOSE_PRICE',
            15: 'TOTAL_MARKET_VALUE',
            16: 'CIRCULATION_MARKET_VALUE',
            17: 'PB_RATIO',
            18: 'PE_RATIO_TTM',
            19: 'UPWARD_RATE',
            20: 'MONTH_CHANGE_RATIO',
            21: 'YEAR_CHANGE_RATIO',
            22: 'INFLOW_FUNDS'
        }
 )

示例:当前我们有一个包含缺失值和重复值的国家经济运行情况CSV文件,需要进一步清洗数据以便后续分析。

import pandas as pd

# 读取数据
data = pd.read_csv('2010-2024年国家经济运行情况.csv',encoding='utf-8')

# 显示前五行数据
print(data.head())

# 处理缺失值
# 处理1:删除含有缺失值的行
data = data.dropna() 
# 处理方式2:将缺失值填充为0
data = data.fillna(0)  

# 移除重复值
data = data.drop_duplicates()

# 显示处理后数据的前5条
print(data.head())

4. 数据查看与统计

4.1 查看数据结构

(1)查看DataFrame的前几行

  • 使用head()方法可以查看DataFrame的前几行,默认显示前5行。
# 查看前5行
print(df.head()) 
# 查看前10行
print(df.head(10))  

(2)查看DataFrame的后几行

  • 使用tail()方法可以查看DataFrame的后几行,默认显示后5行。
# 查看后5行
print(df.tail()) 
# 查看后10行
print(df.tail(10))  

(3)查看DataFrame的行列数(形状)

  • 使用shape属性可以获取DataFrame的形状(行数和列数)。
# 输出行数与列数
print(df.shape)

(4)查看DataFrame的列名

  • 使用columns属性可以获取DataFrame的列名。
# 输出列名
print(df.columns)

(5)查看DataFrame的数据类型

  • 使用dtypes属性可以查看每列的数据类型。
# 输出列的数据类型
print(df.dbtypes)
4.2 数据统计

(1)描述性统计

  • 使用**describe()**方法可以获取DataFrame的描述性统计信息,包括均值、标准差、最小值、四分位数等。
# 默认只对数值列进行统计
print(df.describe())  
# 对所有列进行统计
print(df.describe(include='all')) 

(2)特定统计量计算

  • 可以使用mean()、median()、std()、sum()、count()等方法计算特定的统计量。
    • mean() : 统计均值
    • median(): 统计中位数
    • std(): 统计标准差
    • sum(): 数据求和统计
    • count(): 统计数量
# 计算某一列的均值
df['列名'].mean()
# 计算某一列的总和
df['列名'].sum()

(3)计算相关系数

  • 使用**corr()**方法可以计算DataFrame中数值列之间的相关系数。
# 输出相关系数矩阵
print(df.corr()) 
  • 示例:
import pandas as pd
import numpy as np

# 创建一个示例 DataFrame
data = {
  'A': np.random.randn(100), # 随机生成100个标准正态分布的数
  'B': np.random.rand(100), # 随机生成100个在[0,1)区间均匀分布的数
  'C': np.random.randint(0, 100, 100), # 随机生成10个[0,10)之间的整数
  'D': np.random.randn(100) # 随机生成100个标准正态分布的数
}
df = pd.DataFrame(data)
# 计算 DataFrame 中所有数值型列的相关系数
correlation_matrix = df.corr()
print("Correlation Matrix:")
print(correlation_matrix)

(4)计算数据分布

  • 使用value_counts()方法可以统计某一列中各个值的出现次数。
# 统计某一列中各个值的出现次数
print(df['列名'].value_counts())  

5. 数据筛选与过滤

5.1 通过布尔表达式筛选
  • Pandas支持使用布尔表达式可以对DataFrame进行筛选。
# 筛选某一列大于10的行
filtered_df = df[df['列名'] > 10]  
# 使用多个条件进行筛选
filtered_df = df[(df['列名1'] > 10) & (df['列名2'] < 20)]  
  • 示例:根据条件筛选股票
# 条件选股逻辑:
# - 量比 > 1
# - 换手率 ≥5%且≤10%
# - 振幅 ≥3%且≤10%
# - 流通市值 ≥50亿且≤200亿
# - 动态市盈率>0且<= 30(行业均值×1.5)
# - 资金流 > 500万
filtered = stock_data_frame[
        # 量比 > 1
        (stock_data_frame['TRADE_RATIO'] > 100) &
        # 换手率在5%至10%区间
        (stock_data_frame['TURN_OVER_RATIO'] >= 500) &
        (stock_data_frame['TURN_OVER_RATIO'] <= 1000) &
        # 振幅在3%至10%区间
        (stock_data_frame['AMPLITUDE'] >= 300) &
        (stock_data_frame['AMPLITUDE'] <= 1000) &
        # 流通市值在50亿元至200亿元区间
        (stock_data_frame['CIRCULATION_MARKET_VALUE'] >= 5000000000) &
        (stock_data_frame['CIRCULATION_MARKET_VALUE'] <= 20000000000) &
        # 动态市盈率在0至40之间
        (stock_data_frame['PE_RATIO'] > 0) &
        (stock_data_frame['PE_RATIO'] <= 4000) &
        # 股票收盘价在30元以内
        (stock_data_frame['LATEST_PRICE'] <= 3000) &
        # 当日资金流入大于500万
        (stock_data_frame['INFLOW_FUNDS'] > 5000000)
]
5.2 按索引筛选
  • Pandas中使用loc()和iloc()可以按索引进行筛选。
    • loc:基于标签索引,可以同时指定行和列。
    • iloc:基于位置索引,只能指定行和列的位置。
# 使用loc
# 选择第2到第5行,指定列名
selected_df = df.loc[df.index[1:5], ['列名1', '列名2']]  
# 使用iloc
# 选择第2到第5行,第1和第2列
selected_df = df.iloc[1:5, [0, 1]]  
5.3 按列名筛选
  • Pandas中可以通过列名直接选择列。
# 选择单列
selected_column = df['列名'] 
# 选择多列
selected_columns = df[['列名1', '列名2']] 

6. 数据转换与处理

6.1 数据排序

(1)按列值排序

  • 使用sort_values()方法可以按列值对DataFrame进行排序。
# 按某一列升序排序
df.sort_values(by='列名', ascending=True, inplace=True)  
# 按多列排序
df.sort_values(by=['列名1', '列名2'], ascending=[True, False], inplace=True)  

(2)按索引排序

  • 使用sort_index()方法可以按索引对DataFrame进行排序。
# 按索引排序
df.sort_index(inplace=True)  
6.2 数据分组与聚合

(1)数据分组

  • Pandas中使用groupby()方法可以对数据进行分组。
# 按某一列分组
grouped = df.groupby('列名')  

# 按多列分组 
grouped = df.groupby(['列名1', '列名2'])  

(2)数据聚合

  • Pandas中使用聚合函数(如sum()、mean()、count()等)对分组后的数据进行计算。
# 对分组后的数据求和
result = grouped.sum()
 # 对分组后的数据求均值  
result = grouped.mean() 
# 对不同列应用不同的聚合函数
result = grouped.agg({'列名1': 'sum', '列名2': 'mean'})  
6.3 数据透视表

(1)数据重塑

  • Pandas中使用pivot()用于将长格式数据转换为宽格式。
import pandas as pd
import numpy as np

# 创建示例数据
data = {
    '日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    '变量': ['A', 'B', 'A', 'B'],
    '值': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 使用pivot进行重塑
pivot_df = df.pivot(index='日期', columns='变量', values='值')
print("Pivot结果:\n", pivot_df)

输出:

输出结果

参数说明:

  • index: 指定作为行索引的列
  • columns: 指定作为列名的列
  • values: 指定填充值的列

(2)数据透视

  • Pandas中使用pivot_table()方法可以创建数据透视表。
pivot_table = df.pivot_table(index='列名1', columns='列名2', values='列名3', aggfunc='sum')

# 创建有重复值的数据
data = {
    '日期': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02'],
    '变量': ['A', 'B', 'A', 'B'],
    '值': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 使用pivot_table进行聚合
pivot_table_df = pd.pivot_table(df, values='值', index='日期', columns='变量', aggfunc=np.mean)
print("\nPivot Table结果:\n", pivot_table_df)

输出:

Pivot Table输出结果

参数说明:

  • aggfunc: 指定聚合函数,默认为np.mean
  • 可以处理重复值,对相同索引和列的组合进行聚合

7. 数据合并与连接

7.1 数据合并
  • Pandas中使用merge()方法可以将两个DataFrame按指定的键合并,类似于SQL中的JOIN操作。
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})
 # 内连接合并
merged_df = pd.merge(df1, df2, on='key', how='inner') 
# 外连接合并
merged_df = pd.merge(df1, df2, on='key', how='outer') 
# 左连接合并
merged_df = pd.merge(df1, df2, on='key', how='left')  
# 右连接合并
merged_df = pd.merge(df1, df2, on='key', how='right')  

输出结果:

数据合并结果

7.2 数据连接
  • Pandas中使用concat()方法可以将多个DataFrame按行或列连接。
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
# 按行连接
concatenated_df = pd.concat([df1, df2], axis=0)  
 # 按列连接
concatenated_df = pd.concat([df1, df2], axis=1) 

输出结果:

数据连接结果

8. 时间序列数据处理

8.1 创建时间序列
  • 使用pd.date_range()可以创建时间序列索引。
 # 每日时间序列
date_range = pd.date_range(start='2024-01-01', end='2024-12-31', freq='D') 
# 创建一个时间序列DataFrame
df = pd.DataFrame({'value': range(len(date_range))}, index=date_range) 
8.2 时间频率转换
  • 使用resample()方法可以对时间序列数据进行频率转换。
# 将日数据转换为月数据,并求和
monthly_df = df.resample('M').sum()  
8.3 时间窗口计算
  • 使用rolling()方法可以对时间序列数据进行窗口计算(如移动平均)。
# 计算7天移动平均值
df['moving_avg'] = df['value'].rolling(window=7).mean()  

在股票行情计算时,可使用rolling()方法计算MA移动平均线。

# 计算移动平均线
stock_data['ma5'] = stock_data['close'].rolling(5).mean()
stock_data['ma10'] = stock_data['close'].rolling(10).mean()
stock_data['ma20'] = stock_data['close'].rolling(20).mean()

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

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

相关文章

第十六届蓝桥杯复盘

文章目录 1.数位倍数2.IPv63.变换数组4.最大数字5.小说6.01串7.甘蔗8.原料采购 省赛过去一段时间了&#xff0c;现在复盘下&#xff0c;省赛报完名后一直没准备所以没打算参赛&#xff0c;直到比赛前两天才决定参加&#xff0c;赛前两天匆匆忙忙下载安装了比赛要用的编译器ecli…

【已解决】HBuilder X编辑器在外接显示器或者4K显示器怎么界面变的好小问题

触发方式&#xff1a;主要涉及DPI缩放问题&#xff0c;可能在电脑息屏有概率触发 修复方式&#xff1a; 1.先关掉软件直接更改屏幕缩放&#xff0c;然后打开软件&#xff0c;再关掉软件恢复原来的缩放&#xff0c;再打开软件就好了 2.(不推荐&#xff09;右键HBuilder在属性里…

直线型绝对值位移传感器:精准测量的科技利刃

在科技飞速发展的今天&#xff0c;精确测量成为了众多领域不可或缺的关键环节。无论是工业自动化生产线上的精细操作&#xff0c;还是航空航天领域中对零部件位移的严苛把控&#xff0c;亦或是科研实验中对微小位移变化的精准捕捉&#xff0c;都离不开一款高性能的测量设备——…

Ansible模块——管理100台Linux的最佳实践

使用 Ansible 管理 100 台 Linux 服务器时&#xff0c;推荐遵循以下 最佳实践&#xff0c;以提升可维护性、可扩展性和安全性。以下内容结合实战经验进行总结&#xff0c;适用于中大型环境&#xff08;如 100 台服务器&#xff09;&#xff1a; 一、基础架构设计 1. 分组与分层…

从0开始学习大模型--Day09--langchain初步使用实战

众所周知&#xff0c;一味地学习知识&#xff0c;所学的东西和概念都是空中楼阁&#xff0c;大部分情况下&#xff0c;实战都是很有必要的&#xff0c;今天就通过微调langchain来更深刻地理解它。 中间如何进入到langchain界面请参考结尾视频链接。 首先&#xff0c;进入界面…

C++中的菱形继承问题

假设有一个问题&#xff0c;类似于鸭子这样的动物有很多种&#xff0c;如企鹅和鱿鱼&#xff0c;它们也可能会有一些共同的特性。例如&#xff0c;我们可以有一个叫做 AquaticBird &#xff08;涉禽&#xff0c;水鸟的一类&#xff09;的类&#xff0c;它又继承自 Animal 和 Sw…

网络-MOXA设备基本操作

修改本机IP和网络设备同网段&#xff0c;输入设备IP地址进入登录界面&#xff0c;交换机没有密码&#xff0c;路由器密码为moxa 修改设备IP地址 交换机 路由器 环网 启用Turbo Ring协议&#xff1a;在设备的网络管理界面中&#xff0c;找到环网配置选项&#xff0c;启用Turb…

飞桨paddle import fluid报错【已解决】

跟着飞桨的安装指南安装了paddle之后 pip install paddlepaddle有一个验证&#xff1a; import paddle.fluid as fluid fluid.install check.run check()报错情况如下&#xff0c;但是我在pip list中&#xff0c;确实看到了paddle安装上了 我import paddle别的包&#xff0c…

测试工程师要如何开展单元测试

单元测试是软件开发过程中至关重要的环节&#xff0c;它通过验证代码的最小可测试单元(如函数、方法或类)是否按预期工作&#xff0c;帮助开发团队在早期发现和修复缺陷&#xff0c;提升代码质量和可维护性。以下是测试工程师开展单元测试的详细步骤和方法&#xff1a; 一、理…

IPv4 地址嵌入 IPv6 的前缀转换方式详解

1. 概述 在 IPv4 和 IPv6 网络共存的过渡期&#xff0c;NAT64&#xff08;Network Address Translation 64&#xff09;是一种关键技术&#xff0c;用于实现 IPv6-only 网络与 IPv4-only 网络的互操作。NAT64 前缀转换通过将 IPv4 地址嵌入到 IPv6 地址中&#xff0c;允许 IPv…

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(三)用yolov5-face算法实现人脸检测

环境直接使用第一篇中安装好的环境即可 先clone yolov5-face项目 git clone https://github.com/deepcam-cn/yolov5-face.git 并下载预训练权重文件yolov5n-face.pt 网盘链接: https://pan.baidu.com/s/1xsYns6cyB84aPDgXB7sNDQ 提取码: lw9j &#xff08;野火官方提供&am…

【图像生成大模型】HunyuanVideo:大规模视频生成模型的系统性框架

HunyuanVideo&#xff1a;大规模视频生成模型的系统性框架 引言HunyuanVideo 项目概述核心技术1. 统一的图像和视频生成架构2. 多模态大语言模型&#xff08;MLLM&#xff09;文本编码器3. 3D VAE4. 提示重写&#xff08;Prompt Rewrite&#xff09; 项目运行方式与执行步骤1. …

如何使用Java生成pdf报告

文章目录 一、环境准备与Maven依赖说明二、核心代码解析1. 基础文档创建2. 中文字体处理3. 复杂表格创建4. 图片插入 三、完整代码示例四、最终效果 这篇主要说一下如何使用Java生成pdf&#xff0c;包括标题&#xff0c;文字&#xff0c;图片&#xff0c;表格的插入和调整等相关…

人脸识别备案开启安全防护模式!紧跟《办法》!

国家互联网信息办公室与公安部于 2025 年 3 月 13 日联合公布了《人脸识别技术应用安全管理办法》&#xff08;以下简称《办法》&#xff09;&#xff0c;并自 2025 年 6 月 1 日起正式施行。其中&#xff0c;人脸识别备案成为了规范技术应用、守护信息安全的关键一环。​ 一、…

新浪《经济新闻》丨珈和科技联合蒲江政府打造“数字茶园+智能工厂+文旅综合体“创新模式

5月14日&#xff0c;新浪网《经济新闻》频道专题报道珈和科技在第十四届四川国际茶业博览会上的精彩亮相&#xff0c;并深度聚焦我司以数字技术赋能川茶产业高质量发展创新技术路径&#xff0c;及在成都市“茶业建圈强链”主题推介会上&#xff0c;珈和科技与蒲江县人民政府就智…

50、js 中var { ipcRenderer } = require(‘electron‘);是什么意思?

在 JavaScript 中&#xff0c;var { ipcRenderer } require(‘electron’); 这行代码的含义是&#xff1a; 1. require(‘electron’) 这是 Node.js 的模块引入语法&#xff0c;用于加载 Electron 的核心模块。electron 是 Electron 框架的主模块&#xff0c;提供了构建桌面…

计算机底层的多级缓存以及缓存带来的数据覆盖问题

没有多级缓存的情况 有多级缓存的情况 缓存带来的操作覆盖问题 锁总线带来的消耗太大了。

SpringBoot-1-入门概念介绍和第一个Spring Boot项目

文章目录 1 开发JAVA EE应用1.1 EJB1.2 Spring框架1.2.1 IoC(Inversion of Control)控制反转1.2.2 DI(Dependency Injection)依赖注入1.2.3 AOP面向切面编程1.3 Spring Boot1.4 Spring Cloud框架1.5 开发工具2 创建Spring Boot项目2.1 在线项目生成向导2.2 使用IDEA导入项目2.3…

基于FPGA的电子万年历系统开发,包含各模块testbench

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的电子万年历系统开发,包含各模块testbench。主要包含以下核心模块&#xff1a; 时钟控制模块&#xff1a;提供系统基准时钟和计时功能。 日历计算模块&#xff1a…

MySQL 可观测性最佳实践

MySQL 简介 MySQL 是一个广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;以其高性能、可靠性和易用性而闻名&#xff0c;适用于各种规模的应用&#xff0c;从小型网站到大型企业级系统。 监控 MySQL 指标是维护数据库健康、优化性能和确保数据…