Python - 數據分析三劍客之Pandas

閱讀前可參考NumPy文章

https://blog.csdn.net/MinggeQingchun/article/details/148253682https://blog.csdn.net/MinggeQingchun/article/details/148253682

?Pandas是Python中一個強大的開源數據分析庫,專門用于處理結構化數據(如表格、時間序列等),其核心數據結構為Series(一維數組)和DataFrame(二維表格)。??它基于NumPy構建,提供高效的數據清洗、操作、聚合及可視化功能,廣泛應用于數據科學領域。?

Pandas官方文檔:pandas documentation — pandas 2.2.3 documentation

1?、核心數據結構?

?Series?:一維帶標簽數組,可存儲任意數據類型(數值、字符串等),索引支持自定義或自動生成

?DataFrame?:二維表格型結構,由多個Series組成,支持行列索引和異構數據類型(每列類型可不同),類似Excel或SQL表??

2?、核心功能?

?數據清洗?:處理缺失值、去重、類型轉換等

?數據操作?:篩選、切片、合并、分組聚合(如groupby)及透視表功能

?時間序列支持?:專為金融數據分析設計,提供時間索引和窗口計算??

3?、技術優勢?

高效性?:基于NumPy的向量化操作,避免循環,優化內存使用

兼容性?:支持多種數據格式(CSV、Excel、JSON等)的讀寫,并集成Matplotlib可視化

SQL-like操作?:支持類似SQL的join和復雜查詢,簡化數據分析流程

4、Pandas 適用場景

  • 數據清洗(處理缺失值、異常值、重復數據)

  • 數據分析(統計、聚合、可視化前處理)

  • 機器學習數據預處理(特征工程)

  • 金融、科研、商業數據分析

Pandas 通常與?NumPy(數值計算)、Matplotlib/Seaborn(可視化)、Scikit-learn(機器學習)?結合使用,是 Python 數據科學生態的核心工具之一。

一、Series

Series?是 Pandas 中最基本的一維數據結構(類似帶標簽的數組),可以存儲整數、浮點數、字符串、Python對象等類型的數據

Series?:一維帶標簽數組,可存儲任意數據類型(數值、字符串等),索引支持自定義或自動生成,由下面2個部分組成:

- values:一組數據(ndarray類型)

- index:相關的數據索引標簽

1、創建 Series

import pandas as pd# 從列表創建
s1 = pd.Series([1, 3, 5, 7, 9])  # 從字典創建(鍵自動變成索引)
s2 = pd.Series({"A": 10, "B": 20, "C": 30})# 指定索引和數據類型
s3 = pd.Series([1.1, 2.2, 3.3], index=["X", "Y", "Z"], dtype="float64")

輸出示例

s1:
0    1
1    3
2    5
3    7
4    9
dtype: int64s2:
A    10
B    20
C    30
dtype: int64

2、訪問數據

按索引標簽或位置

# 按標簽
s2["A"]  # 返回 10# 按位置(從0開始)
s2[1]    # 返回 20# 切片(類似列表)
s1[1:4]  # 返回第2~4個元素

布爾索引(條件篩選)

s = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
s[s > 20]  # 返回大于20的值

輸出

c    30
d    40
dtype: int64

3、修改數據

# 修改單個值
s2["A"] = 99  # 批量修改
s2.replace(20, 200, inplace=True)  # 把20替換成200# 增加新數據
s2["D"] = 40  # 新增索引"D",值為40

4、常用統計計算

s = pd.Series([1, 2, 3, 4, 5])s.sum()    # 求和 → 15
s.mean()   # 平均值 → 3.0
s.max()    # 最大值 → 5
s.min()    # 最小值 → 1
s.std()    # 標準差 → 1.581
s.value_counts()  # 統計每個值的出現次數

5、缺失值處理

s = pd.Series([1, None, 3, None, 5])s.isnull()   # 返回布爾Series,標記缺失值
s.dropna()   # 刪除缺失值
s.fillna(0)  # 用0填充缺失值

6、向量化運算(類似NumPy)

s1 = pd.Series([1, 2, 3])
s2 = pd.Series([10, 20, 30])s1 + s2      # 對應位置相加 → [11, 22, 33]
s1 * 2       # 所有元素乘以2 → [2, 4, 6]
s1 ** 2      # 平方 → [1, 4, 9]

7、索引操作

s = pd.Series([10, 20, 30], index=["A", "B", "C"])# 修改索引
s.index = ["X", "Y", "Z"]# 重置索引(變成默認0,1,2...)
s.reset_index(drop=True, inplace=True)  # `drop=True` 表示丟棄原索引

8、與 DataFrame 交互

Series 可以看作 DataFrame 的一列:

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
col_a = df["A"]  # 提取列"A" → 返回Series

總結

操作示例
創建pd.Series([1, 2, 3])
訪問數據s[0]?或?s["A"]
條件篩選s[s > 2]
修改數據s["A"] = 10
統計計算s.mean()
缺失值處理s.fillna(0)
向量化運算s1 + s2

Series 是 Pandas 的基礎,熟練掌握后能更高效地處理 DataFrame!

二、DataFrame

DataFrame?是 Pandas 最核心的二維數據結構(類似 Excel 表格或 SQL 表),由行(index)和列(columns)組成,每列可以是不同數據類型。

行索引:index

列索引:columns

值:values(NumPy的二維數組)

(一)DataFrame基本操作

1、創建 DataFrame

import pandas as pd# 從字典創建(鍵是列名,值是數據)
data = {"姓名": ["張三", "李四", "王五"],"年齡": [25, 30, 28],"城市": ["北京", "上海", "廣州"]}
df = pd.DataFrame(data)# 從列表創建(需指定列名)
data = [["張三", 25, "北京"], ["李四", 30, "上海"], ["王五", 28, "廣州"]]
df = pd.DataFrame(data, columns=["姓名", "年齡", "城市"])# 指定索引
df = pd.DataFrame(data, index=["A", "B", "C"])

輸出示例

   姓名  年齡  城市
A  張三  25  北京
B  李四  30  上海
C  王五  28  廣州

2、查看數據

df.head(2)      # 查看前2行
df.tail(1)       # 查看最后1行
df.shape         # 返回行數和列數 (3, 3)
df.columns       # 查看列名
df.index         # 查看行索引
df.info()        # 查看數據類型和內存信息
df.describe()    # 數值列的統計摘要(計數、均值、標準差等)

3、選擇數據

選擇列

df["姓名"]       # 返回 Series
df[["姓名", "城市"]]  # 返回多列(DataFrame)

選擇行

df.loc["A"]          # 按索引標簽選擇行(返回 Series)
df.iloc[0]           # 按位置選擇行(第1行)
df.loc[["A", "C"]]   # 選擇多行(按標簽)
df.iloc[0:2]         # 切片選擇行(第1~2行)

條件篩選

df[df["年齡"] > 25]              # 年齡大于25的行
df[(df["城市"] == "北京") | (df["年齡"] < 30)]  # 復合條件

4、修改數據

修改列名

df.rename(columns={"姓名": "Name", "城市": "City"}, inplace=True)

修改值

df.loc["A", "年齡"] = 26    # 修改單個值
df["年齡"] = df["年齡"] + 1  # 整列運算

新增列

df["性別"] = ["男", "女", "男"]          # 直接賦值
df["是否成年"] = df["年齡"] > 18          # 基于條件

刪除列或行

df.drop("城市", axis=1, inplace=True)  # 刪除列
df.drop("A", axis=0, inplace=True)    # 刪除行

5、缺失值處理

df.isnull()       # 檢查缺失值
df.dropna()       # 刪除包含缺失值的行
df.fillna(0)      # 用0填充缺失值

6、排序

df.sort_values("年齡", ascending=False)  # 按年齡降序
df.sort_index(ascending=False)          # 按索引降序

7、分組與聚合

df.groupby("城市")["年齡"].mean()   # 按城市分組計算平均年齡
df.groupby("城市").agg({"年齡": "mean", "姓名": "count"})  # 多聚合

8、合并 DataFrame

# 縱向合并(類似 SQL UNION)
pd.concat([df1, df2], axis=0)# 橫向合并(類似 SQL JOIN)
pd.merge(df1, df2, on="共同列", how="inner")  # 內連接

9、保存數據

df.to_csv("data.csv", index=False)   # 保存為 CSV
df.to_excel("data.xlsx", index=False)  # 保存為 Excel

總結

操作示例
創建pd.DataFrame({"列名": [數據]})
選擇列df["列名"]
選擇行df.loc["索引"]
條件篩選df[df["年齡"] > 25]
修改數據df.loc["A", "年齡"] = 26
新增列df["新列"] = 值
分組聚合df.groupby("城市").mean()
保存df.to_csv("data.csv")

Series 和 DataFrame 的區別

(二)缺失數據處理?

1、缺失值的表示

在 Pandas 中,缺失數據主要由以下兩種形式表示:

  • NaN?(Not a Number): 用于浮點數據類型

  • None: 用于對象數據類型

import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, 2, np.nan, 4],'B': [5, np.nan, np.nan, 8],'C': ['a', 'b', None, 'd']
})

2、檢測缺失值

2.1 檢查單個缺失值

pd.isna(df.loc[2, 'A'])  # 檢查特定位置是否為缺失值
pd.notna(df.loc[0, 'B'])  # 檢查特定位置是否不是缺失值

2.2 檢查整個DataFrame

df.isna()  # 返回布爾DataFrame,顯示每個元素是否為缺失值
df.isnull()  # isna()的別名,功能相同df.notna()  # 返回布爾DataFrame,顯示每個元素是否不是缺失值
df.notnull()  # notna()的別名

2.3 統計每列的缺失值數量

df.isna().sum()  # 每列缺失值計數
df.isna().mean()  # 每列缺失值比例

3、刪除缺失值

3.1 刪除包含缺失值的行

df.dropna()  # 刪除任何包含缺失值的行
df.dropna(how='all')  # 只刪除全為缺失值的行
df.dropna(thresh=2)  # 保留至少有2個非缺失值的行

3.2 刪除包含缺失值的列

df.dropna(axis=1)  # 刪除任何包含缺失值的列
df.dropna(axis=1, how='all')  # 只刪除全為缺失值的列

4、填充缺失值

4.1 用固定值填充

df.fillna(0)  # 用0填充所有缺失值
df.fillna({'A': 0, 'B': 1, 'C': 'unknown'})  # 不同列用不同值填充

4.2 前向填充和后向填充

df.fillna(method='ffill')  # 用前一個非缺失值填充
df.fillna(method='bfill')  # 用后一個非缺失值填充
df.fillna(method='ffill', limit=1)  # 限制填充的連續缺失值數量

4.3 用統計值填充

df.fillna(df.mean())  # 用各列均值填充數值列
df.fillna(df.median())  # 用中位數填充
df.fillna(df.mode().iloc[0])  # 用眾數填充

4.4 插值填充

df.interpolate()  # 線性插值
df.interpolate(method='time')  # 時間序列插值
df.interpolate(method='polynomial', order=2)  # 多項式插值

5、處理缺失值的注意事項

  1. 數據分析前:應該先了解缺失值的比例和模式

  2. 刪除缺失值:當缺失比例很小時適用,大量缺失時會導致信息損失

  3. 填充缺失值:要選擇合理的方法,避免引入偏差

  4. 時間序列數據:通常使用插值或前向/后向填充

  5. 機器學習模型:有些模型可以直接處理缺失值,有些需要先處理

(三)Pandas 層次化索引(MultiIndex)

1、創建層次化索引

1、創建具有 MultiIndex 的 Series

import pandas as pd
import numpy as np# 從元組列表創建
arrays = [['北京', '北京', '上海', '上海'],['東城', '西城', '浦東', '靜安']]
index = pd.MultiIndex.from_arrays(arrays, names=('城市', '區域'))
s = pd.Series([1200, 1500, 1800, 1600], index=index)# 從元組直接創建
tuples = [('北京', '東城'), ('北京', '西城'), ('上海', '浦東'), ('上海', '靜安')]
index = pd.MultiIndex.from_tuples(tuples, names=['城市', '區域'])

2、創建具有 MultiIndex 的 DataFrame

# 方法1:通過set_index
data = {'城市': ['北京', '北京', '上海', '上海'],'區域': ['東城', '西城', '浦東', '靜安'],'房價': [1200, 1500, 1800, 1600],'租金': [60, 75, 90, 80]
}
df = pd.DataFrame(data).set_index(['城市', '區域'])# 方法2:直接創建MultiIndex
index = pd.MultiIndex.from_product([['北京', '上海'], ['東城', '西城', '浦東', '靜安']],names=['城市', '區域'])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['房價', '租金'])

2、索引操作

1、選擇數據

# 選擇一級索引
df.loc['北京']  # 選擇北京所有區域數據# 選擇多級索引
df.loc[('北京', '東城')]  # 選擇北京東城數據
df.loc[[('北京', '東城'), ('上海', '浦東')]]  # 選擇多個組合# 使用xs方法跨級選擇
df.xs('東城', level='區域')  # 選擇所有城市的東城區

2、部分索引

# 使用slice(None)選擇部分索引
df.loc[('北京', slice(None)), :]  # 北京所有區域
df.loc[(slice(None), '東城'), :]  # 所有城市的東城區

三、聚合(Aggregation)級聯(Concatenation)函數?

在Pandas中,使用聚合(Aggregation)和級聯(Chaining)函數操作是處理和分析數據幀(DataFrame)的常見方法。這些操作可以幫助你從數據中提取有用的信息、執行計算并生成新的數據集。

(一)聚合操作(Aggregation)

聚合操作通常用于將數據分組后對每個組進行計算。這可以通過groupby()方法實現,然后使用agg()aggregate()方法進行聚合計算。

常用的聚合函數包括:

  • sum()?– 求和

  • mean()?– 均值

  • max()?/?min()?– 最大值 / 最小值

  • count()?– 計數

  • std()?– 標準差

  • agg()?– 自定義聚合(可同時計算多個統計量)

(1)基本聚合操作

import pandas as pd# 示例 DataFrame
df = pd.DataFrame({'Category': ['A', 'B', 'A', 'B', 'A'],'Value': [10, 20, 30, 40, 50]
})# 按 'Category' 分組并計算均值
grouped = df.groupby('Category').mean()
print(grouped)輸出:
Category     Value       
A            30
B            30

(2)agg()?多聚合計算

# 同時計算多個統計量
result = df.groupby('Category').agg({'Value': ['sum', 'mean', 'max']
})
print(result)輸出:        
Category     sum mean  max                
A            90   30   50
B            60   30   40

(3)apply()?自定義聚合

# 自定義聚合函數
def custom_agg(x):return x.max() - x.min()result = df.groupby('Category')['Value'].apply(custom_agg)
print(result)輸出:
Category
A    40
B    20
Name: Value, dtype: int64

(二)級聯函數操作(Chaining)

級聯是指將多個 DataFrame 或 Series 沿某個軸(行或列)拼接在一起。主要使用:

  • pd.concat()?– 通用拼接

  • append()?– 追加行(已棄用,推薦用?concat

(1)pd.concat()?基本使用

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})# 默認按行(axis=0)拼接
result = pd.concat([df1, df2])
print(result)輸出:A  B
0  1  3
1  2  4
0  5  7
1  6  8

(2)按列拼接(axis=1

result = pd.concat([df1, df2], axis=1)
print(result)輸出:A  B  A  B
0  1  3  5  7
1  2  4  6  8

(3)ignore_index=True?重置索引

result = pd.concat([df1, df2], ignore_index=True)
print(result)輸出:A  B
0  1  3
1  2  4
2  5  7
3  6  8

(4)append()(不推薦,建議用?concat

# 追加行(已棄用,推薦用 concat)
result = df1.append(df2, ignore_index=True)
print(result)

(三)聚合 vs. 級聯對比

操作主要函數用途
聚合groupby(),?agg(),?sum(),?mean()數據分組計算統計量
級聯pd.concat(),?append()合并多個 DataFrame

總結

操作適用場景關鍵函數
聚合分組計算統計量groupby(),?agg(),?sum(),?mean()
級聯合并多個 DataFramepd.concat(),?append()(不推薦)

四、Pandas畫圖?

在 Pandas 中,可以直接使用?DataFrame.plot()?和?Series.plot()?進行數據可視化,底層基于?Matplotlib,但語法更簡潔。

1、基本繪圖方法

Pandas 支持多種圖表類型,通過?kind?參數指定:

  • line?– 折線圖(默認)

  • bar?/?barh?– 柱狀圖 / 橫向柱狀圖

  • hist?– 直方圖

  • box?– 箱線圖

  • pie?– 餅圖

  • scatter?– 散點圖

  • area?– 面積圖

如:DataFrame

import pandas as pd
import numpy as npdf = pd.DataFrame({'A': np.random.rand(10),'B': np.random.rand(10),'C': np.random.rand(10)
}, index=pd.date_range('2023-01-01', periods=10))

2、常見圖表

(1) 折線圖(kind='line'

df.plot(kind='line', title='Line Plot', figsize=(8, 4))

(2) 柱狀圖(kind='bar'

df.head(5).plot(kind='bar', title='Bar Plot', figsize=(8, 4))

(3) 橫向柱狀圖(kind='barh'

df.head(3).plot(kind='barh', title='Horizontal Bar Plot')

(4) 直方圖(kind='hist'

df['A'].plot(kind='hist', bins=5, title='Histogram')

(5) 箱線圖(kind='box'

df.plot(kind='box', title='Box Plot')

(6) 餅圖(kind='pie'

df['A'].head(5).plot(kind='pie', autopct='%.1f%%', title='Pie Chart')

(7) 散點圖(kind='scatter'

df.plot(kind='scatter', x='A', y='B', title='Scatter Plot')

3、自定義圖表樣式

(1) 調整大小、顏色、標題

df.plot(kind='line',figsize=(10, 5),title='Customized Plot',color=['red', 'green', 'blue'],linewidth=2,alpha=0.7  # 透明度
)

(2) 添加網格、圖例、坐標軸標簽

ax = df.plot(kind='bar')
ax.grid(True, linestyle='--')  # 網格線
ax.set_xlabel('Date')          # X軸標簽
ax.set_ylabel('Value')         # Y軸標簽
ax.legend(loc='upper right')   # 圖例位置

(3) 子圖(多個圖表并列)

df.plot(kind='line',subplots=True,  # 每個列一個子圖layout=(2, 2),  # 2行2列figsize=(10, 8)
)

4、直接使用 Matplotlib 增強功能

Pandas 繪圖返回的是 Matplotlib 的?Axes?對象,可以進一步自定義:

import matplotlib.pyplot as pltax = df.plot(kind='bar')
ax.set_title('Enhanced Plot')
plt.xticks(rotation=45)  # 旋轉X軸標簽
plt.tight_layout()       # 自動調整布局
plt.show()

5、保存圖表

ax = df.plot(kind='line')
ax.figure.savefig('plot.png', dpi=300, bbox_inches='tight')  # 保存為PNG

總結

功能方法示例
折線圖df.plot(kind='line')趨勢分析
柱狀圖df.plot(kind='bar')分類對比
直方圖df['col'].plot(kind='hist')分布查看
箱線圖df.plot(kind='box')離群值檢測
餅圖df['col'].plot(kind='pie')占比分析
散點圖df.plot(kind='scatter', x='A', y='B')相關性分析
保存圖表ax.figure.savefig('file.png')導出圖片

Pandas 繪圖適合快速探索數據,如需更復雜可視化,可結合 Matplotlib 或 Seaborn!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91797.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度解析:Python實戰京東資產拍賣平臺爬蟲,從ID抓取到詳情數據落地

深度解析:Python實戰京東資產拍賣平臺爬蟲,從ID抓取到詳情數據落地 對爬蟲、逆向感興趣的同學可以查看文章,一對一小班教學(系統理論和實戰教程)、提供接單兼職渠道:https://blog.csdn.net/weixin_35770067/article/details/142514698 文章目錄 深度解析:Python實戰京東…

ServletConfig 接口詳解

ServletConfig 接口詳解 1. 核心概念 ServletConfig 是 Servlet 規范中定義的核心接口&#xff0c;用于在 Servlet 初始化階段向 Servlet 傳遞配置信息。每個 Servlet 都有自己獨立的 ServletConfig 對象。 2. 關鍵特性特性說明唯一性每個 Servlet 實例擁有獨立的 ServletConfi…

Maven學習總結(62)—— Maven 打包瘦身和提速解決方案

臃腫的 Maven 項目 在 Java 項目開發中,Maven 作為強大的項目管理和構建工具,極大地簡化了依賴管理和項目構建過程。但隨著項目的不斷演進,依賴的 Jar 包越來越多,我們的 Maven 項目也逐漸變得臃腫不堪。曾經,我參與維護一個大型的 Spring Boot 項目,隨著業務功能的不斷…

【Qt開發】Qt的背景介紹(三)-> 認識Qt Creator

目錄 1 -> Qt Creator概覽 2 -> 使用Qt Creator創建項目 2.1 -> 新建項目 2.2 -> 選擇項目模板 2.3 -> 選擇項目路徑 2.4 -> 選擇構建系統 2.5 -> 填寫類信息設置界面 2.6 -> 選擇語言和翻譯文件 2.7 -> 選擇Qt套件 2.8 -> 選擇版本控…

HTML5中的自定義屬性

自定義屬性&#xff08;Custom Attributes&#xff09; 允許在標準 HTML 屬性之外&#xff0c;為元素添加額外的元數據&#xff08;metadata&#xff09;。 1. 標準方式&#xff1a;data-* 屬性 HTML5 引入了 data-* 前綴的自定義屬性規范&#xff0c;所有以 data- 開頭的屬性都…

前端項目利用Gitlab CI/CD流水線自動化打包、部署云服務

疊甲前言 本文僅作為個人學習GitLab的CI/CD功能記錄&#xff0c;不適合作為專業性指導&#xff0c;如有紕漏&#xff0c;煩請君指正。 Gitlab的CI/CD做什么用的 自工作以來&#xff0c;去過大大小小公司&#xff0c;有一些公司技術人員專業性欠佳&#xff0c;每當產品經理或…

基于typescript嚴格模式以實現undo和redo功能為目標的命令模式代碼參考

下面是一個完整的、嚴格模式下的 TypeScript 實現&#xff0c;包含 CommandManager、Command 和 CompositeCommand 類&#xff0c;支持 undo/redo 功能。完整實現代碼1. Command 接口和基類// src/commands/ICommand.ts export interface ICommand {execute(): void;undo(): vo…

2022年CIE SCI2區TOP,NSGA-II+直升機-無人機搜救任務分配,深度解析+性能實測

目錄1.摘要2.數學模型3.求解方法4.結果展示5.參考文獻6.代碼獲取7.算法輔導應用定制讀者交流1.摘要 無人機任務分配對于保障搜救活動高效有序開展具有重要意義&#xff0c;但現有研究較少考慮無人機作業環境與性能對任務分配的影響。針對低空風場和地形因素對無人機能耗與性能…

暑期算法訓練.4

目錄 15.力扣 904.水果成籃 15.1 題目解析&#xff1a; 15.2 算法思路&#xff1a; 15.2.1 暴力解法&#xff1a; 15.2.1 滑動窗口 15.3代碼演示&#xff1a; 15.4 總結反思&#xff1a; 16 力扣 438.找出字符串中所有字母的異位詞 16.1 題目解析&#xff1a; 16.2算法…

關于個人博客系統的測試報告

1&#xff09;項目背景2&#xff09;項目功能介紹 登陸寫博客/編輯已存在博客刪除博客注銷 2&#xff09;基于項目功能設計相關測試用例3&#xff09;基于測試用例編寫自動化測試 準備工作登陸界面相關博客首頁相關博客詳情頁相關編輯博客相關刪除博客相關注銷相關 4&#xff0…

Spring Boot 與微服務詳細總結

一、Spring Boot 核心概述 Spring Boot 是簡化 Spring 應用開發的框架&#xff0c;作為 Spring 技術棧的整合方案和 J2EE 開發的一站式解決方案&#xff0c;其核心優勢體現在&#xff1a; 快速創建獨立運行的 Spring 項目&#xff0c;輕松集成主流框架內置 Servlet 容器&…

輕松上手:從零開始啟動第一個 Solana 測試節點

嗨&#xff0c;各位技術愛好者們&#xff01; 大家是否對 Solana 的“光速”交易處理能力感到好奇&#xff1f;或者你是一名開發者&#xff0c;正準備在 Solana 上構建下一個殺手級 dApp&#xff1f;無論大家是出于學習目的還是實際開發需求&#xff0c;親手運行一個 Solana 節…

Gerrit workflow

提交代碼 每次提交代碼前&#xff0c;先執行 git pull --rebase &#xff0c;確保已經合并天上代碼&#xff0c;解決沖突 git add git commit -m git push origin HEAD:refs/for/{BRANCH_NAME} 可考慮設置 alias 方式&#xff0c;參考下文 CR-2 情況處理(verify-1情況一樣處理…

量化交易如何查詢CFD指數實時行情

CFD即所謂的差價合約&#xff0c;是投資者在不擁有實際資產的情況下&#xff0c;交易金融市場的一種方式。最近筆者研究這一塊比較多&#xff0c;但查遍整個中文互聯網卻很少找到關于CFD實時行情的查詢教程。因此有了這篇文章。以下我將通過一個簡單的Python代碼示例&#xff0…

sql練習二

首先&#xff0c;建表。創建學生表和score表接著導入創建好基礎信息就可以開始做了。3、分別查詢student表和score表的所有記錄4、查詢student表的第2條到第5條記錄5、從student表中查詢計算機系和英語系的學生的信息6、從student表中查詢年齡小于22歲的學生信息7、從student表…

windows11下基于docker單機部署ceph集群

windows下基于docker單機部署ceph集群 創建ceph專用網絡 docker network create --driver bridge --subnet 172.20.0.0/16 ceph-network查看是否創建成功&#xff08;查看創建狀態&#xff09; docker network inspect ceph-network拉取鏡像&#xff1a;(鏡像源自行選擇) docke…

使用DataGrip連接安裝在Linux上的Redis

目錄 一、前言 二、開放防火墻端口 三、使用DataGrip連接安裝在Linux上的Redis 一、前言 在學習黑馬Redis從入門到實戰的視頻&#xff0c;完成了Redis在linux上的安裝配置之后&#xff0c;我們可以使用圖形化界面方便操作使用redis數據庫。在24年JavaWebAI學習時連接MySQL數…

MySQL的union、union all導致排序失效

今天練習SQL&#xff0c;使用union all 連接各個查詢導致我的各個查詢排序失效&#xff0c;最后發現使用union all后會忽略各個模塊的order by&#xff0c;只有最外層的order by才會生效原SQL如下&#xff1a;( selectexam_id tid,count(distinct uid) uv, count(uid) pv frome…

LVS 集群技術實踐:NAT 與 DR 模式的配置與對比

1 實驗環境規劃 實驗目標是搭建一個負載均衡集群&#xff0c;通過 LVS 調度器將流量分發到兩臺真實服務器&#xff08;RS1 和 RS2&#xff09;。2.網絡配置3 實驗步驟關閉防火墻和 SELinux安裝 HTTP 服務&#xff08;在 RS21和 RS2 上&#xff09;&#xff1a;sudo systemctl s…

YOLOv8中添加SENet注意力機制

注意力機制(Attention Mechanism)是深度學習中的一種方法,在圖像處理領域,尤其是在卷積神經網絡(CNN)和視覺Transformer等架構中。圖像數據具有局部相關性,注意力機制可以幫助模型聚焦于圖像中更重要的區域,從而提升處理效果。 SENet(Squeeze-and-Excitation Network)…