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.pswp.cn/pingmian/80212.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80212.shtml
英文地址,請注明出處:http://en.pswp.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中的…