Pandas:数据处理与分析

目录

一、Pandas 简介

二、Pandas 的安装与导入

三、Pandas 的核心数据结构

(一)Series

(二)DataFrame

四、Pandas 数据读取与写入

(一)读取数据

(二)写入数据

五、数据清洗与预处理

(一)处理缺失值

(二)数据去重

(三)数据转换

(四)数据合并与连接

六、数据探索与分析

(一)数据概览

(二)数据分组与聚合

(三)数据筛选与排序

七、Pandas 的实际应用案例

(一)金融数据分析

(二)销售数据分析

八、Pandas 的高级特性

(一)时间序列分析

(二)高级数据透视表

(三)数据管道操作

九、Pandas 的性能优化

十、Pandas 的局限性与注意事项

一、Pandas 简介

Pandas 是一个开源的 Python 数据分析库,由 Wes McKinney 于 2008 年创建。它的名字来源于 “panel data”(面板数据),这是一种在经济学中常用的多维数据类型。Pandas 的目标是为 Python 提供一个功能强大、灵活易用的数据结构和数据分析工具,以满足现实世界中复杂多样的数据处理需求。

Pandas 的核心优势在于其两大主要数据结构:SeriesDataFrameSeries 是一个一维的标签化数组,而 DataFrame 则是一个二维的表格型数据结构,类似于 Excel 中的表格或 SQL 中的表。这些数据结构使得数据的存储、检索、操作和分析变得更加直观和高效。

二、Pandas 的安装与导入

要使用 Pandas,首先需要确保它已正确安装在你的 Python 环境中。可以通过以下方式进行安装:

  • 使用 pip 安装 :在命令行中输入 “pip install pandas”,pip 会自动下载并安装 Pandas 及其依赖项。

  • 使用 conda 安装 :如果你使用 Anaconda 发行版,可以在命令行中输入 “conda install pandas”,conda 会从其仓库中安装合适的 Pandas 版本。

安装完成后,在 Python 脚本或交互式环境中,通过以下代码导入 Pandas:

import pandas as pd

通常我们使用 “pd” 作为 Pandas 的别名,这样在后续代码中可以更简洁地调用 Pandas 的函数和类。

三、Pandas 的核心数据结构

(一)Series

Series 是 Pandas 中的一维数据结构,类似于 NumPy 的一维数组,但带有标签。这些标签可以是任何类型,如整数、字符串等,它们为数据提供了更直观的索引方式。

创建 Series 的基本方法如下

import pandas as pd# 从列表创建 Series
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)

0    10
1    20
2    30
3    40
4    50
dtype: int64

默认情况下,Series 的索引是从 0 开始的整数序列。你也可以自定义索引:

import pandas as pd# 从列表创建 Series 并自定义索引
data = [10, 20, 30, 40, 50]
index = ['a', 'b', 'c', 'd', 'e']
s = pd.Series(data, index=index)
print(s)

a    10
b    20
c    30
d    40
e    50
dtype: int64

访问 Series 中的元素可以通过索引标签或位置:

# 通过索引标签访问元素
print(s['b'])  # 输出 20# 通过位置访问元素
print(s[2])    # 输出 30

(二)DataFrame

DataFrame 是 Pandas 中的二维数据结构,类似于表格,包含行和列。它是 Pandas 最常用的数据结构之一,适合存储和处理结构化数据。

创建 DataFrame 的基本方法如下:

import pandas as pd# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)
print(df)

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35       Chicago
3    David   40       Houston

DataFrame 的列可以通过列名进行访问和操作

# 访问某一列
print(df['Name'])

0      Alice
1        Bob
2    Charlie
3      David
Name: Name, dtype: object

你也可以同时访问多列:

# 访问多列
print(df[['Name', 'Age']])

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35
3    David   40

DataFrame 的行可以通过 iloc(基于整数位置索引)或 loc(基于标签索引)进行访问:

# 通过 iloc 访问第 2 行
print(df.iloc[2])
Name      Charlie
Age             35
City       Chicago
Name: 2, dtype: object
# 通过 loc 访问索引标签为 1 的行
print(df.loc[1])

输出结果:

Name          Bob
Age           30
City    Los Angeles
Name: 1, dtype: object

四、Pandas 数据读取与写入

Pandas 提供了丰富的函数用于读取和写入各种格式的数据,如 CSV、Excel、SQL 数据库等。

(一)读取数据

  • 读取 CSV 文件

import pandas as pd# 读取 CSV 文件
df = pd.read_csv('data.csv')
print(df.head())  # 显示前 5 行数据
  • 读取 Excel 文件

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df.head())
  • 从 SQL 数据库读取数据

import pandas as pd
import sqlite3# 连接到 SQLite 数据库
conn = sqlite3.connect('database.db')# 从数据库读取数据
df = pd.read_sql_query('SELECT * FROM table_name', conn)
print(df.head())# 关闭数据库连接
conn.close()

(二)写入数据

  • 写入 CSV 文件

import pandas as pd# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)# 将 DataFrame 写入 CSV 文件
df.to_csv('output.csv', index=False)
  • 写入 Excel 文件

import pandas as pd# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)# 将 DataFrame 写入 Excel 文件
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
  • 写入 SQL 数据库

import pandas as pd
import sqlite3# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)# 连接到 SQLite 数据库
conn = sqlite3.connect('database.db')# 将 DataFrame 写入数据库
df.to_sql('table_name', conn, if_exists='replace', index=False)# 关闭数据库连接
conn.close()

五、数据清洗与预处理

在实际数据分析中,数据往往不完整、不一致或包含错误,需要进行清洗和预处理,以确保数据的质量。Pandas 提供了许多工具来帮助完成这些任务。

(一)处理缺失值

缺失值是数据清洗中常见的问题,Pandas 提供了检测、删除和填充缺失值的函数。

  • 检测缺失值

import pandas as pd# 创建包含缺失值的 DataFrame
data = {'A': [1, 2, None, 4],'B': [5, None, 7, 8],'C': [9, 10, 11, None]
}
df = pd.DataFrame(data)# 检测缺失值
print(df.isnull())

输出结果:

       A      B      C
0  False  False  False
1  False   True  False
2   True  False  False
3  False  False   True
  • 删除缺失值

# 删除包含缺失值的行
df.dropna(inplace=True)
print(df)
  • 填充缺失值

# 用 0 填充缺失值
df.fillna(0, inplace=True)
print(df)

(二)数据去重

重复数据可能导致分析结果的偏差,Pandas 提供了检测和删除重复数据的功能。

  • 检测重复数据

import pandas as pd# 创建包含重复数据的 DataFrame
data = {'A': [1, 2, 2, 4],'B': [5, 6, 6, 8],'C': [9, 10, 10, 12]
}
df = pd.DataFrame(data)# 检测重复行
print(df.duplicated())
0    False
1    False
2     True
3    False
dtype: bool
  • 删除重复数据

# 删除重复行
df.drop_duplicates(inplace=True)
print(df)

(三)数据转换

数据转换是将数据从一种形式转换为另一种形式的过程,包括数据类型转换、数值缩放、编码等。

  • 数据类型转换

import pandas as pd# 创建 DataFrame
data = {'A': [1, 2, 3, 4],'B': [5.0, 6.5, 7.2, 8.9],'C': ['apple', 'banana', 'orange', 'grape']
}
df = pd.DataFrame(data)# 将列 A 转换为浮点型
df['A'] = df['A'].astype(float)# 将列 B 转换为整型(向下取整)
df['B'] = df['B'].astype(int)print(df.dtypes)

输出结果:

A      float64
B      int32
C     object
dtype: object
  • 数值缩放

import pandas as pd# 创建 DataFrame
data = {'A': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)# 使用 Min-Max 缩放将数据缩放到 [0, 1] 范围
df['A'] = (df['A'] - df['A'].min()) / (df['A'].max() - df['A'].min())
print(df)

输出结果:

     A
0  0.0
1  0.25
2  0.5
3  0.75
4  1.0
  • 编码分类数据

import pandas as pd# 创建包含分类数据的 DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']
}
df = pd.DataFrame(data)# 使用 one-hot 编码转换分类数据
df = pd.get_dummies(df, columns=['Color'])
print(df)

输出结果:

   Color_Blue  Color_Green  Color_Red
0           0            0          1
1           1            0          0
2           0            1          0
3           0            0          1
4           1            0          0

(四)数据合并与连接

在数据分析中,通常需要将多个数据集合并成一个,Pandas 提供了多种方法来实现数据的合并和连接。

  • 合并数据集

import pandas as pd# 创建两个 DataFrame
data1 = {'Key': ['A', 'B', 'C', 'D'],'Value1': [10, 20, 30, 40]
}
df1 = pd.DataFrame(data1)data2 = {'Key': ['B', 'D', 'E', 'F'],'Value2': [50, 60, 70, 80]
}
df2 = pd.DataFrame(data2)# 基于 'Key' 列合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='Key', how='inner')
print(merged_df)

输出结果:

  Key  Value1  Value2
0   B      20      50
1   D      40      60

how 参数可以取以下值:

  • inner :内连接(默认),只保留两个数据集中共有的键。

  • outer :外连接,保留两个数据集中的所有键,缺失值用 NaN 填充。

  • left :左连接,保留左数据集中的所有键,右数据集中缺失的键用 NaN 填充。

  • right :右连接,保留右数据集中的所有键,左数据集中缺失的键用 NaN 填充。

  • 连接数据集

import pandas as pd# 创建两个 DataFrame
data1 = {'A': [1, 2, 3],'B': [4, 5, 6]
}
df1 = pd.DataFrame(data1, index=['X', 'Y', 'Z'])data2 = {'C': [7, 8, 9],'D': [10, 11, 12]
}
df2 = pd.DataFrame(data2, index=['Y', 'Z', 'W'])# 按行连接两个 DataFrame
concatenated_df = pd.concat([df1, df2], axis=0)
print(concatenated_df)

输出结果:

     A    B     C     D
X  1.0  4.0   NaN   NaN
Y  2.0  5.0   7.0  10.0
Z  3.0  6.0   8.0  11.0
W  NaN  NaN   9.0  12.0

axis 参数指定连接的方向,axis=0 表示按行连接,axis=1 表示按列连接。

六、数据探索与分析

Pandas 提供了丰富的函数用于数据的探索和分析,帮助你快速了解数据的基本特征和统计信息。

(一)数据概览

  • 查看前几行数据

import pandas as pd# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)# 查看前 3 行数据
print(df.head(3))

输出结果:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35       Chicago
  • 查看数据的基本信息

# 查看数据的基本信息
df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):#   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 0   Name    4 non-null      object1   Age     4 non-null      int64 2   City    4 non-null      object
dtypes: int64(1), object(2)
memory usage: 208.0+ bytes
  • 查看数据的统计摘要

# 查看数据的统计摘要
print(df.describe())

             Age
count   4.000000
mean   32.500000
std     6.454972
min    25.000000
25%    28.750000
50%    32.500000
75%    36.250000
max    40.000000

(二)数据分组与聚合

数据分组与聚合是数据分析中的常见操作,Pandas 提供了方便的 groupby 和聚合函数来实现这些功能。

  • 按某一列分组并求和

import pandas as pd# 创建 DataFrame
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)# 按 'Category' 列分组,并对 'Value' 列求和
grouped_df = df.groupby('Category')['Value'].sum()
print(grouped_df)

Category
A    90
B   120
Name: Value, dtype: int64
  • 按多列分组并计算多种聚合统计量

import pandas as pd# 创建 DataFrame
data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],'Subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)# 按 'Category' 和 'Subcategory' 列分组,并计算 'Value' 列的均值和总和
grouped_df = df.groupby(['Category', 'Subcategory'])['Value'].agg(['mean', 'sum'])
print(grouped_df)

                     mean  sum
Category Subcategory         
A        X             30   90
B        Y             40  120

(三)数据筛选与排序

  • 数据筛选

import pandas as pd# 创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 30, 35, 40, 28],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Seattle']
}
df = pd.DataFrame(data)# 筛选年龄大于 30 的行
filtered_df = df[df['Age'] > 30]
print(filtered_df)
      Name  Age         City
2  Charlie   35       Chicago
3    David   40       Houston
  • 数据排序

# 按年龄降序排序
sorted_df = df.sort_values(by='Age', ascending=False)
print(sorted_df)

      Name  Age         City
3    David   40       Houston
2  Charlie   35       Chicago
1      Bob   30     Los Angeles
4      Eve   28        Seattle
0    Alice   25        New York

七、Pandas 的实际应用案例

(一)金融数据分析

假设我们有一个股票价格数据集,包含日期、开盘价、收盘价、最高价、最低价和成交量等信息。我们可以使用 Pandas 对这些数据进行分析。

import pandas as pd# 读取股票价格数据
df = pd.read_csv('stock_prices.csv')# 转换日期列为日期时间类型
df['Date'] = pd.to_datetime(df['Date'])# 将日期列设置为索引
df.set_index('Date', inplace=True)# 计算每日收益率
df['Return'] = df['Close'].pct_change() * 100# 绘制收盘价和收益率图
import matplotlib.pyplot as pltfig, ax1 = plt.subplots()ax1.plot(df['Close'], label='Close Price', color='blue')
ax1.set_xlabel('Date')
ax1.set_ylabel('Close Price', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')ax2 = ax1.twinx()
ax2.plot(df['Return'], label='Daily Return', color='red', linestyle='--')
ax2.set_ylabel('Daily Return (%)', color='red')
ax2.tick_params(axis='y', labelcolor='red')plt.title('Stock Price and Daily Return')
fig.tight_layout()
plt.show()

(二)销售数据分析

假设我们有一个销售数据集,包含产品名称、销售日期、销售数量、销售价格等信息。我们可以使用 Pandas 分析产品的销售趋势和收益情况。

import pandas as pd# 读取销售数据
df = pd.read_csv('sales_data.csv')# 转换销售日期列为日期时间类型
df['Sale Date'] = pd.to_datetime(df['Sale Date'])# 按月统计销售数量和销售额
monthly_sales = df.resample('M', on='Sale Date').agg({'Quantity': 'sum','Price': 'sum'
})
monthly_sales.columns = ['Total Quantity', 'Total Sales']# 绘制月度销售趋势图
import matplotlib.pyplot as pltmonthly_sales.plot(kind='line', secondary_y='Total Sales')
plt.title('Monthly Sales Trend')
plt.xlabel('Month')
plt.ylabel('Total Quantity')
plt.gcf().axes[1].set_ylabel('Total Sales')
plt.tight_layout()
plt.show()

八、Pandas 的高级特性

(一)时间序列分析

Pandas 提供了强大的时间序列处理功能,包括日期范围生成、时间索引操作、时间序列重采样等。

  • 生成日期范围

import pandas as pd# 生成从 2023-01-01 到 2023-12-31 的日期范围
date_range = pd.date_range(start='2023-01-01', end='2023-12-31', freq='D')
print(date_range)
  • 时间序列重采样

import pandas as pd# 创建时间序列数据
index = pd.date_range(start='2023-01-01', periods=100, freq='D')
data = np.random.randn(100)
ts = pd.Series(data, index=index)# 按周重采样并计算周平均值
weekly_mean = ts.resample('W').mean()
print(weekly_mean)

(二)高级数据透视表

数据透视表是一种用于数据汇总和分析的强大工具,Pandas 提供了灵活的 pivot_table 函数来创建数据透视表。

import pandas as pd# 创建示例数据
data = {'Product': ['A', 'B', 'A', 'B', 'A', 'B'],'Category': ['X', 'X', 'Y', 'Y', 'X', 'Y'],'Region': ['North', 'South', 'East', 'West', 'North', 'South'],'Sales': [100, 150, 200, 180, 120, 160]
}
df = pd.DataFrame(data)# 创建数据透视表,按产品和类别汇总销售额
pivot_table = pd.pivot_table(df, values='Sales', index='Product', columns='Category', aggfunc='sum', fill_value=0)
print(pivot_table)

Category   X   Y
Product        
A        220 200
B        150 340

(三)数据管道操作

数据管道是一种将多个数据处理步骤组合在一起的技术,Pandas 支持使用 apply 函数实现数据管道操作。

import pandas as pd# 创建示例数据
data = {'Text': ['apple', 'banana', 'orange', 'grape', 'pineapple']
}
df = pd.DataFrame(data)# 定义数据处理管道函数
def text_processing(text):# 转换为小写text = text.lower()# 替换特定字符text = text.replace('a', 'X')# 返回处理后的文本return text# 应用数据处理管道
df['Processed Text'] = df['Text'].apply(text_processing)
print(df)
          Text Processed Text
0        apple         Xpple
1       banana       bXnXnX
2       orange        orgXnge
3        grape        grXpe
4  pineapple    pXnXpXle

九、Pandas 的性能优化

在处理大规模数据时,Pandas 的性能可能会受到挑战。以下是一些优化 Pandas 性能的技巧:

  • 使用合适的数据类型 :选择合适的数据类型可以减少内存占用,提高计算速度。例如,将整数列转换为更小的数据类型:

import pandas as pd# 创建 DataFrame
df = pd.DataFrame({'A': np.random.randint(0, 100, size=1000000)
})# 转换列 A 的数据类型为更小的整数类型
df['A'] = df['A'].astype(np.int8)
  • 避免使用 apply 函数apply 函数在大多数情况下比矢量化操作慢得多。尽量使用 Pandas 的内置矢量化函数:

import pandas as pd# 创建 DataFrame
df = pd.DataFrame({'A': np.random.randn(1000000)
})# 使用矢量化操作计算平方(推荐)
df['A_squared'] = df['A'] ** 2# 使用 apply 函数计算平方(不推荐)
# df['A_squared'] = df['A'].apply(lambda x: x ** 2)
  • 使用 chunksize 读取大文件 :当处理无法一次性加载到内存的大文件时,可以使用 chunksize 参数分块读取:

import pandas as pd# 分块读取 CSV 文件
chunk_size = 10000
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):# 对每个数据块进行处理process(chunk)

十、Pandas 的局限性与注意事项

尽管 Pandas 功能强大,但它也有一些局限性和需要注意的地方:

  • 处理大规模数据的性能瓶颈 :对于非常大的数据集(如数十亿条记录),Pandas 可能会遇到性能瓶颈。在这种情况下,可以考虑使用分布式计算框架(如 Dask、Spark)或数据库解决方案。

  • 复杂的文本处理能力有限 :对于复杂的文本处理任务,Pandas 的功能可能不如专门的文本处理库(如 NLTK、spaCy)强大。在这种情况下,可以结合使用 Pandas 和其他文本处理库。

  • 实时数据处理的适用性有限 :Pandas 主要设计用于批处理数据,对于实时数据处理任务可能不太适用。实时数据处理通常需要使用流处理框架(如 Apache Kafka、Apache Flink)

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

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

相关文章

Linux云计算训练营笔记day05(Rocky Linux中的命令:管道操作 |、wc、find、vim)

管道操作 | 作用: 将前面命令的输出&#xff0c;传递给后面命令&#xff0c;作为后面命令的参数 head -3 /etc/passwd | tail -1 取第三行 head -8 /etc/passwd | tail -3 | cat -n 取6 7 8行 ifconfig | head -2 | tail -1 只查看IP地址 ifconfig | grep 192 过滤192的ip…

动态规划:最长递增子序列

给定一个数组&#xff0c;求最长递增子序列的长度,就是要求我们求出一个序列中最长的上升子序列的长度&#xff0c;最长上升子序列的定义就是从原序列中按照孙旭去除一些数字&#xff0c;这些数字是逐渐增大的。 *定义dp[i]表示以第i个元素结尾的最长上升子序列的长度。 *初始…

湖北理元理律师事务所:债务优化如何实现还款与生活的平衡?

债务压力往往让债务人陷入“还款还是生存”的两难选择。湖北理元理律师事务所通过案例实践发现&#xff0c;科学规划的核心在于平衡法律义务与基本生活保障&#xff0c;而非单纯追求债务缩减。本文结合实务经验&#xff0c;解析债务优化的可行路径。 刚性需求优先&#xff1a;…

重力场模型、球谐函数以及重力异常

地球重力场有两种表达方法&#xff1a; 1、拉普拉斯&#xff08;Laplace&#xff09;方法&#xff0c;将重力场展开为球谐级数。 2、斯托克斯&#xff08;Stokes&#xff09;方法&#xff0c;根据地球的总质量和旋转角速度计算。 本篇主要说第一种方法&#xff0c;该方法将地…

MySQL的视图

一、MySQL视图的介绍和作用 MySQL视图&#xff0c;加油兄弟们&#xff0c;孰能生巧&#xff0c;完整代码在最后&#xff01;&#xff01;&#xff01; 视图是一个虚拟的表&#xff0c;并不是真是存在的&#xff0c;视图其实并没有真实的数据&#xff0c;他只是根据一个sql语句…

Scala与Go的异同教程

当瑞士军刀遇到电锯&#xff1a;Scala vs Go的相爱相杀之旅 各位准备秃头的程序猿们&#xff08;放心&#xff0c;用Go和Scala不会加重你的发际线问题&#xff09;&#xff0c;今天我们来聊聊编程界的"冰与火之歌"——Scala和Go的异同。准备好瓜子饮料&#xff0c;我…

SaaS场快订平台项目说明【持续更新】

一、项目介绍 SaaS场快订平台是一个高效、便捷的体育场馆在线预订平台。本项目采用SaaS方式开发&#xff0c;用户不需要安装软件&#xff0c;直接通过互联网访问在线程序即可使用。本项目主要构建了一个体育馆预订系统&#xff0c;项目的功能主要包括&#xff1a;用户注册与登…

linux中常用的命令(三)

目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名]&#xff08;切换文件夹&#xff09; 4- touch [文件名] &#xff08;如果文件不存在&#xff0c;新建文件&#xff09; 5- mkdir[目录名] &#xff08;创建目录&#xff09; 6-rm[文件名]&…

使用Simulink开发Autosar Nvm存储逻辑

文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑&#xff0c;本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…

Java—— 泛型详解

泛型概述 泛型是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式&#xff1a;<数据类型> 注意&#xff1a;泛型只能支持引用数据类型。 泛型的好处 没有泛型的时候&#xff0c;可以往集合中添加任意类型的数据&#x…

通俗的桥接模式

桥接模式&#xff08;Bridge Pattern&#xff09; 就像一座桥&#xff0c;把两个原本独立变化的东西连接起来&#xff0c;让它们可以各自自由变化&#xff0c;互不干扰。简单来说&#xff0c;就是 “把抽象和实现分开&#xff0c;用组合代替继承”。 一句话理解桥接模式 假设你…

【现代深度学习技术】注意力机制04:Bahdanau注意力

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

爬虫学习————开始

&#x1f33f;自动化的思想 任何领域的发展原因————“不断追求生产方式的改革&#xff0c;即使得付出与耗费精力越来愈少&#xff0c;而收获最大化”。由此&#xff0c;创造出方法和设备来提升效率。 如新闻的5W原则直接让思考过程规范化、流程化。或者前端框架/后端轮子的…

每天五分钟机器学习:KTT条件

本文重点 在前面的课程中,我们学习了拉格朗日乘数法求解等式约束下函数极值,如果约束不是等式而是不等式呢?此时就需要KTT条件出手了,KTT条件是拉格朗日乘数法的推广。KTT条件不仅统一了等式约束与不等式约束的优化问题求解范式,KTT条件给出了这类问题取得极值的一阶必要…

leetcode0829. 连续整数求和-hard

1 题目&#xff1a; 连续整数求和 官方标定难度&#xff1a;难 给定一个正整数 n&#xff0c;返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n 5 输出: 2 解释: 5 2 3&#xff0c;共有两组连续整数([5],[2,3])求和后为 5。 示例 2: 输入: n 9 输出: …

window 显示驱动开发-线性伸缩空间段

线性伸缩空间段类似于线性内存空间段。 但是&#xff0c;伸缩空间段只是地址空间&#xff0c;不能容纳位。 若要保存位&#xff0c;必须分配系统内存页&#xff0c;并且必须重定向地址空间范围以引用这些页面。 内核模式显示微型端口驱动程序&#xff08;KMD&#xff09;必须实…

Cadence 高速系统设计流程及工具使用三

5.8 约束规则的应用 5.8.1 层次化约束关系 在应用约束规则之前&#xff0c;我们首先要了解这些约束规则是如何作用在 Cadence 设计对象上的。Cadence 中对设计对象的划分和概念&#xff0c;如表 5-11 所示。 在 Cadence 系统中&#xff0c;把设计对象按层次进行了划分&#…

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。

ScaleTransition 是 Flutter 中的一个动画组件&#xff0c;用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换&#xff0c;从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用&#xff0c;以控制动画的开始、结束和过渡效果。 基…

深入解析:如何基于开源p-net快速开发Profinet从站服务

一、Profinet协议与软协议栈技术解析 1.1 工业通信的"高速公路" Profinet作为工业以太网协议三巨头之一,采用IEEE 802.3标准实现实时通信,具有: 实时分级:支持RT(实时)和IRT(等时实时)通信模式拓扑灵活:支持星型、树型、环型等多种网络结构对象模型:基于…

m个n维向量组中m,n的含义与空间的关系

向量的维度与空间的关系&#xff1a; 一个向量的维度由其分量个数决定&#xff0c;例如 ( n ) 个分量的向量属于 Rn空间 。 向量组张成空间的维度&#xff1a; 当向量组有 ( m ) 个线性无关的 ( n ) 维向量时&#xff1a; 若 ( m < n )&#xff1a; 这些向量张成的是 Rn中的…