当前位置: 首页 > news >正文

【ShuQiHere】pandas 与 DataFrame 全面详解

【ShuQiHere】

本文将为您系统介绍 pandasDataFrame 之间的区别,着重讲解 DataFrame 的常用方法以及相关的数据可视化操作,包括 df.hist()df.plot()df.boxplot() 等。无论您是数据分析新手还是有经验的专业人士,都可以从本文中快速掌握 pandas 的核心功能和使用技巧。


目录

  1. 什么是 pandas?
  2. 什么是 DataFrame?
  3. pandas 与 DataFrame 的区别
  4. pandas 常用函数
    • 数据读取与写入
    • 描述性统计
    • 数据处理
  5. DataFrame 常用方法
    • 数据查看与选择
    • 数据清洗
    • 数据转换
    • 数据聚合与分组
    • 数据合并与连接
    • 数据排序
  6. 数据可视化方法
    • df.hist()
    • df.plot()
    • df.boxplot()
  7. 综合示例操作
  8. 总结

1. 什么是 pandas?

pandas 是一个开源的 Python 数据分析与处理库,由 Wes McKinney 在 2008 年创建,旨在提供高效、灵活且易用的数据结构和数据分析工具。随着数据科学和机器学习的迅猛发展,pandas 已成为数据分析师、科学家和工程师日常工作中不可或缺的工具。

  • 主要功能
    • 数据清洗与准备:处理缺失值、重复数据、数据格式转换等。
    • 数据筛选与过滤:根据条件筛选数据,提取感兴趣的部分。
    • 数据聚合与分组:按某些特征分组数据,进行汇总统计。
    • 时间序列分析:处理和分析时间序列数据,如股票价格、气温变化等。
    • 数据可视化(结合 Matplotlib 等库):快速生成各种图表,直观展示数据特征。
  • 核心数据结构
    • Series:一维标签数组,类似于 Python 列表,但每个元素都有标签(索引)。
    • DataFrame:二维标签数据结构,类似于电子表格或数据库中的表格,是 pandas 最重要的数据结构之一。

pandas 的设计理念是让数据分析变得简单直观,同时保持高效的性能。无论是处理小规模的数据,还是大规模的数据集,pandas 都能胜任。


2. 什么是 DataFrame?

DataFrame 是 pandas 中最重要的数据结构之一,提供了一个二维的、大小可变的、带有标签的表格数据结构。可以将其看作是由多个 Series 组成的字典,每个 Series 代表表格的一列。

  • 特点

    • 二维结构:拥有行和列,类似于电子表格或 SQL 表格。
    • 标签化:行和列都有标签(索引),便于数据的定位和访问。
    • 灵活性:支持多种数据类型(整数、浮点数、字符串等),可以轻松增删行列,处理缺失数据等。
    • 高效性:底层基于 NumPy 实现,具备高效的计算性能。
  • 创建 DataFrame 的方式

    1. 从字典创建

      import pandas as pddata = {'姓名': ['小明', '小红', '小刚'],'年龄': [25, 30, 22],'城市': ['北京', '上海', '广州']
      }
      df = pd.DataFrame(data)
      

      这种方式简单直观,适用于数据量较小且结构明确的情况。

    2. 从列表创建

      data = [['小明', 25, '北京'],['小红', 30, '上海'],['小刚', 22, '广州']
      ]
      df = pd.DataFrame(data, columns=['姓名', '年龄', '城市'])
      

      适用于数据以列表形式存储的情况。

    3. 从 CSV 文件读取

      df = pd.read_csv('data.csv')
      

      常用于从文件中导入数据,处理大规模数据集。

    4. 从 SQL 数据库读取

      import sqlite3conn = sqlite3.connect('database.db')
      df = pd.read_sql_query('SELECT * FROM table_name', conn)
      

      适用于从数据库中提取数据,便于与现有数据库系统集成。

DataFrame 提供了丰富的方法和属性,使数据操作和分析变得高效便捷。


3. pandas 与 DataFrame 的区别

要理解 pandasDataFrame 之间的区别,需要明确它们各自的角色和功能:

  • pandas
    • 是一个完整的 Python 数据分析库,包含多种数据结构(如 Series 和 DataFrame)以及大量功能函数。
    • 提供了用于数据读取、写入、处理、分析和可视化的全面工具集。
    • 作为一个库,pandas 提供了所有实现数据分析任务所需的基础设施和工具。
  • DataFrame
    • 是 pandas 库中的一个核心数据结构,用于存储和操作二维数据。
    • 类似于电子表格或数据库中的表格,具有行和列的结构。
    • 提供了丰富的方法和属性,专门用于数据的选择、过滤、转换、聚合等操作。

简而言之,pandas 是整个“工具箱”,包含各种工具和函数;而 DataFrame 是其中一个重要的“工具”,专门用于处理表格数据。


4. pandas 常用函数

pandas 提供了丰富的函数,用于数据的读取、写入、处理和分析。以下介绍一些常用的 pandas 函数及其用途,帮助你在日常数据分析中高效工作。

数据读取与写入

1. 读取数据

pandas 支持从多种文件格式中读取数据,常见的有 CSV、Excel、JSON、SQL 等。可根据具体需求,选择合适的读取函数。

  • CSV 文件

    import pandas as pddf = pd.read_csv('data.csv')
    

    读取 CSV 文件,是最常用的数据导入方法之一。支持多种参数,如指定分隔符、处理缺失值等。

  • Excel 文件

    df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
    

    读取 Excel 文件,适用于从电子表格中提取数据。支持指定工作表、处理多表格数据等。

  • JSON 文件

    df = pd.read_json('data.json')
    

    读取 JSON 文件,适用于从 API 或 Web 服务获取的数据。

  • SQL 数据库

    import sqlite3conn = sqlite3.connect('database.db')
    df = pd.read_sql('SELECT * FROM table_name', conn)
    

    从 SQL 数据库中读取数据,适用于与数据库系统集成的场景。

2. 写入数据

完成数据处理和分析后,通常需要将结果保存到文件或数据库中,以便后续使用或共享。

  • CSV 文件

    df.to_csv('output.csv', index=False)
    

    将 DataFrame 保存为 CSV 文件。index=False 参数可以避免保存行索引。

  • Excel 文件

    df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
    

    将 DataFrame 保存为 Excel 文件。支持指定工作表名称和是否保存行索引。

  • JSON 文件

    df.to_json('output.json', orient='records', lines=True)
    

    将 DataFrame 保存为 JSON 文件。orientlines 参数可以控制 JSON 格式。

  • SQL 数据库

    df.to_sql('table_name', conn, if_exists='replace', index=False)
    

    将 DataFrame 写入 SQL 数据库。if_exists 参数控制表存在时的操作方式,如 replaceappend 等。


描述性统计

描述性统计用于快速了解数据的基本特征,如中心趋势和离散程度。pandas 提供了多种统计方法,方便快捷地获取这些信息。

  • df.describe()

    stats = df.describe()
    print(stats)
    

    返回数值型列的计数、均值、标准差、最小值、四分位数和最大值等统计信息,是数据探索的第一步。

  • 常用统计方法

    mean_age = df['年龄'].mean()   # 平均值
    total_salary = df['工资'].sum()  # 总和
    min_age = df['年龄'].min()     # 最小值
    max_salary = df['工资'].max()   # 最大值
    median_age = df['年龄'].median() # 中位数
    std_salary = df['工资'].std()   # 标准差
    

这些方法可以单独使用,也可以结合使用,帮助全面了解数据的分布和特征。


数据处理

数据处理包括数据的清洗、转换、合并等操作,是数据分析中至关重要的一部分。pandas 提供了强大的函数来帮助完成这些任务。

  • 合并与连接

    • pd.concat([df1, df2], axis=0)

      :纵向合并

      df_combined = pd.concat([df1, df2], axis=0)
      
    • pd.concat([df1, df2], axis=1)

      :横向合并

      df_combined = pd.concat([df1, df2], axis=1)
      
    • pd.merge(df1, df2, on=‘列名’)

      :基于某列合并(类似 SQL JOIN)

      df_merged = pd.merge(df1, df2, on='ID')
      
  • 创建数据透视表

    pivot = df.pivot_table(values='销售额', index='地区', columns='月份', aggfunc='sum')
    
  • 数据过滤

    high_salary_df = df[df['工资'] > 6000]
    
  • 数据排序

    sorted_df = df.sort_values(by='工资', ascending=False)
    

通过这些数据处理方法,pandas 成为处理复杂数据任务的强大工具,帮助你轻松应对各种数据挑战。


5. DataFrame 常用方法

DataFrame 提供了许多方法,用于具体操作表格数据。以下是一些常见的方法与示例,帮助你高效地进行数据操作和分析。

数据查看与选择

  1. 查看数据

    • df.head(n):查看前 n 行
    • df.tail(n):查看后 n 行
    • df.info():获取数据概要(列名、数据类型、非空值数量)
    • df.shape:查看数据维度 (行数, 列数)
  2. 选择数据

    • 按列选择

      ages = df['年龄']
      
    • 按行选择

      • df.loc[行标签]:基于标签选择
      • df.iloc[行号]:基于整数位置选择
    • 按条件选择

      high_salary_df = df[df['工资'] > 6000]
      
    • 多重选择

      subset = df.loc[0:2, ['姓名', '工资']]
      

数据清洗

数据清洗确保数据的准确性和一致性,是数据分析的重要一步。

  1. 处理缺失值

    • df.dropna():删除含有缺失值的行
    • df.fillna(填充值):用指定值填充缺失值
    • df.fillna(method='ffill'):前向填充
    • df.fillna(method='bfill'):后向填充
  2. 删除重复数据

    • df.drop_duplicates():删除重复行
    • df.drop_duplicates(subset=['列名']):按指定列删除重复
  3. 数据标准化

    • 统一字符串格式

      df['城市'] = df['城市'].str.strip().str.upper()
      
    • 统一日期格式

      df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d')
      

数据转换

数据转换是将数据从一种形式转换为另一种形式,以适应不同的分析需求。

  1. 应用函数
    • df.apply(函数):将函数应用于每列或每行
    • df.applymap(函数):将函数应用于每个元素
  2. 数据类型转换
    • df['年龄'] = df['年龄'].astype(float):转换数据类型
    • pd.to_numeric():转换为数值类型
    • pd.to_datetime():转换为日期时间类型
  3. 重塑数据
    • df.melt():宽格式转长格式
    • df.pivot():长格式转宽格式

数据聚合与分组

数据聚合与分组用于对数据进行汇总和统计,发现数据模式与趋势。

  1. 分组操作

    grouped_sum = df.groupby('城市')['工资'].sum()
    grouped_mean = df.groupby('城市')['工资'].mean()
    grouped_multi = df.groupby(['城市', '性别'])['工资'].mean()
    
  2. 聚合函数

    • df.agg({'列名': ['sum', 'mean']}):多种聚合

    • 自定义聚合函数:

      agg_results = df.agg({'工资': ['sum', 'mean', lambda x: x.max() - x.min()],'年龄': ['median']
      })
      
    • 分组后聚合:

      grouped = df.groupby('城市').agg({'工资': 'mean','年龄': 'median'
      })
      

数据合并与连接

在数据分析过程中,往往需要将来自不同来源的数据整合在一起,以获得更全面的信息。

  1. 合并 DataFrame

    • pd.merge(df1, df2, on='列名', how='inner/left/right/outer'):基于某列合并
    • pd.concat([df1, df2], axis=0):纵向连接
    • pd.concat([df1, df2], axis=1):横向连接
  2. 高级合并

    • 多键合并

      df_merged = pd.merge(df1, df2, on=['ID', '日期'])
      
    • 分别指定左右合并列

      df_merged = pd.merge(df1, df2, left_on='ID', right_on='UserID')
      

数据排序

数据排序有助于按特定顺序展示数据,发现趋势和异常值。

  1. 排序

    • df.sort_values(by='列名', ascending=True/False):按某列排序
    • df.sort_index():按索引排序
  2. 多列排序

    df_sorted = df.sort_values(by=['城市', '工资'], ascending=[True, False])
    
  3. 排序参数

    • inplace=True:原地排序
    • na_position='first''last':指定 NaN 值位置

6. 数据可视化方法

数据可视化是数据分析的重要环节,帮助我们直观地理解数据的分布、趋势和关系。pandas 提供了多种内置的可视化方法,结合 Matplotlib 等库,可以快速生成各种图表。

df.hist()

df.hist() 用于绘制每个数值型列的直方图,帮助了解数据的分布情况。

import matplotlib.pyplot as pltdf.hist(bins=10, figsize=(10, 8))
plt.suptitle('数据分布直方图')
plt.show()
  • 常用参数

    • bins:直方图的柱数。
    • figsize:图表大小。
    • column:指定绘制哪几列。
    • color:颜色。

示例

df.hist(column='工资', bins=5, figsize=(6,4), color='skyblue')
plt.title('工资分布直方图')
plt.xlabel('工资')
plt.ylabel('频数')
plt.show()

df.plot()

df.plot() 是一个功能强大的通用绘图方法,支持多种图表类型,如折线图、散点图、条形图等。通过 kind 参数可快速生成不同类型的图表。

df.plot(kind='line', x='日期', y='销售额')
plt.show()
  • 常用参数

    • kind:图表类型(linescatterbarhist 等)。
    • x/y:指定 x 轴、y 轴数据列。
    • title:图表标题。
    • xlabelylabel:轴标签。
    • figsize:图表大小。
    • color:颜色。
    • marker:折线图中的标记样式。

示例

# 折线图
df.plot(kind='line', x='姓名', y='工资', marker='o', color='green', title='员工工资折线图')
plt.xlabel('姓名')
plt.ylabel('工资')
plt.grid(True)
plt.show()# 散点图
df.plot(kind='scatter', x='年龄', y='工资', color='red', title='年龄 vs 工资散点图')
plt.xlabel('年龄')
plt.ylabel('工资')
plt.show()# 条形图
df.plot(kind='bar', x='姓名', y='工资', color='purple', title='员工工资条形图')
plt.xlabel('姓名')
plt.ylabel('工资')
plt.show()

df.boxplot()

df.boxplot() 用于绘制箱线图,帮助识别数据的中位数、四分位数和异常值。

df.boxplot(column=['工资', '年龄'], by='城市')
plt.title('工资与年龄箱线图')
plt.suptitle('')
plt.show()
  • 常用参数

    • column:指定要绘制的列。
    • by:按某列分组绘制箱线图。
    • grid:是否显示网格。
    • figsize:图表大小。
    • vert:是否垂直显示。

示例

df.boxplot(column=['工资', '工资增长'], grid=False)
plt.title('工资与工资增长箱线图')
plt.ylabel('金额')
plt.show()

7. 综合示例操作

以下示例将数据的读取、清洗、转换、聚合以及可视化结合起来,演示如何使用 pandas 完成一个完整的数据分析过程。

import pandas as pd
import matplotlib.pyplot as plt# 1. 创建 DataFrame
data = {'姓名': ['小明', '小红', '小刚', '小丽'],'年龄': [25, 30, 22, 28],'城市': ['北京', '上海', '广州', '深圳'],'工资': [5000, 6000, 4500, 7000]
}
df = pd.DataFrame(data)# 2. 查看前几行数据
print("前两行数据:")
print(df.head(2))# 3. 查看描述性统计
print("\n描述性统计:")
print(df.describe())# 4. 选择'年龄'列
ages = df['年龄']
print("\n年龄列:")
print(ages)# 5. 过滤年龄大于25的人
filtered_df = df[df['年龄'] > 25]
print("\n年龄大于25的人:")
print(filtered_df)# 6. 添加新列 - 工资增长(假设工资增长10%)
df['工资增长'] = df['工资'] * 1.1
print("\n添加工资增长列:")
print(df)# 7. 删除缺失值(此示例中无缺失值)
df_clean = df.dropna()
print("\n删除缺失值后的 DataFrame:")
print(df_clean)# 8. 按城市分组并求平均工资
grouped = df.groupby('城市')['工资'].mean()
print("\n按城市分组的平均工资:")
print(grouped)# 9. 数据可视化# 9.1 直方图 - 工资分布
df.hist(column='工资', bins=5, figsize=(6,4), color='skyblue')
plt.title('工资分布直方图')
plt.xlabel('工资')
plt.ylabel('频数')
plt.show()# 9.2 折线图 - 员工工资
df.plot(kind='line', x='姓名', y='工资', marker='o', color='green', title='员工工资折线图')
plt.xlabel('姓名')
plt.ylabel('工资')
plt.grid(True)
plt.show()# 9.3 箱线图 - 工资与工资增长
df.boxplot(column=['工资', '工资增长'], grid=False)
plt.title('工资与工资增长箱线图')
plt.ylabel('金额')
plt.show()

代码说明

  1. 创建 DataFrame:生成一个包含姓名、年龄、城市和工资信息的示例数据。

  2. 查看数据

    • df.head(2):查看前两行数据。
    • df.describe():获取数值型列的基本统计信息。
  3. 选择与过滤

    • 筛选“年龄”列,进一步查看和分析。
    • 筛选年龄大于 25 岁的人员。
  4. 数据转换

    • 添加“工资增长”列,假设增长 10%,展示新增列的计算。
  5. 数据清洗

    • 删除缺失值(本示例无缺失值,仅作示范)。
  6. 数据分组

    • 按城市分组,计算各城市的平均工资,比较不同城市间的薪资水平。
  7. 数据可视化

    • 直方图:展示工资分布。
    • 折线图:展示每位员工的工资。
    • 箱线图:展示工资与工资增长的分布情况。

通过此示例,可以更好地理解 pandas 与 DataFrame 各种功能的实际应用与组合,完成一个从数据读取到可视化的完整分析流程。


8. 总结

  1. pandas 是一个功能强大的 Python 数据分析库,提供了多种数据结构(Series、DataFrame)和丰富的函数,能满足数据读取、清洗、转换、聚合、可视化等全流程需求。
  2. DataFrame 是 pandas 处理二维数据的核心结构,类似于电子表格,拥有行、列标签,并提供了非常直观的操作方式。
  3. pandas 常用函数 可以轻松完成数据读取、写入、清洗、聚合等操作;DataFrame 本身也具有大量的方法(如 head()describe()groupby()pivot_table() 等)来满足日常分析需求。
  4. 数据可视化 方法(df.hist()df.plot()df.boxplot() 等)结合 Matplotlib,可快速生成多种图表,直观地探索和展示数据。
  5. 通过综合示例,我们展示了如何结合运用 pandas 的各种功能,实现一个完整的数据分析与可视化流程,进一步加深了对其强大功能与便捷性的体会。

希望本篇详尽的介绍能帮助您更好地理解和使用 pandasDataFrame。如有其他问题,欢迎随时提问或交流!


关于更多数据分析技巧

  • 建议掌握 NumPy(pandas 的底层依赖)以获得更深入的向量化操作体验。
  • 结合 MatplotlibSeaborn 等高级可视化库,可进一步提升图表的美观度与可读性。
  • 熟练应用 SQL 与数据库连接,有助于应对大规模数据场景并进行复杂的查询。

祝您的数据分析之旅顺利高效!如果本文对您有所帮助,欢迎分享给更多需要的人。

相关文章:

【ShuQiHere】pandas 与 DataFrame 全面详解

【ShuQiHere】 本文将为您系统介绍 pandas 与 DataFrame 之间的区别,着重讲解 DataFrame 的常用方法以及相关的数据可视化操作,包括 df.hist()、df.plot()、df.boxplot() 等。无论您是数据分析新手还是有经验的专业人士,都可以从本文中快速掌…...

【回眸】发财日记

积累本金,有舍有得。 上学时在线上兼职,基本够开销没攒下钱,上班之后工资还能攒下不少。 对于花销要有舍有得。认同一句话“买东西要买能力范围内最好的”。 所以,每次花钱前都会思考: 是否需要,是否能替代已有产品&…...

文件读写到SQLite数据库的方法

在 SQLite 数据库中,将文件读写到数据库的常见方法主要有以下几种: 1. 将文件以 BLOB 类型存储 BLOB(Binary Large Object) 是 SQLite 中的二进制数据类型,可以直接用来存储文件内容。 步骤: 创建表 创建一…...

基于SDN的ddos攻击检测与防御

本项目依赖mininet, floodlight, sFlow-RT 1,启动floodlight cd floodlightjava -jar target/floodlight.jar 浏览器访问http://localhost:8080/ui/pages/index.html 或者http://localhost:8080/ui/index.html 2,创建 mininet拓扑 sudo mn --toposingl…...

RocketMQ 和 Kafka 有什么区别?

目录 RocketMQ 是什么? RocketMQ 和 Kafka 的区别 在架构上做减法 简化协调节点 简化分区 Kafka 的底层存储 RocketMQ 的底层存储 简化备份模型 在功能上做加法 消息过滤 支持事务 加入延时队列 加入死信队列 消息回溯 总结 来源:面试官:RocketMQ 和 Kafka 有…...

关于人工智能学习框架

人工智能学习框架:智能时代的强大引擎 在人工智能蓬勃发展的今天,学习框架如同一座座坚实的桥梁,连接着理论与实践,承载着创新与突破,为智能科技的前行提供了强大动力。本文将深入剖析人工智能学习框架的重要意义、核…...

Android14上使用libgpiod[gpioinfo gpioget gpioset ...]

环境 $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.5 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.5 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="…...

【文件I/O】UNIX文件基础

IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用(运行中的程序)的角度。外部特指文件。 这里的文件是泛指,并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...

TensorFlow Quantum快速编程(高级篇)

五、实战:量子分类器应用 5.1 数据准备 在实战构建量子分类器时,数据准备是基石环节。选用鸢尾花数据集,这一经典数据集在机器学习领域应用广泛,其涵盖了三种鸢尾花品种的样本,每个样本包含花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征。鉴于本次构建二分类量子分类…...

无人机+无人车:车机协同技术探索详解

无人机与无人车之间的协同技术是一种重要的研究方向,它结合了无人机的高空视野和无人车的地面移动能力,旨在实现更高效、灵活的作业。以下是对无人机与无人车车机协同技术的详细探索: 一、技术基础 1. 通信机制: 无人机与无人车…...

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本:wordpress-6.6.2-zh_CN WooCommerce版本:woocommerce.9.5.1 WordPress在安装了WooCommerce插件后,安装的过程中没有问题,在安装完成后提示: 此站点遇到了致命错误,请查看您站点管理…...

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架,专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括: 高效的抓取性能:Scrapy 采用了异步机制,能够高效…...

【数据库】六、数据库设计

文章目录 六、数据库设计1 数据库设计步骤1.1 规划阶段1.2 需求分析1.3 概念设计阶段(重点)1.4 逻辑设计阶段(重点)1.5 物理设计阶段1.6 数据库的实现1.7 数据库运行与维护 2 概念模型设计2.1 ER模型2.1.1 ER模型的基本元素2.1.2 联系的设计2.1.3 采用ER模型的概念设计2.1.4 ER…...

错误的类文件: *** 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中

一、问题 用maven对一个开源项目打包时,遇到了“错误的类文件: *** 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。”: 二、原因 原因是当前java环境是Java 8(版本52.0),但…...

不同音频振幅dBFS计算方法

1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值,幅度越大,声音听起来就越响。为了更好地理解和处理音频信号,通常会将振幅转换为分贝(dB)单位。分贝是一个对数单位,能…...

《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》

《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》 一、多模态模型的崛起之路(一)从单一到多元:模态的融合演进(二)关键技术突破:解锁多模态潜能 二、开源多模态模型深度剖析(一&…...

计算机网络之---端口与套接字

总括 端口:是计算机上用于标识网络服务的数字标识符,用于区分不同的服务或应用程序。套接字:是操作系统提供的用于进程间网络通信的编程接口,允许程序通过它来进行数据的发送、接收和连接管理。关系:端口号用于标识服…...

el-tabs中tabs过多造成form表单输入的时候卡顿

这里写自定义目录标题 tabs过多造成的输入卡顿解决方案方案一方案二 出现的并发问题解决方案 tabs过多造成的输入卡顿 描述:前端要写一个需求,大概有一百多个tab渲染过来,每个tab中都是一个表单,这个时候数据渲染任务加重&#x…...

vue+vite打包空白问题

在使用vuevite创建项目之后如果我们在部署项目的时候使用的不是主域名 比如www.custom.com 而是使用了www.custom.com/test 为访问域名的时候 如果不小心没有注意到这个变化 在打包上线之后会出现页面空白 js或者css404问题 我们可以在vite.config.ts去配置路径base export de…...

【python翻译软件V1.0】

如果不想使用密钥的形式,且需要一个直接可用的中英文翻译功能,可以使用一些免费的公共 API,如 opencc 或其他无需密钥的库,或直接用 requests 获取翻译结果。 其中,我可以给你一个简单的代码示例,使用 tra…...

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(while循环应用)

实战训练1—求最大公约数 问题描述: 给定两个正整数,求它们的最大公约数。 输入格式: 输入一行,包含两个正整数。 输出格式: 输出一行,包含gcd正整数,即这两个正整数的最大公约数。 输入…...

HTTPS协议的基础与工作原理

什么是HTTPS? HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本,它通过SSL/TLS协议对通信数据进行加密,确保数据的安全传输。与HTTP相比,HTTPS能防止数据被窃取、篡改或伪造,广…...

手游业务该如何选择服务器?

在网络游戏行业当中,对于服务器配置的需求是非常高的,大型的网络游戏需要服务器的高稳定性,来保证用户的游戏体验感,那么对于手游业务来说该如何进行选择服务器呢? 手游业务通常都需要处理大量的用户数据信息和并发请求…...

Python 数据建模完整流程指南

在数据科学和机器学习中,建模是一个至关重要的过程。通过有效的数据建模,我们能够从原始数据中提取有用的洞察,并为预测或分类任务提供支持。在本篇博客中,我们将通过 Python 展示数据建模的完整流程,包括数据准备、建…...

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

今天在朋友机子上运行代码,在生成token的时候,遇到了这样一个问题: Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26) ~[jjwt-0.9.1.jar:0.…...

12. C语言 数组与指针(深入理解)

本章目录: 前言1. 什么是数组?2. 数组的声明与初始化声明数组初始化数组 3. 访问数组元素遍历数组 4. 获取数组长度使用 sizeof 获取长度使用宏定义简化 5. 数组与指针数组名与指针的区别使用指针操作数组 6. 多维数组遍历多维数组 7. 数组作为函数参数8. 高级技巧与…...

C#用直线和曲线抗锯齿

使用 GDI 绘制一条线时,要提供线条的起点和终点,但不必提供有关线条上各个像素的任何信息。 GDI 与显示驱动程序软件协同工作,确定将打开哪些像素以在特定显示设备上显示该线条。 效果对比 代码实现 关键代码 e.Graphics.SmoothingMode Sm…...

从SS到CSS:探索网页样式设计的奥秘

一、什么是CSS CSS,全称为层叠样式表(Cascading Style Sheets),是一种用于描述HTML(超文本标记语言)或XML(包括如SVG、MathML等各种XML方言)文档样式的样式表语言。 从结构和功能的…...

[Git] git reset --hard / git reset --soft

git reset --hard 功能:重置索引(暂存区)和工作目录到指定的提交状态。这意味着它会丢弃所有未提交的更改和已暂存的更改。 适用场景:当你想要完全放弃当前工作目录中的所有更改并回退到某个特定提交状态时,可以使用这…...

OIDC IdentityServer4》》授权码模式+刷新令牌

认证服务 new Client {ProtocolType "oidc",ClientName "测试",ClientId "zen",//定义客户端 Id 要唯一ClientSecrets { new Secret("abc123zenabres89jijkomnlj".Sha256()) },//Client用来获取token// 混合模式AllowedGrantTyp…...

Sql 创建用户

Sql server 创建用户 Sql server 创建用户SQL MI 创建用户修改其他用户密码 Sql server 创建用户 在对应的数据库执行,该用户得到该库的所有权限 test.database.chinacloudapi.cn DB–01 DB–02 创建服务器登录用户 CREATE LOGIN test WITH PASSWORD zDgXI7rsafkak…...

vscode开启调试模式,结合Delve调试器调试golang项目详细步骤

1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板,输入Go: Install/Update Tools,并单击该命令执行,安装或更新Go语…...

搭建Hadoop分布式集群

软件和操作系统版本 Hadoop框架是采用Java语言编写,需要java环境(jvm) JDK版本:JDK8版本 ,本次使用的是 Java: jdk-8u431-linux-x64.tar.gz Hadoop: hadoop-3.3.6.tar.gz 三台Linux虚拟节点: CentOS-7-x86_64-DVD-2…...

网络安全应急响应技术原理与应用

网络安全应急响应概述 “居安思危,思则有备,有备无患。”网络安全应急响应是针对潜在发生的网络安全事件而采取的网络安全措施。本节主要阐述网络安全响应的概念、网络安全应急响应的发展、网络安全应急响应的相关要求。 17.1.1 网络安全应急响应概念 网…...

01 Oracle自学环境搭建

1 Oracle12C安装 1.1 下载 官网地址:https://www.oracle.com/ 解压安装包 运行安装程序 1.2 安装 配置安全更新 软件更新 安装选项 系统类 Oracle主目录用户选择 使用现有windows用户:如果选择该项,则需要指定没有管理权限的用户。 创建新Wi…...

MYSQL----------MySQL权限管理

1 MySQL权限管理 .1.1 权限系统的工作原理 查看用户权限 -- 查看用户的权限 SHOW GRANTS FOR usernamelocalhost;解释:这条SQL语句用于查看指定用户在本地主机上的权限。其中username是要查看权限的用户。 .1.2 权限表的存取 查询权限表(以user表为例&a…...

学习HLS.js

前言 HTTP 实时流(也称为HLS(.m3u8))是一种基于HTTP的自适应比特率流通信协议。HLS.js依靠HTML5视频和MediaSource Extensions进行播放,其特点:视频点播和直播播放列表、碎片化的 MP4 容器、加密媒体扩展 …...

Zustand selector 发生 infinate loops的原因以及解决

Zustand selector 发生 infinate loops 做zustand tutorial project的时候,使用选择器方法引入store,出现Maximum update depth exceeded,也就是组件一直重新渲染,改成直接使用store就没有不会出现这个问题。如下: // const [xIs…...

Unity自定义编辑器:基于枚举类型动态显示属性

1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…...

donet (MVC)webAPI 的接受json 的操作

直接用对象来进行接收&#xff0c;这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…...

GitHub 新手入门指南

一、GitHub 简介 GitHub 是全球最大的代码托管平台&#xff0c;它基于 Git 版本控制系统&#xff0c;为开发者提供了一个集中存储、管理和协作开发代码的空间。在这里&#xff0c;你可以找到无数开源项目&#xff0c;也可以将自己的项目与全球开发者社区共享&#xff0c;促进知…...

Django后端相应类设计

通用的ApiResponse类&#xff1a;用于生成统一的 API 响应格式。每个响应都包含以下字段&#xff08;每个接口最终的返回数据格式&#xff09;&#xff1a; status_code&#xff1a;HTTP 状态码&#xff08;如 200、400、500 等&#xff09;message&#xff1a;响应的描述信息…...

完美解决VMware 17.0 Pro安装ubuntu、Deepin等虚拟机后卡顿、卡死问题

这两天在 VM 17 Pro 中安装了ubuntu 24.1 和Deepin 23.9 等Linux操作系统&#xff0c;在使用过程中出现过数次卡顿、卡死问题&#xff0c;现记录整理解决方法如下&#xff1a; 一、问题描述 安装虚拟机时、以及安装完成后正常使用时出现鼠标点击卡顿、系统反应慢、卡死等问题…...

前端 图片上鼠标画矩形框,标注文字,任意删除

效果&#xff1a; 页面描述&#xff1a; 对给定的几张图片&#xff0c;每张能用鼠标在图上画框&#xff0c;标注相关文字&#xff0c;框的颜色和文字内容能自定义改变&#xff0c;能删除任意画过的框。 实现思路&#xff1a; 1、对给定的这几张图片&#xff0c;用分页器绑定…...

【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…...

ROS2+OpenCV综合应用--11. AprilTag标签码跟随

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上&#xff0c;增加了小车车体运动的功能&#xff0c;控制车体从而使摄像头会保持标签码在视觉中间左右运动&#xff0c;在根据物体在摄像头成像近大远小的原理根据这一特性&#xff0c;从而实现标签码跟随功能。 2. 启…...

第四、五章图论和网络爬虫+网络搜索

第四章 图论和网络爬虫 4.1 构建网络爬虫工程重点 构建网络爬虫的重点 用BFS还是DFS 在不考虑时间的情况下&#xff0c;这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容&#xff0c;但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如…...

PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获

目录 一、数据库操作应用场景 二、安装PyMysql 三、事务的概念 四、数据库的准备 五、PyMysql连接数据库 1、建立连接方法 2、入门案例 六、PyMysql操作数据库 1、数据库查询 1️⃣查询操作流程 2️⃣cursor游标 ​3️⃣查询常用方法 4️⃣案例 5️⃣异常捕获 …...

(No space left on device )

错误日志&#xff1a; org.springframe tipart.MultipartException: Failed to parse multipart servlet request: nested excepti /ROOT/upload_e5046403_6cd4_4673_3313_479fb76773fe_00000004.tmp (No space left on device ) 分析&#xff1a; (No space left on devi…...

Conmi的正确答案——Cordova使用“src-cordova/config.xml”编辑“Android平台”的“uses-permission”

Cordova版本&#xff1a;12.0.0 (cordova-lib12.0.1) 1、配置例程&#xff1a; <platform name"android"><config-file target"AndroidManifest.xml" parent"/manifest"><uses-permission android:name"android.permission…...