數據分析處理庫Pandas常用方法匯總

目錄

一、基礎操作

1.1 創建df對象

1.1.1 讀入表格數據

1.1.2 手動創建df

1.2 .info()

1.3 df.index

1.4 df.columns

1.5 df.dtypes

1.6 df.values

1.7?.set_index()

?1.8 df['xxx']

1.9 .describe()

1.10 .isin()

1.12 .where()

1.13?.query()

1.14?Series類型運算

二、Pandas索引結構

2.1 選擇多列?

2.2 loc / iloc

?2.3 自定義索引

?2.4 bool索引

2.5 制定多列索引?

三、數值運算操作

3.1 .sum()

3.2 .mean()

3.3 .min() / .max()

3.4?.median()

3.5?二元統計

3.5.1?df.cov()

3.5.2?df.corr()

3.5.3?.value_counts()

三、對象的增刪改查

3.1?Series結構的增刪改查

3.1.1 查操作

3.1.2 改操作

3.1.3?增操作

3.1.4?刪操作

3.2 DataFrame結構的增刪改查

3.2.1 查操作

3.2.2?改操作

3.2.3?增操作

3.2.4?刪操作

四、合并操作

4.1 .merge()

4.2 多索引合并

使用on參數?

使用how參數

4.3 join

五、數據透視表

5.1 .pivot()

5.2?.pivot_table()

六、?時間操作

6.1 創建時間序列

6.1.1. pd.to_datetime()

6.1.2. pd.date_range()

6.2 時間戳與時間區間

6.2.1. Timestamp

6.2.2. Timedelta

6.3 時間的運算與篩選

6.3.1. 時間加減

6.3.2. 篩選特定時間段

6.4 設置索引并重采樣

6.4.1. 設置時間索引

6.4.2. 取時間索引中的某個數值

6.4.3. 重采樣 resample()

6.5 時間格式的處理

6.5.1. 提取時間的各部分

6.5.2. 格式化輸出

6.6 常見時間函數總結

七、常用操作

7.1 查看數據結構與基本信息

7.1.1 df.head() / df.tail()

7.1.2 df.shape / df.columns / df.index

7.1.3 df.info() / df.describe()

7.2 數據選擇與過濾

7.2.1 選擇列

7.2.2 選擇行

7.2.3 多重條件

6.3?數據修改與添加

7.3.1 新增列

7.3.2 修改數據

7.3.3 刪除列/行

7.4 缺失值處理

7.4.1 檢查缺失值

7.4.2 刪除缺失值

7.4.3 填充缺失值

7.5. 分組與聚合

7.5.1 分組統計

單分組和多重分組

改變索引?

傳函數名的自定義分組

多索引時指定某一個索引分組

7.5.2?拆分范圍

7.5.3 一列多算

7.6. 排序與去重

7.6.1 排序

7.6.2 去重

7..7 數據合并與連接

7.7.1 拼接 concat

7.7.2 合并 merge

7.8?常見函數速查表

八、字符串操作

8.1 字符串小寫/大寫/首字母大寫

8.2 去除空格、換行等

8.3 查找與匹配字符串

8.3.1 包含判斷

8.3.2 匹配字符串開頭/結尾

8.4?替換、分割與拼接

8.4.1 替換

8.4.2 字符串分割

.str.split()

8.4.3 拼接字符串

8.5 提取子串與正則提取

8.5.1 提取固定位置子串

8.5.2 正則提取

8.6 字符串長度統計

8.7?.get_dummies()

8.8?常用字符串函數速查表

一、基礎操作

  • Series

    • 一維數據結構,類似于一個帶索引的數組。

    • 每個元素都有一個對應的索引值,索引是唯一的。

    • 通常用于表示單列數據。

    • 通過一個列表、數組或字典創建。

  • DataFrame

    • 二維數據結構,類似于一個表格,由行和列組成。

    • 每列可以有不同的數據類型(如整數、浮點數、字符串等)。

    • 每行和每列都有索引,行索引稱為 index,列索引稱為 columns

    • 通常用于表示多列數據。

    • 通過字典、列表的列表、或從文件(如 CSV、Excel)中讀取創建。

1.1 創建df對象

1.1.1 讀入表格數據

df = pd.read_csv('./data/titanic.csv')
df.head() #可以讀前5行數據

1.1.2 手動創建df

data = {'country':['aaa','bbb','ccc'],'population':[10,12,14]}
df_data = pd.DataFrame(data)

1.2 .info()

返回當前的信息

df.info()輸出:<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):#   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  0   PassengerId  891 non-null    int64  1   Survived     891 non-null    int64  2   Pclass       891 non-null    int64  3   Name         891 non-null    object 4   Sex          891 non-null    object 5   Age          714 non-null    float646   SibSp        891 non-null    int64  7   Parch        891 non-null    int64  8   Ticket       891 non-null    object 9   Fare         891 non-null    float6410  Cabin        204 non-null    object 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

1.3 df.index

返回索引對象

RangeIndex(start=0, stop=891, step=1)

1.4 df.columns

返回 DataFrame 的列名

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp','Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],dtype='object')

1.5 df.dtypes

返回 DataFrame 中每列的數據類型

PassengerId      int64
Survived         int64
Pclass           int64
Name            object
Sex             object
Age            float64
SibSp            int64
Parch            int64
Ticket          object
Fare           float64
Cabin           object
Embarked        object
dtype: object

1.6 df.values

返回 DataFrame 中的數據部分,以二維數組(NumPy 數組)的形式。

array([[1, 0, 3, ..., 7.25, nan, 'S'],[2, 1, 1, ..., 71.2833, 'C85', 'C'],[3, 1, 3, ..., 7.925, nan, 'S'],...,[889, 0, 3, ..., 23.45, nan, 'S'],[890, 1, 1, ..., 30.0, 'C148', 'C'],[891, 0, 3, ..., 7.75, nan, 'Q']], dtype=object)

1.7?.set_index()

自己指定索引

df = df.set_index('Name')

?1.8 df['xxx']

xxx表示列名,返回Series類型

age = df['Age']

1.9 .describe()

可以得到數據的基本統計特性

df.describe()

?

1.10 .isin()

判斷元素是否在給定內容中

s.isin([1,3,4])

1.12 .where()

保留滿足條件的數據,替換不滿足條件的數據

df.where(df < 0)

df.where(df < 0,999) #將大于0的數全部替換為999

?

1.13?.query()

用于通過字符串表達式對 DataFrame 進行條件篩選?

df.query('(a<b) & (b<c)')

1.14?Series類型運算

.mean() / .max() / .min(),廣播+-*%

age = age + 10
age.mean()
age.max()
age.min()

二、Pandas索引結構

2.1 選擇多列?

df[['Age','Fare']]

2.2 loc / iloc

  • loc 用label來去定位
  • iloc 用position來去定位
df.iloc[0:5]

df.iloc[0:2]

?2.3 自定義索引

df = df.set_index('Name')
df.loc['Heikkinen, Miss. Laina']

也支持切片操作

df.loc['Heikkinen, Miss. Laina':'Allen, Mr. William Henry']

?2.4 bool索引

df[df['Fare'] > 40][0:5]

?下邊兩種寫法相同

df.loc[df['Sex'] == 'male'][['Fare','Age']]
df.loc[df['Sex'] == 'male',['Fare','Age']]

2.5 制定多列索引?

s2 = pd.Series(np.arange(6),index = pd.MultiIndex.from_product([[0,1],['a','b','c']]))

三、數值運算操作

創建DataFrame

df = pd.DataFrame([[1,2,3],[4,5,6]],index = ['a','b'],columns = ['A','B','C'])

3.1 .sum()

默認axis=0

3.2 .mean()

默認axis=0

3.3 .min() / .max()

默認axis=0

3.4?.median()

默認axis=0

3.5?二元統計

3.5.1?df.cov()

計算 DataFrame 中各列之間的協方差矩陣。

df.cov()

3.5.2?df.corr()

計算 DataFrame 中各列之間的相關系數矩陣。

df.corr()

3.5.3?.value_counts()

統計元組數量

df['Age'].value_counts()

df['Age'].value_counts(ascending = True)

三、對象的增刪改查

3.1?Series結構的增刪改查

data = [10,11,12]
index = ['a','b','c']
s = pd.Series(data = data,index = index)

?

3.1.1 查操作

s[0]  --> 10
s[0:2]
mask = [True,False,True]
s[mask]
s.loc['b'] --> 11
s.iloc[1] --> 11

3.1.2 改操作

s1['a'] = 100
s1.replace(to_replace = 100,value = 101,inplace = False)

inplace表示是否要在s1上修改

修改index

s1.index = ['a','b','d']
s1.rename(index = {'a':'A'},inplace = True)

3.1.3?增操作

data = [100,110]
index = ['h','k']
s2 = pd.Series(data = data,index = index)輸出:
h    100
k    110
dtype: int64

.concat([xx,xx])?

s3 = pd.concat([s1,s2])輸出:
A    101
b     11
c     12
h    100
k    110
dtype: int64pd.concat([s1,s2],ignore_index = True)輸出:
0    101
1     11
2     12
3    100
4    110
dtype: int64

?直接新增新索引

s3['j'] = 500輸出:
A    101
b     11
c     12
h    100
k    110
j    500
dtype: int64

3.1.4?刪操作

del s1['A']
s1.drop(['b','d'],inplace = True)

3.2 DataFrame結構的增刪改查

data = [[1,2,3],[4,5,6]]
index = ['a','b']
columns = ['A','B','C']df = pd.DataFrame(data=data,index=index,columns = columns)

3.2.1 查操作

df['A']
輸出:
a    1
b    4
Name: A, dtype: int64
df.iloc[0]
df.loc['a']

3.2.2?改操作

df.loc['a','A'] --> 1
df.loc['a']['A'] = 150

3.2.3?增操作

df.loc['c'] = [1,2,3]

df3 = pd.concat([df,df2],axis = 0)

df2['Tang'] = [10,11]

3.2.4?刪操作

df5.drop(['j'],axis=0,inplace = True) --> 去除1行
df5.drop(['A','B','C'], axis = 1,inplace = True) --> 去除多列
del df5['Tang'] --> 去除1列

四、合并操作

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']})

4.1 .merge()

res = pd.merge(left, right)

4.2 多索引合并

left = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],'key2': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K2', 'K3'],'key2': ['K0', 'K1', 'K2', 'K4'],'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']})

使用on參數?

res = pd.merge(left,right,on='key1')

res = pd.merge(left, right, on = ['key1', 'key2'])

使用how參數

outer為并集

res = pd.merge(left, right, on = ['key1', 'key2'], how = 'outer', indicator = True)

left按照左合并,right按照右合并

res = pd.merge(left, right, how = 'left')
res = pd.merge(left, right, how = 'right')

4.3 join

left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3'],'key': ['K0', 'K1', 'K0', 'K1']})
right = pd.DataFrame({'C': ['C0', 'C1'],'D': ['D0', 'D1']},index=['K0', 'K1'])
result = left.join(right, on='key')

五、數據透視表

import pandas as pd
example = pd.DataFrame({'Month': ["January", "January", "January", "January", "February", "February", "February", "February", "March", "March", "March", "March"],'Category': ["Transportation", "Grocery", "Household", "Entertainment","Transportation", "Grocery", "Household", "Entertainment","Transportation", "Grocery", "Household", "Entertainment"],'Amount': [74., 235., 175., 100., 115., 240., 225., 125., 90., 260., 200., 120.]})

5.1 .pivot()

example_pivot = example.pivot(index = 'Category',columns= 'Month',values = 'Amount')

求和

example_pivot.sum(axis = 0)

5.2?.pivot_table()

默認求均值

df.pivot_table(index = 'Sex',columns='Pclass',values='Fare')

aggfunc參數定義求法

df.pivot_table(index = 'Sex',columns='Pclass',values='Fare',aggfunc='max')

計數

df.pivot_table(index = 'Sex',columns='Pclass',values='Fare',aggfunc='count')
pd.crosstab(index = df['Sex'],columns = df['Pclass']) #計數,同上

六、?時間操作

6.1 創建時間序列

6.1.1. pd.to_datetime()

將字符串或其他格式轉換為 datetime64[ns] 類型。

pd.to_datetime('2023-04-01')
pd.to_datetime(['2023-01-01', '2023-02-01'])

6.1.2. pd.date_range()

創建固定頻率的時間序列。

pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')

常用頻率參數包括:

  • 'D':日

  • 'H':小時

  • 'M':月

  • 'Y':年

  • 'W':周

6.2 時間戳與時間區間

6.2.1. Timestamp

單個時間點,Pandas 對 datetime 的封裝:

ts = pd.Timestamp('2023-01-01 12:00:00')
ts.year  # 2023
ts.month # 1

6.2.2. Timedelta

表示時間間隔:

delta = pd.Timedelta('2 days 3 hours')

也可以進行加減操作:

pd.Timestamp('2023-01-01') + pd.Timedelta(days=3)

6.3 時間的運算與篩選

6.3.1. 時間加減

df['new_date'] = df['date'] + pd.Timedelta(days=7)

6.3.2. 篩選特定時間段

df[(df['date'] >= '2023-01-01') & (df['date'] <= '2023-03-01')]

6.4 設置索引并重采樣

6.4.1. 設置時間索引

df.set_index('date', inplace=True)

6.4.2. 取時間索引中的某個數值

data[data.index.month == 1]

6.4.3. 重采樣 resample()

將數據按時間頻率重新分組,常用于聚合、統計:

df.resample('M').mean()  # 按月取平均
df.resample('W').sum()   # 按周求和

6.5 時間格式的處理

6.5.1. 提取時間的各部分

df['date'].dt.year
df['date'].dt.month
df['date'].dt.weekday

6.5.2. 格式化輸出

df['date'].dt.strftime('%Y-%m-%d')

6.6 常見時間函數總結

函數名作用
pd.to_datetime()轉換為日期時間格式
pd.date_range()創建規則時間序列
.dt.year/.month/...提取時間字段
pd.Timedelta()表示時間間隔
.resample()重采樣
.strftime()時間格式化為字符串

七、常用操作

7.1 查看數據結構與基本信息

7.1.1 df.head() / df.tail()

查看前幾行或后幾行數據:

df.head(5)
df.tail(3)

7.1.2 df.shape / df.columns / df.index

快速了解數據的行列信息:

df.shape     # 返回 (行數, 列數)
df.columns   # 返回列名
df.index     # 返回索引

7.1.3 df.info() / df.describe()

了解字段類型和統計信息:

df.info()       # 查看每列數據類型和非空數量
df.describe()   # 查看數值列統計信息

7.2 數據選擇與過濾

7.2.1 選擇列

df['列名']
df[['列1', '列2']]

7.2.2 選擇行

df.iloc[0]           # 按位置
df.loc[0]            # 按標簽
df[df['列'] > 100]   # 條件篩選

7.2.3 多重條件

df[(df['A'] > 10) & (df['B'] < 5)]

6.3?數據修改與添加

7.3.1 新增列

df['新列'] = df['A'] + df['B']

7.3.2 修改數據

df.loc[0, 'A'] = 999

7.3.3 刪除列/行

df.drop('列名', axis=1)         # 刪除列
df.drop([0, 1], axis=0)        # 刪除行

7.4 缺失值處理

7.4.1 檢查缺失值

df.isnull()

?

df.isnull().any(axis=0)

7.4.2 刪除缺失值

df.dropna()

7.4.3 填充缺失值

df.fillna(5)
df.fillna(method='ffill')  # 前向填充

7.5. 分組與聚合

7.5.1 分組統計

單分組和多重分組

df.groupby('列名').sum()
df.groupby('列名')['目標列'].mean()
grouped = df.groupby('A')
grouped.count()grouped = df.groupby(['A','B'])
grouped.count()

?

改變索引?
grouped = df.groupby(['A','B'],as_index = False)
grouped.aggregate(np.sum)#上下等價df.groupby(['A','B']).sum().reset_index()

傳函數名的自定義分組
def get_letter_type(letter):if letter.lower() in 'aeiou':return 'a'else:return 'b'
grouped = df.groupby(get_letter_type,axis = 1)
grouped.count()

?

多索引時指定某一個索引分組

level=0表示第一個索引,level=1表示第一個索引,以此類推

grouped = s.groupby(level =0) #或寫為level='first'
grouped.sum()

?

7.5.2?拆分范圍

?根據bins中給定的范圍將ages內容拆分到(10,40],(40,80]內

ages = [15,18,20,21,22,34,41,52,63,79]
bins = [10,40,80]
bins_res = pd.cut(ages,bins)

7.5.3 一列多算

使用.agg([xx,xx,xx])

grouped = df.groupby('A')
grouped['C'].agg([np.sum,np.mean,np.std])
#上下等價
grouped['C'].agg(['sum','mean','std'])

列重命名

grouped['C'].agg(res_sum=np.sum,res_mean='mean',res_std='std')

7.6. 排序與去重

7.6.1 排序

df.sort_values(by='列名', ascending=False)

7.6.2 去重

df.drop_duplicates()

7..7 數據合并與連接

7.7.1 拼接 concat

pd.concat([df1, df2], axis=0)  # 行拼接
pd.concat([df1, df2], axis=1)  # 列拼接

7.7.2 合并 merge

pd.merge(df1, df2, on='key')               # 內連接
pd.merge(df1, df2, how='left', on='key')   # 左連接

7.8?常見函數速查表

操作分類函數說明
查看數據head() / info()查看基本信息
選擇數據iloc / loc按位置或標簽選取
缺失值isnull() / fillna()檢查與填充缺失值
分組groupby() / agg()聚合運算
合并拼接merge() / concat()數據合并
應用函數apply() / lambda自定義處理

八、字符串操作

通過 .str 接口完成

8.1 字符串小寫/大寫/首字母大寫

df['列名'].str.lower()     # 全部轉小寫
df['列名'].str.upper()     # 全部轉大寫
df['列名'].str.title()     # 每個單詞首字母大寫

8.2 去除空格、換行等

df['列名'].str.strip()      # 去除首尾空格
df['列名'].str.lstrip()     # 去除左側空格
df['列名'].str.rstrip()     # 去除右側空格

也可處理特殊字符,如換行符 \n

df['列名'].str.replace('\n', '')

8.3 查找與匹配字符串

8.3.1 包含判斷

df['列名'].str.contains('關鍵詞')

例如:?

s[s.str.contains('Ag')]

可添加正則與忽略大小寫:

df['列名'].str.contains('abc', case=False, regex=True)

8.3.2 匹配字符串開頭/結尾

df['列名'].str.startswith('前綴')
df['列名'].str.endswith('后綴')

8.4?替換、分割與拼接

8.4.1 替換

df['列名'].str.replace('舊', '新', regex=False)

也支持正則替換:

df['列名'].str.replace('\d+', '', regex=True)  # 去除所有數字

8.4.2 字符串分割

.str.split()

舉例:?

s.str.split('_')

s.str.split('_',expand = True)

?

s.str.split('_',expand = True,n=1) #n=1表示切1次

?

8.4.3 拼接字符串

df['新列'] = df['列A'] + '-' + df['列B']

注意拼接前需轉換為字符串:

df['列A'].astype(str) + df['列B']

8.5 提取子串與正則提取

8.5.1 提取固定位置子串

df['列名'].str[0:4]     # 提取前4位
df['列名'].str[-2:]     # 提取最后2位

8.5.2 正則提取

df['列名'].str.extract('(\d{4})')  # 提取年份

8.6 字符串長度統計

df['列名'].str.len()

8.7?.get_dummies()

用于將字符串數據轉換為虛擬變量(one-hot 編碼)。這種方法特別適合處理包含多個分類標簽的字符串數據

s.str.get_dummies(sep = '|')

?

1表示該行有此字母,0表示該行沒有此字母

8.8?常用字符串函數速查表

操作類型方法示例
大小寫轉換str.lower()轉小寫
去空格str.strip()去首尾空格
查找包含str.contains('a')包含判斷
替換字符str.replace('a','b')替換字符串
分割str.split('-')按分隔符切分
拼接列1 + '-' + 列2拼接列
提取str.extract('正則')提取內容
統計長度str.len()

計算字符串長度

獲取one-hotstr.get_dummies()得到對應one-hot值

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

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

相關文章

智慧大屏系統

延凡智慧大屏系統旨在打破數據壁壘&#xff0c;將海量、復雜的數據轉化為直觀易懂的可視化圖形和信息&#xff0c;廣泛應用于城市管理、企業運營、交通指揮、能源監控等多個領域&#xff0c;為管理者、決策者提供全面、實時、精準的信息展示和分析工具&#xff0c;助力高效決策…

樹莓派超全系列教程文檔--(32)config.txt常用音頻配置

config.txt常用音頻配置 板載模擬音頻&#xff08;3.5mm耳機插孔&#xff09;audio_pwm_modedisable_audio_ditherenable_audio_ditherpwm_sample_bits HDMI音頻 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 板載模擬音頻&#xff08;3.5mm耳機…

23種設計模式全面解析

設計模式是解決軟件設計中常見問題的經典方案。根據《設計模式&#xff1a;可復用面向對象軟件的基礎》&#xff08;GoF&#xff09;&#xff0c;23種設計模式分為以下三類&#xff1a; 一、創建型模式&#xff08;5種&#xff09; 目標&#xff1a;解耦對象的創建過程&#x…

AI 推理框架詳解,包含如COT、ReAct、LLM+P等的詳細說明和分類整理,涵蓋其原理、應用場景及對比分析

AI 推理引擎 以下是關于 AI 推理引擎 的詳細說明&#xff0c;涵蓋其定義、類型、核心組件、技術實現、應用場景及挑戰&#xff1a; 1. 推理引擎的定義 推理引擎&#xff08;Inference Engine&#xff09;是 AI系統的核心組件&#xff0c;負責根據輸入數據、知識庫或預訓練模…

《探秘鴻蒙分布式軟總線:開啟無感發現與零等待傳輸新時代》

在數字化浪潮中&#xff0c;設備之間的互聯互通成為構建智能生態的關鍵。鴻蒙系統中的分布式軟總線技術&#xff0c;宛如一座橋梁&#xff0c;讓各種智能設備緊密相連。尤其是其實現的設備間無感發現和零等待傳輸功能&#xff0c;更是為用戶帶來了前所未有的便捷體驗&#xff0…

JDBC 與 MyBatis 詳解:從基礎到實踐

目錄 一、JDBC 介紹 二、使用 JDBC 查詢用戶信息 三、ResultSet 結果集 四、預編譯 SQL - SQL 注入問題 五、預編譯 SQL - 性能更高 六、JDBC 增刪改操作 插入數據&#xff1a; 更新數據&#xff1a; 刪除數據&#xff1a; 七、MyBatis 介紹 八、MyBatis 入門程序 引…

基于SpringBoot成績管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

<sql>、<resultMap>、<where>、<foreach>、<trim>、<set>等標簽的作用和用法

目錄 一. sql 代碼片段標簽 二. resultMap 映射結果集標簽 三. where 條件標簽 四. set 修改標簽 五. trim 標簽 六. foreach 循環標簽 一. sql 代碼片段標簽 sql 標簽是 mybatis 框架中一個非常常用的標簽頁&#xff0c;特別是當一張表很有多個字段多&#xff0c;或者要…

《MySQL:MySQL數據庫的基本操作》

1.創建數據庫 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 大寫表示關鍵字[]&#xff1a;表示可選項CHARACTER SET ch…

深入簡出:KL散度、交叉熵、熵、信息量簡介、交叉熵損失

學習這些的最終目的 1、量化兩個概率分布的差異 2、推導交叉熵損失 一、KL散度 KL散度就是用來量化兩個概論分布的差異&#xff0c;如何量化&#xff1f; 計算真實概論分布P信息量 和 估計概論分布為Q&#xff0c;但實際概率分布為P時信息量的差值 那么設&#xff0c;概率分…

MySQL:Join連接的原理

連接查詢的執行過程&#xff1a; 確定第一個需要查詢的表【驅動表】 選取代價最小的訪問方法去執行單表查詢語句 從驅動表每獲取到一條記錄&#xff0c;都需要到t2表中查找匹配的記錄 兩表連接查詢需要查詢一次t1表&#xff0c;兩次t2表&#xff0c;在兩表的連接查詢中&…

【Drools+springboot3規則匹配】

文章目錄 一、 業務場景概述二、整體技術架構三、Drools概述1. Drools 簡介2. Drools Rete 算法與flink-cep的區別?2.1 Rete 算法概述2.2 Flink CEP 概述四、代碼實現4.1 導入依賴4.2 從kafka消費數據4.3 核心類,觸發匹配操作并將匹配數據寫入mysql4.4 Drools 管理4.5 相關的…

深入理解 Android Handler

一、引言 Handler 在安卓中的地位是不言而喻的&#xff0c;幾乎維系著整個安卓程序運行的生命周期&#xff0c;但是這么重要的一個東西&#xff0c;我們真的了解它嗎&#xff1f;下面跟隨著我的腳步&#xff0c;慢慢揭開Hanler的神秘面紗吧&#xff01; 本文將介紹Handler 的運…

讀書筆記 -- MySQL架構

1、MySQL邏輯架構 最上層的服務并不是 MySQL所獨有的&#xff0c;大多數基于網絡的客戶端/服務器的工具或者服務都有類似的架構。比如連接處理、授權認證、安全等等。 第二層架構是 MySQL 比較有意思的部分。大多數 MySQL 的核心服務功能都在這一層包括查詢解析、分析、…

linux 4.14內核jffs2文件系統不自動釋放空間的bug

前段時間在做spi-nor flash項目的時候&#xff0c;使用jffs2文件系統&#xff0c;發現在4.14內核下存在無法釋放空間的bug&#xff0c;后來進行了修復&#xff0c;修復后功能正常&#xff0c;現將修復patch公開&#xff0c;供后來者學習&#xff1a; diff --git a/fs/jffs2/ac…

vue3+vite 實現.env全局配置

首先創建.env文件 VUE_APP_BASE_APIhttp://127.0.0.1/dev-api 然后引入依賴&#xff1a; pnpm install dotenv --save-dev 引入完成后&#xff0c;在vite.config.js配置文件內加入以下內容&#xff1a; const env dotenv.config({ path: ./.env }).parsed define: { // 將…

Oracle 19c部署之手工建庫(四)

#Oracle #19c #手工建庫 手工創建Oracle數據庫&#xff08;也稱為手工建庫&#xff09;是指在已經安裝了Oracle數據庫軟件的基礎上&#xff0c;通過手動執行一系列命令和步驟來創建一個新的數據庫實例。這種方法與使用Database Configuration Assistant (DBCA)等工具自動創建數…

【Reading Notes】(8.3)Favorite Articles from 2025 March

【March】 雷軍一度登頂中國首富&#xff0c;太厲害了&#xff08;2025年03月02日&#xff09; 早盤&#xff0c;小米港股一路高歌猛進&#xff0c;暴漲4%&#xff0c;股價直接飆到52港元的歷史新高。這一波猛如虎的操作&#xff0c;直接把雷軍的身家拉到了2980億元&#xff0c…

【Python爬蟲基礎篇】--1.基礎概念

目錄 1.爬蟲--定義 2.爬蟲--組成 3.爬蟲--URL 1.爬蟲--定義 網絡爬蟲&#xff0c;是一種按照一定規則&#xff0c;自動抓取互聯網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。隨著網絡的迅速發展&#xff0c;萬維網成為大量信息的載體…