Python 数据处理与分析之 Pandas 库

介绍

  • Pandas(Python Data Analysis Library)是一个流行的 Python 第三方库,是数据处理和数据分析中不可或缺的工具之一,用于数据处理和数据分析。
  • 它提供了高效的数据分析方法和灵活且高效的数据结构。相比于其他的数据处理库,pandas更适用于处理具有关系型数据或者带标签数据的情况,在时间序列分析方面也有着不错的表现。
  • 如果需要进行数据操作、清理、转换和分析,Pandas 通常是一个非常有用的工具。

核心数据类型

Series

  • Series :是 Pandas 中的一维数据结构,类似于一维数组或列表。

    Series 可以存储任何数据类型,并且每个元素都有一个与之关联的标签,称为索引。 索引有助于对数据进行标记和命名,使得数据的访问更加方便和直观。

    与传统的数组和列表不同,Pandas 的索引可以是任意数据类型,包括整数、字符串、日期等,不同元素的索引也可以是相同的。

    在创建一个 Series 时,可以通过指定索引来为每个元素进行命名,这样一来就可以通过索引来访问和操作这些元素。

    在访问 Series 中的元素时,同样需要使用索引来指定要访问的位置。

  • 创建 Series 对象:

    pandas.Series(data=None, index=None, dtype: Dtype = None, name=None, copy: bool=False, fastpath: bool = False)
    
    • data:指定 Series 中的数据,可以是列表、数组、字典、标量值等。必选参数

    • index:指定 Series 的索引,用于标识和访问数据。

      索引可以是列表、数组、范围对象、标量值或其他 Series

      如果没有显式指定索引,Pandas 将自动生成一个默认的整数索引

    • dtype:指定 Series 中数据的数据类型。如果不指定,Pandas 将尝试自动推断数据类型

    • name:指定 Series 的名称

    • copy:默认为 False。如果设置为 True,则会复制数据,而不是使用原始数据的引用。

  • 示例

    import pandas as pd
    import numpy as np# 创建Series(默认索引)
    data = pd.Series([1, np.nan, 6])
    # 创建Series(自建索引)
    data = pd.Series([1, np.nan, 6], index=[0, 3, 4])
    # 创建Series(通过字典直接创建带索引的数据)
    data = pd.Series({0: 1, 3: np.nan, 4: 6})
    print(data)# 输出结果
    0    1.0
    3    NaN
    4    6.0
    dtype: float64
    

DataFrame

  • DataFrame :是 Pandas 中的二维数据结构,类似于 Excel 表格或 SQL 表,由行和列组成,并且可以存储不同类型的数据。

    DataFrame 可以看做是一系列 Series 对象的集合,每个 Series 对象代表一列数据

    在 DataFrame 中,索引的作用更加重要。除了可以为每一行和每一列指定索引外,DataFrame 还支持多级索引,也就是可以为行和列同时指定多个索引。这为多维数据的处理提供了更多的灵活性和功能性。

    通过索引,可以轻松地从 DataFrame 中选择特定的行数和列数,可以通过指定行索引和列索引来选择任意子集的数据,也可以通过使用条件表达式来筛选满足特定条件的数据。

  • 创建 DataFrame 对象:

    pandas.DataFrame(data=None, index=None, dtype: Dtype = None, columns: Axes = None, copy: bool=False)
    
    • data:指定 Series 中的数据,可以是列表、数组、字典、标量值等。必选参数

    • index:指定 Series 的索引,用于标识和访问数据。

      索引可以是列表、数组、范围对象、标量值或其他 Series

      如果没有显式指定索引,Pandas 将自动生成一个默认的整数索引

    • dtype:指定 Series 中数据的数据类型。如果不指定,Pandas 将尝试自动推断数据类型

    • columns:指定 DataFrame 的列标签,用于标识和访问列。

      列标签可以是列表、数组、范围对象、标量值或其他 Series。

      如果没有显式指定列标签,Pandas 将自动生成默认的整数列标签。

    • copy:默认为 False。如果设置为 True,则会复制数据,而不是使用原始数据的引用。

  • 示例:

    import pandas as pddata = {'name': ['John', 'Emma', 'Mike', 'Lisa'],'age': [28, 24, 32, 35],'city': ['New York', 'London', 'Paris', 'Tokyo']}
    df1 = pd.DataFrame(data)# 通过columns指定DataFrame的列索引
    data = [[1,'Bob', 24, 'American'],[2, 'Nancy', 23, 'Australia'],[3, 'Lili', 22, 'China'],[4, 'Leo', 27, 'M78'],[5, 'David', 24, 'moon']]
    df2 = pd.DataFrame(data, columns=['serial', 'name', 'age', 'from',])# 自定义索引
    df3 = pd.DataFrame(data, columns=['serial', 'name', 'age', 'from'], index=['a','b','c','d','e'])# df1 输出结果name  age      city
    0  John   28  New York
    1  Emma   24    London
    2  Mike   32     Paris
    3  Lisa   35     Tokyo
    # df3 输出结果serial   name  age       from
    a       1    Bob   24   American
    b       2  Nancy   23  Australia
    c       3   Lili   22      China
    d       4    Leo   27        M78
    e       5  David   24       moon
    

常用函数和方法

数据导入和导出

Pandas 可以从多种数据源导入数据,包括 CSV、Excel、SQL 数据库、JSON 等,并且可以将数据导出到这些格式。

  • pandas.read_csv() :从 CSV 文件导入数据,返回一个 DataFrame 对象(df)

    参数说明:

    • filepath_or_buffer :CSV 文件路径或文件对象。
    • sep :可选,分隔符,默认为逗号
    • header :可选,指定哪一行作为列名,默认为第一行
    • index_col :可选,指定哪一列作为索引
  • pandas.read_excel() :从 Excel 文件导入数据,返回一个 DataFrame 对象(df)

    参数说明:

    • io :Excel 文件路径、文件对象或 URL
    • sheet_name :可选,工作表名称
    • header :可选,指定哪一行作为列名,默认为第一行
  • df.to_csv() :将数据导出为 CSV 文件

    参数说明:

    • path_or_buf :导出的文件路径或文件对象
    • sep :可选,分隔符,默认为逗号
    • index :可选,是否包含索引,默认为 True
  • df.to_excel() :将数据导出为 Excel 文件

    参数说明:

    • excel_writer :Excel 文件路径、文件对象或 ExcelWriter 对象
    • sheet_name :可选,工作表名称
    • index :可选,是否包含索引,默认为 True
  • 示例

    import pandas as pd
    # 从CSV文件导入数据
    df = pd.read_csv('data.csv')
    # 将数据导出到Excel文件
    df.to_excel('data.xlsx', index=False)
    

数据处理和转换

Pandas 提供了各种方法来处理缺失数据、重复数据、异常数据,以及进行数据变换、筛选和合并不同数据源的数据,包括连接、合并和联接等操作。

  • df.isnull()df.notnull() :检测缺失值

  • df.drop() :删除行或列

  • df.dropna() :删除包含缺失值的行

  • df.drop_duplicates() :删除重复行

  • df.fillna(value) :填充缺失值

  • df.apply(func) :应用函数到行或列

  • df.groupby(‘column_name’).mean() :分组数据(聚合)

  • df.pivot_table() :创建透视表

  • df.melt() :将宽格式数据转换为长格式

  • 示例

    # 聚合操作
    data = [[1,'Bob', 24, 'high-school'],[2, 'Nancy', 23, 'college'],[3, 'Lili', 22, 'college']]
    df = pd.DataFrame(data, columns=['serial', 'name', 'age', 'grade'], index=['a','b','c'])
    # 聚合,按grade分组,并计算分组后的平均年龄
    xdf = df.groupby('grade')['age'].mean()# 透视表
    pd.pivot_table(df, values='value_column', index='index_column', columns='column_to_pivot')
    # 应用自定义函数
    df.apply(custom_function, axis=1)
    

数据合并和拆分

  • pd.concat() :用于合并行(纵向堆叠)或列(横向连接)数据,通常用于连接不同数据集的行或列,但不执行基于列的合并,不对数据重复值进行检查或处理,只是简单地将数据堆叠在一起

    主要参数说明:

    • objs :要合并的数据对象列表,可以是 DataFrame 或 Series 的列表。唯一的必选参数

    • axis :指定合并的轴方向。默认为 0,表示按行合并(纵向堆叠),如果设置为 1,表示按列合并(横向连接)

    • join :指定连接的方式,默认为 'outer'。可以取以下值:

      • 'outer':执行外连接,保留所有的行或列,并使用缺失值填充不存在的数据。
      • 'inner':执行内连接,只保留共有的行或列。
    • ignore_index :默认为 False。如果设置为 True,将忽略原始索引,创建新的连续整数索引。

    • keys :用于创建层次化索引的标签,可以是字符串、列表或数组。如果提供了 keys,将创建 MultiIndex。

    **适用场景:**主要用于简单的数据堆叠操作,合并来自不同来源或处理方式的数据,如将多个相似的数据集按行堆叠在一起,或者将不同数据集的列拼接在一起

  • pd.merge() :用于基于列的合并,类似于 SQL 中的 JOIN 操作,用于将两个或多个数据框(DataFrame)根据一个或多个共享的列进行连接。

    pd.merge() 通常会检查连接列中是否有重复值,并根据连接类型执行不同的处理操作,如 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN。

    主要参数说明:

    • left:左侧的 DataFrame,用于合并的左侧数据。
    • right:右侧的 DataFrame,用于合并的右侧数据。
    • how:指定连接方式,默认为 'inner'。可以取以下值:
      • 'inner':执行内连接,只保留两个 DataFrame 中共有的行。
      • 'outer':执行外连接,保留两个 DataFrame 中的所有行,缺失值用 NaN 填充。
      • 'left':执行左连接,保留左侧 DataFrame 中的所有行,右侧 DataFrame 中没有匹配的行用 NaN 填充。
      • 'right':执行右连接,保留右侧 DataFrame 中的所有行,左侧 DataFrame 中没有匹配的行用 NaN 填充。
    • on:用于连接的列名(左右两侧 DataFrame 中具有相同名称的列)。可以是单个列名的字符串,或者是列名的列表(如果需要多列连接)。
    • left_on:左侧 DataFrame 中用于连接的列名,如果左右两侧的连接列名称不同,可以使用该参数指定左侧的列名。
    • right_on:右侧 DataFrame 中用于连接的列名,如果左右两侧的连接列名称不同,可以使用该参数指定右侧的列名。
    • left_index:默认为 False。如果设置为 True,则使用左侧 DataFrame 的索引作为连接键。
    • right_index:默认为 False。如果设置为 True,则使用右侧 DataFrame 的索引作为连接键。
    • suffixes:默认为 ('_x', '_y')。用于处理重叠列名的后缀字符串元组,可以指定在列名冲突时添加到列名末尾。
    • sort:默认为 False。如果设置为 True,在合并后对结果进行排序。
    • copy:默认为 True。如果设置为 False,尝试在不复制数据的情况下执行连接操作,可以提高性能。

    **适用场景:**主要用于更复杂的基于列的数据连接和合并操作,基于共享列合并来自不同数据集的数据,通常用于数据关联、数据连接和数据库风格的合并操作。

  • pd.join() :函数根据索引或列的值进行连接

  • df.split() :将包含多个值的单个列拆分成多个列,从而使数据更加规整和易于处理

  • 示例:

    # 合并两个DataFrame
    merged_df = pd.concat([df1, df2], axis=0)
    # 数据库风格的连接
    merged_df = pd.merge(df1, df2, on='key_column')
    

数据查看和概览

  • df.head(n) :查看 DataFrame 的前 n 行,默认为 5 行
  • df.tail(n) :查看 DataFrame 的后 n 行,默认为 5 行
  • df.info() :查看 DataFrame 的基本信息,包括数据类型和非空值数量
  • df.describe() :生成描述性统计信息,包括均值、标准差等

数据选择和检索

  • df[‘column_name’] :选择单列

  • df[[‘col1’, ‘col2’]] :选择多列

  • df.loc[row_label] :使用标签选择行

  • df.iloc[row_index] :使用整数索引选择行

  • df.query() :使用条件查询数据

  • 示例:

    # 选择列:可以使用列名或列索引来选择列。
    df['name']
    # 选择行:可以使用行索引来选择行。
    df.loc['a']
    # 切片方式访问。访问第二行到第三行数据
    df.iloc[1:3] 
    

数据筛选和过滤

  • df[df[‘column_name’] > value] :按条件筛选行

  • df[(condition1) & (condition2)] :使用逻辑运算符筛选行

  • 示例

    # 过滤行:可以使用条件表达式来过滤行。
    df[df['age'] > 30]
    

数据排序和排名

  • df.sort_values(‘column_name’) :按列值排序

  • df.sort_index() :按索引排序

  • df.rank() :为数据分配排名

  • 示例:

    df = df.sort_values(by='age', ascending=False)
    

时间序列处理

Pandas 对时间序列数据提供了强大的支持,包括日期解析、时间索引和滚动窗口操作。

  • pd.to_datetime(arg, format) :将字符串转换为日期时间类型

    • arg :日期时间字符串、时间戳、Series 等
    • format :可选,指定日期时间格式
  • df.resample() :重采样时间序列数据

  • df.shift(periods, freq) :平移时间序列数据

  • 示例:

    # 解析日期列
    df['date_column'] = pd.to_datetime(df['date_column'])
    # 创建时间索引
    df.set_index('date_column', inplace=True)
    # 滚动窗口操作
    df['rolling_mean'] = df['value_column'].rolling(window=3).mean()
    

数据可视化

Pandas 整合了 Matplotlib 库,可以轻松地可视化数据。

  • df.plot() :绘制数据可视化图表

    • 可以通过参数指定图表类型(例如,‘line’、‘bar’、‘scatter’ 等)和其他绘图选项
  • df.hist() :绘制直方图

    • 可以通过参数指定直方图的柱数、颜色等
  • df.boxplot() :绘制箱线图

    • 可以通过参数指定是否显示
  • 示例:

    import matplotlib.pyplot as plt
    # 创建柱状图
    df['column_name'].plot(kind='bar')
    # 创建散点图
    df.plot.scatter(x='x_column', y='y_column')
    # 更多的可视化选项可以结合使用 Pandas 和 Matplotlib
    

高级用法

多级索引

  • Pandas 的多级索引功能非常强大,它允许在一个 DataFrame 中创建复杂的层次结构索引,从而更灵活地组织和分析数据。

    一个常见的应用场景是使用多级索引来表示时间序列数据,比如将年份和季度作为索引的两个层级。

  • 通过创建多级索引,可以将数据按照不同的层级进行划分和聚合。

    例如,可以根据年份来对数据进行分组,然后在每个年份内再按照季度进行分组。这样,可以更方便地进行各种统计分析,比如计算每个季度的平均值、总和等。

  • 在创建多级索引时,可以使用 Pandas 的 MultiIndex 类来指定索引的层级和标签。

    通过指定层级的名称和对应的标签值,可以轻松地创建一个具有多级索引的 DataFrame。

  • 使用多级索引可以带来很多好处,比如提高数据的查询效率、简化数据的操作和分析等。

    但同时,也需要注意在使用多级索引时,要避免索引混淆和数据结构复杂度过高的问题。

    因此,在使用多级索引时,需要根据具体的需求和数据特点来灵活应用。

  • 示例:

    import pandas as pd# 创建多级索引
    index = pd.MultiIndex.from_tuples([('2019', 'Q1'), ('2019', 'Q2'), ('2020', 'Q1'), ('2020', 'Q2')])
    data = pd.DataFrame({'Sales': [100, 200, 150, 250]}, index=index)
    # 查询特定季度的销售数据
    print(data.loc[('2020', 'Q1')])
    print("==================")
    # 查询特定年份的销售数据
    print(data.loc['2020'])# 输出结果:
    Sales    150
    Name: (2020, Q1), dtype: int64
    ==================Sales
    Q1    150
    Q2    250
    

透视表

  • 透视表是一种根据数据中的一个或多个列创建汇总表格的方法。

    Pandas 提供了 pivot_table() 函数,可以方便地对数据进行聚合和分析。

    通过 pivot_table() 函数,可以指定一个或多个列作为行索引,另一个或多个列作为列索引,然后根据指定的聚合函数对数据进行汇总。这样,就可以快速计算出各个行和列对应的统计量,比如平均值、总和、计数等。

  • Pandas 的透视表功能提供了一种方便、灵活的数据聚合和分析方法,可以帮助更好地理解和利用数据。

    透视表的好处在于它提供了一种直观、简洁的方式来查看和分析数据。

    通过透视表,可以轻松地对数据进行切片、切块和筛选,从而更深入地了解数据的特征和关系。

  • 使用透视表时,可以根据具体的需求选择合适的聚合函数、行列索引和筛选条件,以获取想要的分析结果。

    透视表不仅适用于单个 DataFrame,还可以用于多个 DataFrame 的合并和分析。

  • 示例:

    import pandas as pd# 创建一个包含销售数据的DataFrame
    data = pd.DataFrame({'Year': ['2019', '2019', '2020', '2020'],'Quarter': ['Q1', 'Q2', 'Q1', 'Q2'],'Product': ['A', 'B', 'A', 'B'],'Sales': [100, 200, 150, 250]})
    # 创建透视表
    pivot_table = data.pivot_table(index='Year', columns='Quarter', values='Sales', aggfunc='sum')
    # 打印透视表
    print(pivot_table)# 输出结果
    Quarter   Q1   Q2
    Year
    2019     100  200
    2020     150  250
    

时间序列分析

  • 在处理时间序列数据方面,Pandas 提供了灵活且高效的功能。

    它的日期和时间处理功能包括日期范围生成、日期索引、日期加减运算、日期格式化等。可以轻松地创建日期范围,并使用这些日期作为数据的索引,便于对时间序列数据进行操作和分析。

  • Pandas 还支持重采样操作,可以将时间序列数据从一个频率转换为另一个频率。

    例如,可以将按天采样的数据转换为按月采样的数据,或者将按小时采样的数据转换为按分钟采样的数据。重采样功能允许根据需要灵活地调整数据的粒度和频率。

  • Pandas 还提供了滑动窗口操作,可以在时间序列数据上执行滑动窗口统计计算。

    可以定义窗口的大小和滑动的步长,并针对窗口内的数据进行汇总、聚合或其他计算操作。这对于处理时间序列数据中的移动平均值、滚动求和等任务非常有用。

  • 示例:

    import pandas as pd# 创建一个包含时间序列数据的DataFrame
    df = pd.DataFrame({'Date': pd.date_range(start='2020-01-01', periods=10),'Sales': [100, 200, 150, 250, 180, 120, 300, 350, 400, 250]})# 将日期列设置为索引
    df.set_index('Date', inplace=True)
    # 计算每周销售总额
    weekly_sales = df.resample('W').sum()
    # 打印每周销售总额
    print(weekly_sales)
    

处理 Excel 文件

  • 当使用 Pandas 处理 Excel 文件时,可以使用 read_excel() 函数来读取 Excel 数据,并将其加载到一个 DataFrame 中。

    然后可以对读取的数据进行各种操作和处理,例如筛选特定列的数据、根据条件筛选数据、对数据进行排序,在 DataFrame 中添加了新的列等等。

  • 示例:

    import pandas as pd# 读取Excel文件
    df = pd.read_excel('data.xlsx', sheet_name='Sheet1')# 显示DataFrame的前几行数据
    print(df.head())# 筛选特定列数据
    selected_columns = ['Name', 'Age']
    filtered_data = df[selected_columns]# 按条件筛选数据
    condition = df['Age'] > 25
    filtered_data = df[condition]# 数据排序
    sorted_data = df.sort_values(by='Age', ascending=False)# 添加新列
    df['Gender'] = ['Male', 'Female', 'Male', 'Female', 'Male']# 写入到新的Excel文件
    df.to_excel('new_data.xlsx', index=False)
    

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

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

相关文章

EasyRecovery易恢复2024最新免费版电脑数据恢复软件功能介绍

EasyRecovery从(易恢复2024)支持恢复不同存储介质数据,在Windows中恢复受损和删除文件,以及能检索数据格式化或损坏卷,甚至还可以从初始化磁盘。同时,你只需要最简单的操作就可以恢复数据文件,如&#xff1…

kubeadm 安装k8s1.28.x 底层走containerd 容器

1. k8s1.28.x 的概述 1.1 k8s 1.28.x 更新 Kubernetes v1.28 是 2023 年的第二个大版本更新,包含了 46 项主要的更新。 而今年发布的第一个版本 v1.27 有近 60 项,所以可以看出来,在发布节奏调整后, 每个 Kubernetes 版本中都会包…

DeepSort知识整理:余弦距离和马氏距离 (一)

一、余弦距离 1.1 余弦相似度 余弦相似度是用来衡量两个非零向量之间的夹角的余弦值。对于两个向量 A A A 和 B B B,余弦相似度的计算公式为: C o s i n e S i m i l a r i t y ( A , B ) A ⋅ B ∥ A ∥ ∥ B ∥ {\rm{Cosine Similarity }}\left( …

maven篇---第二篇

系列文章目录 文章目录 系列文章目录前言一、什么是Maven的坐标?二、讲一下maven的生命周期三、说说你熟悉哪些maven命令?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的…

离散型制造业生产管理mes系统介绍

典型的离散制造业主要包括机械、电子、航空、汽车等行业,这些企业既有按订单生产,也有按库存生产,既有批量生产,也有单件小批生产。那么,注重生产计划的制定,生产的快速响应是离散行业MES系统应用的关键。 …

两道面试题秒杀你的C++基础!

大家好,我是光城,今天发两个非常重要的面试题,可以留言区说出你的答案,这两个题目都比较重要,看你能答对不? 1.C中初始化变量有几种方式,各自有什么区别? 或者说Initialization分为哪…

Ubuntu 安装高版本FFmpeg

使用第三方PPA 源来安装: FFmpeg 5 sudo add-apt-repository ppa:savoury1/ffmpeg4 sudo add-apt-repository ppa:andykimpe/ffmpeg5 sudo apt-get update sudo apt-get install ffmpeg详见 https://launchpad.net/~andykimpe/archive/ubuntu/ffmpeg5 FFmpeg 6 sudo add-ap…

【已验证】SqlBulkCopy 执行批量插入的时候报超时问题-解决办法

把datatable里面的数据插入到数据库,但是数据量大的情况下批量插入会提示超时,所以把datatable的数据分批写入数据库的 using (SqlConnection connection new SqlConnection(ConnectionString)){connection.Open();int pageSize 100000;//SqlBulkCopy大…

已解决:虚拟机集群xsehll连接不上

问题描述: hadoop102能连上,hadoop103、hadoop104无法连接,以前都能连上,今天突然就连不上了 解决方案: 使用ifconfig命令查看有没有ens33 如果没有的话那就证明你的问题和我一样 依次使用以下命令: sys…

MVCC是如何保证隔离性的

之前提到了MVCC可以一定程度上避免幻读,那具体MVCC是咋工作的呢? 需要介绍两个机制:read view和聚簇索引的两个隐藏列 read view 这个就是我们理解的快照,有四个字段,本事务id、活跃事务id列表(包含自己&…

精神衰弱怎么办?如何改变精神衰弱?

精神衰弱也叫神经衰弱,跟个人体质有一定的关系,更多是因为环境因素的长期作用所致,比如长期处于紧张和压力之下,这容易产生精神衰弱。当下有个流行词叫“精神内耗”,这个严重的精神内耗其实同样会导致精神衰弱。 精神…

MySQL 的 NULL 是怎么存储的?

目录 一、MySQL介绍 二、什么是NULL 三、MySQL 的 NULL 是怎么存储的 一、MySQL介绍 MySQL是一种关系型数据库管理系统(RDBMS),它是一种开源软件,由瑞典MySQL AB公司开发,后被Sun Microsystems收购,现在…

互联网摸鱼日报(2023-12-04)

互联网摸鱼日报(2023-12-04) 36氪新闻 GV连续三轮押注,手握超3.5亿美元,这家企业的抗癌多肽已进临床试验 暴跌4成!保时捷在中国卖不动了 2023年12月广东新三板企业市值TOP100:28家企业冲击北交所 贝恩资本,一举募资…

产品经理面试问题(四)

今天和大家免费分享产品经理常见的面试题目,含回答思路分析和回答事例。 【资源下载】 这个模板可以在 Axure高保真原型哦 小程序里免费下载 打开小程序后,在文档模板模块,搜索产品经理面试题目,获取下载地址 更多原型模板、视…

【自然语言处理】【大模型】VeRA:可调参数比LoRA小10倍的低秩微调方法

VeRA:可调参数比LoRA小10倍的低秩微调方法 《VeRA:Vector-based Random Matrix Adaptation》 论文地址:https://arxiv.org/pdf/2310.11454.pdf 相关博客 【自然语言处理】【大模型】VeRA:可调参数比LoRA小10倍的低秩微调方法 【自…

jdk1.8 hashmap源码阅读

目录 hashmap 成员变量 hashmap支持null键吗?为什么? 当扩容的时候,所有元素都会重新计算hash值吗? 怎么减少扩容次数 为什么node数组的大小是2的n次? 1.8和1.7的区别 1.8为啥要用红黑树? 扩容机制…

Python:核心知识点整理大全1-笔记

在本章中,你将运行自己的第一个程序——hello_ world.py。为 此,你首先需要检查自己的计算机是否安装了Python;如果没有安装, 你需要安装它。你还要安装一个文本编辑器,用于编写和运行Python 程序。你输入Python代码时…

详解云WAF:免费GOODWAF归来

文前聊心 说说这篇文章的目的: 介绍一下自己的开发升级的项目:GOODWAF,看名字也能看的出来这是一款防火墙,但它不同于现在的软件防火墙,它是一款云WAF防火墙。 其实GOODWAF这个IP概念前两年就存在了,但为什…

【PTA-C语言】编程练习3 - 循环结构Ⅰ

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习3 - 循环结构(1~8) 7-1 统计整数的位数(分数 15)7-2 输出闰年(分数 15)7-3 求分数序列前N项和(分数 15&#xff09…

34、AD/DA

AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换…