数据分析处理库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.mzph.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;万维网成为大量信息的载体…