pandas-基础(数据结构及文件访问)
1 Pandas的数据结构
1.1 Series
特点:一维的数据型对象,包含一个值序列和数据标签(即索引)
创建Series:
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
参数说明:
data
:Series 的数据部分,可以是列表、数组、字典、标量值等。如果不提供此参数,则创建一个空的 Series。index
:Series 的索引部分,用于对数据进行标记。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。dtype
:指定 Series 的数据类型。可以是 NumPy 的数据类型,例如np.int64
、np.float64
等。如果不提供此参数,则根据数据自动推断数据类型。name
:Series 的名称,用于标识 Series 对象。如果提供了此参数,则创建的 Series 对象将具有指定的名称。copy
:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据。fastpath
:是否启用快速路径。默认为 False。启用快速路径可能会在某些情况下提高性能。
常用方法:
Series 方法
下面是 Series 中一些常用的方法:
方法名称 | 功能描述 |
---|---|
index | 获取 Series 的索引 |
values | 获取 Series 的数据部分(返回 NumPy 数组) |
head(n) | 返回 Series 的前 n 行(默认为 5) |
tail(n) | 返回 Series 的后 n 行(默认为 5) |
dtype | 返回 Series 中数据的类型 |
shape | 返回 Series 的形状(行数) |
describe() | 返回 Series 的统计描述(如均值、标准差、最小值等) |
isnull() | 返回一个布尔 Series,表示每个元素是否为 NaN |
notnull() | 返回一个布尔 Series,表示每个元素是否不是 NaN |
unique() | 返回 Series 中的唯一值(去重) |
value_counts() | 返回 Series 中每个唯一值的出现次数 |
map(func) | 将指定函数应用于 Series 中的每个元素 |
apply(func) | 将指定函数应用于 Series 中的每个元素,常用于自定义操作 |
astype(dtype) | 将 Series 转换为指定的类型 |
sort_values() | 对 Series 中的元素进行排序(按值排序) |
sort_index() | 对 Series 的索引进行排序 |
dropna() | 删除 Series 中的缺失值(NaN) |
fillna(value) | 填充 Series 中的缺失值(NaN) |
replace(to_replace, value) | 替换 Series 中指定的值 |
cumsum() | 返回 Series 的累计求和 |
cumprod() | 返回 Series 的累计乘积 |
shift(periods) | 将 Series 中的元素按指定的步数进行位移 |
rank() | 返回 Series 中元素的排名 |
corr(other) | 计算 Series 与另一个 Series 的相关性(皮尔逊相关系数) |
cov(other) | 计算 Series 与另一个 Series 的协方差 |
to_list() | 将 Series 转换为 Python 列表 |
to_frame() | 将 Series 转换为 DataFrame |
iloc[] | 通过位置索引来选择数据 |
loc[] | 通过标签索引来选择数据 |
1.2 DataFrame
构造方法:
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
参数说明:
data
:DataFrame 的数据部分,可以是字典、二维数组、Series、DataFrame 或其他可转换为 DataFrame 的对象。如果不提供此参数,则创建一个空的 DataFrame。index
:DataFrame 的行索引,用于标识每行数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。columns
:DataFrame 的列索引,用于标识每列数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。dtype
:指定 DataFrame 的数据类型。可以是 NumPy 的数据类型,例如np.int64
、np.float64
等。如果不提供此参数,则根据数据自动推断数据类型。copy
:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据。
DataFrame 方法
DataFrame 的常用操作和方法如下表所示:
方法名称 | 功能描述 |
---|---|
head(n) | 返回 DataFrame 的前 n 行数据(默认前 5 行) |
tail(n) | 返回 DataFrame 的后 n 行数据(默认后 5 行) |
info() | 显示 DataFrame 的简要信息,包括列名、数据类型、非空值数量等 |
describe() | 返回 DataFrame 数值列的统计信息,如均值、标准差、最小值等 |
shape | 返回 DataFrame 的行数和列数(行数, 列数) |
columns | 返回 DataFrame 的所有列名 |
index | 返回 DataFrame 的行索引 |
dtypes | 返回每一列的数值数据类型 |
sort_values(by) | 按照指定列排序 |
sort_index() | 按行索引排序 |
dropna() | 删除含有缺失值(NaN)的行或列 |
fillna(value) | 用指定的值填充缺失值 |
isnull() | 判断缺失值,返回一个布尔值 DataFrame |
notnull() | 判断非缺失值,返回一个布尔值 DataFrame |
loc[] | 按标签索引选择数据 |
iloc[] | 按位置索引选择数据 |
at[] | 访问 DataFrame 中单个元素(比 loc[] 更高效) |
iat[] | 访问 DataFrame 中单个元素(比 iloc[] 更高效) |
apply(func) | 对 DataFrame 或 Series 应用一个函数 |
applymap(func) | 对 DataFrame 的每个元素应用函数(仅对 DataFrame) |
groupby(by) | 分组操作,用于按某一列分组进行汇总统计 |
pivot_table() | 创建透视表 |
merge() | 合并多个 DataFrame(类似 SQL 的 JOIN 操作) |
concat() | 按行或按列连接多个 DataFrame |
to_csv() | 将 DataFrame 导出为 CSV 文件 |
to_excel() | 将 DataFrame 导出为 Excel 文件 |
to_json() | 将 DataFrame 导出为 JSON 格式 |
to_sql() | 将 DataFrame 导出为 SQL 数据库 |
query() | 使用 SQL 风格的语法查询 DataFrame |
duplicated() | 返回布尔值 DataFrame,指示每行是否是重复的 |
drop_duplicates() | 删除重复的行 |
set_index() | 设置 DataFrame 的索引 |
reset_index() | 重置 DataFrame 的索引 |
transpose() | 转置 DataFrame(行列交换) |
数据选择和切片
函数 | 说明 |
---|---|
df[column_name] | 选择指定的列; |
df.loc[row_index, column_name] | 通过标签选择数据; |
df.iloc[row_index, column_index] | 通过位置选择数据; |
df.ix[row_index, column_name] | 通过标签或位置选择数据; |
df.filter(items=[column_name1, column_name2]) | 选择指定的列; |
df.filter(regex='regex') | 选择列名匹配正则表达式的列; |
df.sample(n) | 随机选择 n 行数据。 |
索引设置
将索引重置成自然数-reset_index()
pandas中将索引重置成自然数的方法,不会改变原始数据的内容和排列顺序。
import pandas as pd
import numpy as npprint("\n")
print("reset_index")
df = pd.DataFrame({'Col-1': [1, 3, 5], 'Col-2': [5, 7, 9]}, index=['A', 'B', 'C'])
print("df:\n",df)
df1 = df.reset_index()
print("df1:\n",df1)print("drop=True:\n",df.reset_index(drop=True))'''
输出结果:
reset_index
df:Col-1 Col-2
A 1 5
B 3 7
C 5 9
df1:index Col-1 Col-2
0 A 1 5
1 B 3 7
2 C 5 9
drop=True:Col-1 Col-2
0 1 5
1 3 7
2 5 9
'''
按照指定索引对齐当前数据-reindex()
reindex()是pandas中实现数据对齐的基本方法,对齐是指沿着指定轴,让数据与给定的一组标签(行列索引)进行匹配。
import pd as pandasprint("\n")
df = pd.DataFrame({'Col-1': [1, 3, 5], 'Col-2': [5, 7, 9]}, index=['A', 'B', 'C'])
print("df:\n",df)
# 默认传给labels参数
df2 = df.reindex(['C', 'B', 'A'])
print("df2:\n",df2)'''
输出结果:
df:Col-1 Col-2
A 1 5
B 3 7
C 5 9
df2:Col-1 Col-2
C 5 9
B 3 7
A 1 5
'''print("axis='columns'")
# 指定重设的是行索引还是列索引,默认是行索引
df3 = df.reindex(['Col-2', 'c3', 'Col-1'], axis='columns')
print("df3:\n",df3)
# 同时调整行和列
df4 = df.reindex(index=['C', 'B', 'A'], columns=['Col-2', 'c3', 'Col-1'])
print("df4:\n",df4)'''
输出结果:
axis='columns'
df3:Col-2 c3 Col-1
A 5 NaN 1
B 7 NaN 3
C 9 NaN 5
df4:Col-2 c3 Col-1
C 9.0 NaN 5.0
B 7.0 NaN 3.0
A 5.0 NaN 1.0
'''
用另一个DataFrame的索引来更新当前DataFrame的索引-reindex_like()
如果是原数据中不存在的索引值,则默认填充空值NaN,也可以使用method参数设置向前填充还是向后填充。
注意:reindex_like()中没有fill_value参数,不支持用指定值填充。
import pd as pandasdfa = pd.DataFrame({'Col-1': [1, 3, 5], 'Col-2': [5, 7, 9]}, index=['A', 'B', 'C'])
print("dfa:\n",dfa)
dfb = pd.DataFrame({'Col-1': [1, 3, 5, 7, 9], 'Col-2': [2, 4, 6, 8, 10]},index=['A', 'B', 'C', 'D', 'E'])
print("dfb:\n" ,dfb, '\n', end='*'*30+'\n')
dfc = dfa.reindex_like(dfb)
print("dfc:\n",dfc)'''
输出结果:
dfa:Col-1 Col-2
A 1 5
B 3 7
C 5 9
dfb:Col-1 Col-2
A 1 2
B 3 4
C 5 6
D 7 8
E 9 10
******************************
dfc:Col-1 Col-2
A 1.0 5.0
B 3.0 7.0
C 5.0 9.0
D NaN NaN
E NaN NaN
'''
2 文件访问
2.1 csv文件
Pandas 可以很方便的处理 CSV 文件,常用方法有:
方法名称 | 功能描述 | 常用参数 |
---|---|---|
pd.read_csv() | 从 CSV 文件读取数据并加载为 DataFrame | filepath_or_buffer (路径或文件对象),sep (分隔符),header (行标题),names (自定义列名),dtype (数据类型),index_col (索引列) |
DataFrame.to_csv() | 将 DataFrame 写入到 CSV 文件 | path_or_buffer (目标路径或文件对象),sep (分隔符),index (是否写入索引),columns (指定列),header (是否写入列名),mode (写入模式) |
pd.read_csv() - 读取 CSV 文件
read_csv() 是从 CSV 文件中读取数据的主要方法,将数据加载为一个 DataFrame。
import pandas as pd# 读取 CSV 文件,并自定义列名和分隔符
df = pd.read_csv('data.csv', sep=';', header=0, names=['A', 'B', 'C'], dtype={'A': int, 'B': float})
print(df)
read_csv 常用参数:
参数 | 说明 | 默认值 |
---|---|---|
filepath_or_buffer | CSV 文件的路径或文件对象(支持 URL、文件路径、文件对象等) | 必需参数 |
sep | 定义字段分隔符,默认是逗号(, ),可以改为其他字符,如制表符(\t ) | ',' |
header | 指定行号作为列标题,默认为 0(表示第一行),或者设置为 None 没有标题 | 0 |
names | 自定义列名,传入列名列表 | None |
index_col | 用作行索引的列的列号或列名 | None |
usecols | 读取指定的列,可以是列的名称或列的索引 | None |
dtype | 强制将列转换为指定的数据类型 | None |
skiprows | 跳过文件开头的指定行数,或者传入一个行号的列表 | None |
nrows | 读取前 N 行数据 | None |
na_values | 指定哪些值应视为缺失值(NaN) | None |
skipfooter | 跳过文件结尾的指定行数 | 0 |
encoding | 文件的编码格式(如 utf-8 ,latin1 等) | None |
df.to_csv() - 将 DataFrame 写入 CSV 文件
to_csv() 是将 DataFrame 写入 CSV 文件的方法,支持自定义分隔符、列名、是否包含索引等设置。import pandas as pd# 假设 df 是一个已有的 DataFrame
df.to_csv('output.csv', index=False, header=True, columns=['A', 'B'])
to_csv 常用参数:
参数 | 说明 | 默认值 |
---|---|---|
path_or_buffer | CSV 文件的路径或文件对象(支持文件路径、文件对象) | 必需参数 |
sep | 定义字段分隔符,默认是逗号(, ),可以改为其他字符,如制表符(\t ) | ',' |
index | 是否写入行索引,默认 True 表示写入索引 | True |
columns | 指定写入的列,可以是列的名称列表 | None |
header | 是否写入列名,默认 True 表示写入列名,设置为 False 表示不写列名 | True |
mode | 写入文件的模式,默认是 w (写模式),可以设置为 a (追加模式) | 'w' |
encoding | 文件的编码格式,如 utf-8 ,latin1 等 | None |
line_terminator | 定义行结束符,默认为 \n | None |
quoting | 设置如何对文件中的数据进行引号处理(0-3,具体引用方式可查文档) | None |
quotechar | 设置用于引用的字符,默认为双引号 " | '"' |
date_format | 自定义日期格式,如果列包含日期数据,则可以使用此参数指定日期格式 | None |
doublequote | 如果为 True ,则在写入时会将包含引号的文本使用双引号括起来 | True |
2.2 Excel 文件
Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls
和 .xlsx
文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。
操作 | 方法 | 说明 |
---|---|---|
读取 Excel 文件 | pd.read_excel() | 读取 Excel 文件,返回 DataFrame |
将 DataFrame 写入 Excel | DataFrame.to_excel() | 将 DataFrame 写入 Excel 文件 |
加载 Excel 文件 | pd.ExcelFile() | 加载 Excel 文件并访问多个表单 |
使用 ExcelWriter 写多个表单 | pd.ExcelWriter() | 写入多个 DataFrame 到同一 Excel 文件的不同表单 |
pd.read_excel() - 读取 Excel 文件
pd.read_excel()
方法用于从 Excel 文件中读取数据并加载为 DataFrame。它支持读取 .xls
和 .xlsx
格式的文件。
语法格式如下:
pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)
参数说明:
-
io
:这是必需的参数,指定了要读取的 Excel 文件的路径或文件对象。 -
sheet_name=0
:指定要读取的工作表名称或索引。默认为0,即第一个工作表。 -
header=0
:指定用作列名的行。默认为0,即第一行。 -
names=None
:用于指定列名的列表。如果提供,将覆盖文件中的列名。 -
index_col=None
:指定用作行索引的列。可以是列的名称或数字。 -
usecols=None
:指定要读取的列。可以是列名的列表或列索引的列表。 -
dtype=None
:指定列的数据类型。可以是字典格式,键为列名,值为数据类型。 -
engine=None
:指定解析引擎。默认为None
,pandas 会自动选择。 -
converters=None
:用于转换数据的函数字典。 -
true_values=None
:指定应该被视为布尔值True
的值。 -
false_values=None
:指定应该被视为布尔值False
的值。 -
skiprows=None
:指定要跳过的行数或要跳过的行的列表。 -
nrows=None
:指定要读取的行数。 -
na_values=None
:指定应该被视为缺失值的值。 -
keep_default_na=True
:指定是否要将默认的缺失值(例如NaN
)解析为NA
。 -
na_filter=True
:指定是否要将数据转换为NA
。 -
verbose=False
:指定是否要输出详细的进度信息。 -
parse_dates=False
:指定是否要解析日期。 -
date_parser=<no_default>
:用于解析日期的函数。 -
date_format=None
:指定日期的格式。 -
thousands=None
:指定千位分隔符。 -
decimal='.'
:指定小数点字符。 -
comment=None
:指定注释字符。 -
skipfooter=0
:指定要跳过的文件末尾的行数。 -
storage_options=None
:用于云存储的参数字典。 -
dtype_backend=<no_default>
:指定数据类型后端。 -
engine_kwargs=None
:传递给引擎的额外参数字典。
DataFrame.to_excel() - 将 DataFrame 写入 Excel 文件
to_excel()
方法用于将 DataFrame 写入 Excel 文件,支持 .xls
和 .xlsx
格式。
语法格式如下:
DataFrame.to_excel(excel_writer, *, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf',freeze_panes=None, storage_options=None, engine_kwargs=None)
参数说明:
-
excel_writer
:这是必需的参数,指定了要写入的 Excel 文件路径或文件对象。 -
sheet_name='Sheet1'
:指定写入的工作表名称,默认为'Sheet1'
。 -
na_rep=''
:指定在 Excel 文件中表示缺失值(NaN)的字符串,默认为空字符串。 -
float_format=None
:指定浮点数的格式。如果为None
,则使用 Excel 的默认格式。 -
columns=None
:指定要写入的列。如果为None
,则写入所有列。 -
header=True
:指定是否写入列名作为第一行。如果为False
,则不写入列名。 -
index=True
:指定是否写入索引作为第一列。如果为False
,则不写入索引。 -
index_label=None
:指定索引列的标签。如果为None
,则不写入索引标签。 -
startrow=0
:指定开始写入的行号,默认从第0行开始。 -
startcol=0
:指定开始写入的列号,默认从第0列开始。 -
engine=None
:指定写入 Excel 文件时使用的引擎,默认为None
,pandas 会自动选择。 -
merge_cells=True
:指定是否合并单元格。如果为True
,则合并具有相同值的单元格。 -
inf_rep='inf'
:指定在 Excel 文件中表示无穷大值的字符串,默认为'inf'
。 -
freeze_panes=None
:指定冻结窗格的位置。如果为None
,则不冻结窗格。 -
storage_options=None
:用于云存储的参数字典。 -
engine_kwargs=None
:传递给引擎的额外参数字典。
ExcelFile - 加载 Excel 文件
ExcelFile
是一个用于读取 Excel 文件的类,它可以处理多个表单,并在不重新打开文件的情况下访问其中的数据。
语法格式如下:
excel_file = pd.ExcelFile('data.xlsx')
常用方法:
方法 | 功能描述 |
---|---|
| 返回文件中所有表单的名称列表 |
| 解析指定表单并返回一个 DataFrame |
| 关闭文件,以释放资源 |
ExcelWriter - 写入 Excel 文件
ExcelWriter 是 pandas 提供的一个类,用于将 DataFrame 或 Series 对象写入 Excel 文件。使用 ExcelWriter,你可以在一个 Excel 文件中写入多个工作表,并且可以更灵活地控制写入过程。
语法格式如下:
pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)
参数说明:
-
path
:这是必需的参数,指定了要写入的 Excel 文件的路径、URL 或文件对象。可以是本地文件路径、远程存储路径(如 S3)、URL 链接或已打开的文件对象。 -
engine
:这是一个可选参数,用于指定写入 Excel 文件的引擎。如果为None
,则 pandas 会自动选择一个可用的引擎(默认优先选择openpyxl
,如果不可用则选择其他可用引擎)。常见的引擎包括'openpyxl'
(用于.xlsx
文件)、'xlsxwriter'
(提供高级格式化和图表功能)、'odf'
(用于 OpenDocument 格式如.ods
)等。 -
date_format
:这是一个可选参数,指定写入 Excel 文件中日期的格式字符串,例如"YYYY-MM-DD"
。 -
datetime_format
:这是一个可选参数,指定写入 Excel 文件中日期时间对象的格式字符串,例如"YYYY-MM-DD HH:MM:SS"
。 -
mode
:这是一个可选参数,默认为'w'
,表示写入模式。如果设置为'a'
,则表示追加模式,向现有文件中添加数据(仅支持部分引擎,如openpyxl
)。 -
storage_options
:这是一个可选参数,用于指定与存储后端连接的额外选项,例如认证信息、访问权限等,适用于写入远程存储(如 S3、GCS)。 -
if_sheet_exists
:这是一个可选参数,默认为'error'
,指定如果工作表已经存在时的行为。选项包括'error'
(抛出错误)、'new'
(创建一个新工作表)、'replace'
(替换现有工作表的内容)、'overlay'
(在现有工作表上覆盖写入)。 -
engine_kwargs
:这是一个可选参数,用于传递给引擎的其他关键字参数。这些参数会传递给相应引擎的函数,例如xlsxwriter.Workbook(file, **engine_kwargs)
或openpyxl.Workbook(**engine_kwargs)
等。
相关文章:
pandas-基础(数据结构及文件访问)
1 Pandas的数据结构 1.1 Series 特点:一维的数据型对象,包含一个值序列和数据标签(即索引) 创建Series: pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明: data&a…...
windows下使用msys2编译ffmpeg
三种方法: 1、在msys2中使用gcc编译 2、在msys2中使用visual studio编译(有环境变量) 3、在msys2中使用visual studio编译(无环境变量) 我的环境: 1、msys2-x86_64-20250221 2、vs2015 3、ffmpeg-7.1…...
Linux驱动开发(1.基础创建)
序言:从高层逻辑到底层硬件的回归 在当今的软件开发中,我们习惯于用高级语言构建抽象层——通过框架、库和云服务快速实现功能。这种“软逻辑”的便利性让开发效率倍增,却也逐渐模糊了我们对计算机本质的认知:一切代码终将落地为…...
长短期记忆网络(LSTM)学习指南
长短期记忆网络(LSTM)学习指南 1. 定义和背景 长短期记忆网络(Long Short-Term Memory, LSTM)是一种递归神经网络(RNN)的变体,旨在解决传统RNN在处理长期依赖关系时遇到的梯度消失或爆炸问题。…...
蓝耘智算平台助力阿里万相2.1:文生图创作攻略
声明:非广告,为用户体验文章 目录 引言 一、认识蓝耘智算平台与阿里万相 2.1 (一)蓝耘智算平台概述 (二)阿里万相 2.1 文生图技术解析 二、蓝耘智算平台注册与环境准备 (一)注…...
HarmonyOS ArkTS声明式UI开发实战教程
引言:为何选择ArkTS? 在HarmonyOS生态快速发展的当下,ArkTS作为新一代声明式UI开发框架,正在引发移动应用开发范式的变革。笔者曾在多个跨平台框架开发中经历过"命令式编程之痛",直到接触ArkTS后才发现&…...
电脑总显示串口正在被占用处理方法
1.现象 在嵌入式开发过程中,有很多情况下要使用串口调试,其中485/422/232转usb串口是非常常见的做法。 根据协议,接口芯片不同,需要安装对应的驱动程序,比如ch340,cp2102,CDM212364等驱动。可…...
linux 安装nvidia 驱动所有发行版通用
之前有写过Ubuntu安装驱动的手册: https://blog.csdn.net/qq_50247813/article/details/146062785 到官网寻找合适的驱动: https://www.nvidia.cn/drivers/lookup 直接选择 linux 64-bit 适用于所有x86构架的linux,arm需要选择arm架构。 这次…...
PHP之数组
在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于数组的信息。 PHP中的数组不用指定数据类型,同时索引不一定是数字。 与其说是数组,其实更像map。 创建和输出 $arr array(1, 2, 3); $arr1 [1, 2, 3]; var_dump(…...
【js逆向】图灵爬虫练习平台 第十五题
地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvMTUv 不一样的两个值 hook cookie两次执行出现密文v值 最主要是这个函数 直接扣整个js代码,然后补环境即可,可以参考 同花顺那篇文章,有讲 关键代码 var rt;!funct…...
LeetCode 1328.破坏回文串:贪心
【LetMeFly】1328.破坏回文串:贪心 力扣题目链接:https://leetcode.cn/problems/break-a-palindrome/ 给你一个由小写英文字母组成的回文字符串 palindrome ,请你将其中 一个 字符用任意小写英文字母替换,使得结果字符串的 字典…...
【商城实战(11)】解锁商品搜索与筛选功能,提升用户购物体验
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
Android AudioFlinger(五)—— 揭开AudioMixer面纱
前言: 在 Android 音频系统中,AudioMixer 是音频框架中一个关键的组件,用于处理多路音频流的混音操作。它主要存在于音频回放路径中,是 AudioFlinger 服务的一部分。 上一节我们讲threadloop的时候,提到了一个函数pr…...
HTML-05NPM使用踩坑
2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷,然后一番折腾之后,终究还是没有解决npm的问题😞😞😞,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…...
并发编程——累加器
目录 1 AtomicLong 1.1 核心功能 1.2 实现原理: (1)基于 Unsafe 的底层操作 (2) volatile字段的内存可见性 (3)CAS 操作与 ABA 问题 1.3 性能分析 1.4 使用场景 2 LongAdder 核心设计原理 1 分段存储 2 分散更新策略 3.处理高竞…...
LeetCode - 28 找出字符串中第一个匹配项的下标
题目来源 28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode) 题目解析 暴力解法 本题如果采用暴力解法的话,可以定义两个指针 i,j,其中 i 指针用于扫描 S(haystack)串,j 指针…...
人机交互革命:从触屏到脑波的13维战争
人机交互革命:从触屏到脑波的13维战争 一、交互维度大爆炸:重新定义人机沟通边界 当ChatGPT开始解析你的微表情,当Neuralink芯片能读取皮层信号,人机交互已突破【键鼠】的次元壁。我们正经历人类史上最大规模的感官革命ÿ…...
如何查看Elastic-Job在Zookeeper中的注册信息
目录 使用zkCli.sh脚本 1. 连接ZooKeeper 2. 查看根目录 3. 查看具体作业的注册信息 4. 退出ZooKeeper客户端 使用ZooInspector工具 1.下载并安装ZooInspector: 2.连接到Zookeeper服务器: 3.浏览服务节点: 4.查看服务实例数据: 注…...
【数据库系统概论】事务
一、事务的定义 1.定义: 事务是数据库管理系统中的一个逻辑工作单元,它由一组操作组成,这些操作是数据库的增删查改的这种一些类的操作,这些操作要么全部成功,要么全部失败。逻辑工作单元是指在数据库中执行的一组操…...
FPGA 配置原理
用户编程控制的FPGA 是通过加载比特位流配置内部的存储单元实现的。该存储单元就是所谓的配置单元,它必须在器件上电后进行配置,从而设置查找表(LUT)的属性、连线方式、IOB 电压标准和其它的用户设计。 1.配置帧 以Xilinx 公司的…...
《DeepSeek MoE架构下,动态专家路由优化全解析》
在人工智能飞速发展的当下,模型架构的创新与优化始终是推动技术进步的关键力量。DeepSeek的混合专家模型(MoE)架构,以其独特的设计理念和卓越的性能表现,在大模型领域崭露头角。而其中的动态专家路由优化技术ÿ…...
ORA-01861一次奇怪的字符串格式匹配问题
客户的一个生产库服务器挂了,还好有容灾数据库,在把生产库切换到容灾库后,大部分的业务都恢复了,但是有一个上传数据的应用报错: ORA-01861:文字与格式字符串不匹配 这个报错呢以前遇到过好几次,基本都是date类型和字符串类型匹配的问题, 一般就是字段需要date类型的数据,但是…...
基于Spring Boot的校园失物招领系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
nlp进阶
1 Rnn RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构段计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出. 单层网络结构 在循环 rnn处理的过程 rnn类别 n - n n - 1 使用sigmoid 或者softmax处理 应用在分类中…...
不同类型光谱相机的技术差异比较
一、波段数量与连续性 多光谱相机 波段数:通常4-9个离散波段,光谱范围集中于400-1000nm。 数据特征:光谱呈阶梯状,无法连续覆盖,适用于中等精度需求场景(如植被分类)。 高光谱相机…...
【Bert系列模型】
目录 一、BERT模型介绍 1.1 BERT简介 1.2 BERT的架构 1.2.1 Embedding模块 1.2.2 双向Transformer模块 1.2.3 预微调模块 1.3 BERT的预训练任务 1.3.1 Masked Language Model (MLM) 1.3.2 Next Sentence Prediction (NSP) 1.4 预训练与微调的关系 1.5 小结 二、BERT…...
Oxidized收集H3C交换机网络配置报错,not matching configured prompt (?-mix:^(<CD>)$)
背景:问题如上标题,H3C所有交换机配置的model都是comware 解决方案: 1、找到compare.rb [rootoxidized model]# pwd /usr/local/lib/ruby/gems/3.1.0/gems/oxidized-0.29.1/lib/oxidized/model [rootoxidized model]# ll comware.rb -rw-r--…...
LeetCode 哈希章节
简单 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返…...
基于Ollama安装deepseek-r1模型搭建本地知识库(Dify、MaxKb、Open-WebUi、AnythingLLM、RAGFlow、FastGPT)
大模型 安装Ollama使用win系统安装使用sh脚本安装使用docker安装 下载大模型搭建WebUI工具和本地知识库Docker安装Dify配置本地知识库 Docker安装MaxKb配置本地知识库 Docker安装Open-WebUi配置本地知识库 Docker安装AnythingLLM配置本地知识库 Docker安装RAGFlow配置本地知识库…...
学习前置知识第二十天
学习前置知识第二十天 今天要做什么? 1:二进制 2:进制转换关系 3:二进制反汇编 4:常见字符编码 5:什么是编码和解码 6:编码表 一:二进制概述 为什么计算机只能读懂二进制?原因是因为计算机是需要电的,电路设计只…...
面试准备——云相册项目(1)基础
项目概述 云相册项目旨在为用户提供便捷的照片存储、管理和访问服务。通过客户端与服务器的配合,实现照片的上传、下载以及一些基本的命令交互功能,方便用户在不同设备上随时查看和管理自己的相册。 技术要点 编程语言与环境:使用 C 语言开…...
c语言程序设计--数组里面考察最多的一个知识点-考研冲刺复试面试问答题。
数组 关于数组的知识脑海里面先有一个大概,知道定义和存储方式 目录 数组 1、数组是什么? 2、strlen和sizeof的区别是什么? 3、数组名是什么? 1、数组是什么? 定义:数组是一组相同类型元素的集合。数…...
Json工具(一)- Jackson(续)
5、Jackson常用注解 JsonProperty 自定义属性在序列化和反序列化过程中所对应的JSON字段的名称,还可以指定是否序列化和反序列化。属性如下: value:设置属性的名称。一般当JSON串中的key与对象中的属性名称不一致,比如分别采用了下划线命名与…...
MySQL-事务
事务 事务,一般指的是数据库事务,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务具有四个特性,即我们常说的ACID特性: 原子性 指事务是一个不可分割的工作单位,事务中的操作…...
课题推荐——无人机在UWB环境下基于TOA/TDOA/AOA的室内定位与精度对比
随着无人机在工业检测、仓储物流、应急救援等室内场景的广泛应用,高精度室内定位技术成为关键支撑。超宽带(UWB)技术凭借其高时间分辨率、强抗多径能力等优势,成为室内定位的主流方案。然而,不同的定位方法(…...
Qt6.8.2创建WebAssmebly项目使用FFmpeg资源
Qt6新出了WebAssmebly功能,可以将C写的软件到浏览器中运行,最近一段时间正在研究这方便内容,普通的控件响应都能实现,今天主要为大家分享如何将FFmpeg中的功能应用到浏览器中。 开发环境:window11,Qt6.8.2…...
【CSS】Tailwind CSS 与传统 CSS:设计理念与使用场景对比
1. 开发方式 1.1 传统 CSS 手写 CSS:你需要手动编写 CSS 规则,定义类名、ID 或元素选择器,并为每个元素编写样式。 分离式开发:HTML 和 CSS 通常是分离的,HTML 中通过类名或 ID 引用 CSS 文件中的样式。 示例&#…...
Server-Sent Events
Server-Sent Events (SSE) 是一种允许服务器向客户端推送实时更新的技术。 1. 创建 SSE 连接 export default {data() {return {eventSource: null,};},onLoad() {this.initSSE();},methods: {initSSE() {// 创建 SSE 连接this.eventSource new EventSource(https://api/xxxx…...
(十 九)趣学设计模式 之 中介者模式!
目录 一、 啥是中介者模式?二、 为什么要用中介者模式?三、 中介者模式的实现方式四、 中介者模式的优缺点五、 中介者模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
k8s概念及k8s集群部署(Centos7)
Centos7部署k8s集群 部署之前,先简单说下k8s是个啥: 一、k8s简介: k8s,全称:kubernetes,它可以看作是一个分布式系统支撑平台。k8s的作用: 1、故障自愈: k8s这个玩意可以监控容器…...
山东省网络安全技能大赛历年真题 山东网络安全创意大赛
刚参加完比赛,总结一波。 第一题:签到题 下载完成之后发现是个.exe文件 杂项万年套路步骤,用winhex打开,搜索flag,找到,提交。。。 第二题:qiu咪 发现是一张flag.png。。万年套路 用winhex打开。啥也没发现…...
数字后端培训实战项目六大典型后端实现案例
Q1:请教一个问题,cts.sdc和func.sdc在innovus用如何切换?在flow哪一步切换输入cts.sdc?哪一步切换到func.sdc,具体如何操作? 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的?针对时…...
Redis网络模型
redis为什么快 1.主要原因是因为redis是基于内存操作的,比起直接操作磁盘速度快好几倍 2.基于内存的数据库瓶颈主要是在网络io这一块,redis网络模型采用io多路复用技术能够高效的处理并发连接。 3.redis使用单线程执行命令,可以避免上下文…...
RangeError: Radix must be an integer between 2 and 36
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
题海拾贝:P9241 [蓝桥杯 2023 省 B] 飞机降落
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞,关注! 1、题…...
机器学习数学基础:38.统计学模型变量
统计学模型变量类型详解教程 一、外生变量(Exogenous Variable) (一)定义与别名 外生变量是模型中不受其他变量影响的独立变量,通常充当自变量。其常见的别名有: 外部变量(External Variabl…...
FPGA标准库-Open Logic
在现代技术发展的浪潮中,开源项目已经成为了推动技术创新和发展的核心力量。无论是人工智能、区块链、云计算,还是传统的嵌入式开发、操作系统,开源项目都在其中扮演着至关重要的角色。它们不仅促进了技术的快速迭代,也为全球开发…...
Git 批量合并 Commit 并且保留之前的 Commit 快速实现的思路
文章目录 需求Rebase / Pick / squashVim 的快速全局字符串替换 需求 我想把如下的提交 commit,变成一个 Commit,并且合并这些 Commit 的消息到一个节点 Rebase / Pick / squash 我合并到 5e59217 这个hash 上,这样合并后会保留两个 Commit…...
Jackson 详解
目录 前言 Jackson 是 Java 生态中最流行的 JSON 处理库之一,广泛应用于 RESTful API、数据存储和传输等场景。它提供了高效、灵活的 JSON 序列化和反序列化功能,支持注解、模块化设计和多种数据格式(如 XML、YAML)。本文将详细介…...
03 HarmonyOS Next仪表盘案例详解(二):进阶篇
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 文章目录 前言1. 响应式设计1.1 屏幕适配1.2 弹性布局 2. 数据展示与交互2.1 数据卡片渲染2.2 图表区域 3. 事件处理机制3.1 点击事件处理3.2 手势…...