当前位置: 首页 > news >正文

Pandas基础学习(1)

之前看的pandas的教材和课程里,内容参差不齐,实际使用很少的方法的内容有点多,导致很乱而且记不住那么多,这个帖子尽量用最少的文字,最精炼的语言来总结比较实用的方法,内容主要来源于《利用python进行数据分析》。

1.创建Series

直接给列表,加index。

obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])

也可以用字典

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}obj3 = pd.Series(sdata)

2.创建DataFrame

用最基础的方式,列表嵌套字典,注意把index放在字典外部,或者columns。

df= pd.DataFrame( {'first': ['kevin', 'lou', 'ian'], 
'last': ['durant', 'reed', 'brown']}, index=['3', '4', '5'] )

下面用numpy的array数组构建DataFrame,如果要加每行、每列的指定索引可以指定index、columns,array数组没有指定索引。

frame = pd.DataFrame(np.arange(9).reshape(3,3),
index=['a','b','c'],columns=['h','i','j'])

 3.DataFrame取行或列

非常重要:python中注意区分数字和字符,比如loc的使用,iloc的使用不在讨论中,iloc只能放数字(序号)。

DataFrame取列:用df['列名']或df.列名,用前者;

DataFrame取行:用loc[ ]或iloc[ ]。

tip:如果index和columns设置成数字例如1,2等,取行和取列应该为df[数字]和loc[数字],注意没有引号,如果设置成"0"、"1"(字符)的话,那就要在df[数字]中加上引号。

然后是loc和iloc的一些嵌套使用,类似这样:

data.loc['Colorado', ['two', 'three']]data.iloc[2, [3, 0, 1]]

值得一提的是(很重要) :相对于iloc,loc的取值不像传统的python列表的选取那样,使用“:”的时候会忽略掉“:”后的那个元素,而是会取到那个值,而iloc依然是和python列表的特性一样。

a = [0,1,2,3,4,5]a[:5]  #返回[0, 1, 2, 3, 4]ser = pd.Series(np.arange(3.))In [144]: ser
Out[144]: 
0    0.0
1    1.0
2    2.0
dtype: float64In [147]: ser[:1]
Out[147]: 
0    0.0
dtype: float64In [148]: ser.loc[:1]
Out[148]: 
0    0.0
1    1.0
dtype: float64In [149]: ser.iloc[:1]
Out[149]: 
0    0.0
dtype: float64

4.使用方法3对DataFrame进行取列或加列后操作

DataFrame和Series是带有索引的,如果想修改或增加它们的数据,索引应该要对上。(如果增加的数据是numpy的array或者其他没有索引的数据,那么数据个数能对的上就行。)

# numpy的array和单纯一个数字是没有索引的,可以直接加上去。

frame2['debt'] = np.arange(6.)frame2['debt'] = 16.5

 # frame2.state == 'Ohio'得到是一个与frame2相同索引的布尔值Series,所以能够顺利加上列。

frame2['eastern'] = frame2.state == 'Ohio'

#再比如,这个Val(Series)的索引相对于frame2的索引不完全,只有三个索引对应的3个值,索引最后结果只有3个数据匹配上增加,其他的用NaN填充。

In [58]: val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
In [59]: frame2['debt'] = val
In [60]: frame2
Out[60]: year   state  pop  debt
one    2000    Ohio  1.5   NaN
two    2001    Ohio  1.7  -1.2
three  2002    Ohio  3.6   NaN
four   2001  Nevada  2.4  -1.5
five   2002  Nevada  2.9  -1.7
six    2003  Nevada  3.2   NaN

这就会延申到算术运算和数据对齐部分。

5. 数据(索引)对齐后进行算术运算

数据对齐的规则在上一条已经大致说清楚了。这里的算术运算也是类似的,要求数据(索引)对齐。

算术运算的方法:可以用符号"+-*/",也可以用方法add、sub、mul、div。

Seires的算术运算比较简单,毕竟只有一维索引,要求索引对齐;DataFrame需要二维索引都对齐。不对齐的话和上面一样会出现NaN的数据。为了避免这种NaN,可以用方法“fill_value”填充值自动填充。

df1.add(df2, fill_value=0)

然后是DataFrame与Series之间的运算,依然要求数据对齐,重要的是横向还是纵向算术运算。

先用numpy的array来举个例子。arr是个3*4的array,用arr[0]提取第一行(1*4的array),然后用arr减去arr[0],是把arr的每一行都减去arr[1]这个array。

In [175]: arr = np.arange(12.).reshape((3, 4))
In [176]: arr
Out[176]: 
array([[  0.,   1.,   2.,   3.],[  4.,   5.,   6.,   7.],[  8.,   9.,  10.,  11.]])
In [177]: arr[0]
Out[177]: array([ 0.,  1.,  2.,  3.])
In [178]: arr - arr[0]
Out[178]: 
array([[ 0.,  0.,  0.,  0.],[ 4.,  4.,  4.,  4.],[ 8.,  8.,  8.,  8.]])

进而引申到DataFrame与Series的运算(前提是数据对齐),也是默认对DataFrame的每行分别减去Series。

In [179]: frame = pd.DataFrame(np.arange(12.).reshape((4, 3)),.....:                      columns=list('bde'),.....:                      index=['Utah', 'Ohio', 'Texas', 'Oregon'])
In [180]: series = frame.iloc[0]
In [181]: frame
Out[181]: b     d     e
Utah    0.0   1.0   2.0
Ohio    3.0   4.0   5.0
Texas   6.0   7.0   8.0
Oregon  9.0  10.0  11.0
In [182]: series
Out[182]: 
b    0.0
d    1.0
e    2.0
Name: Utah, dtype: float64In [183]: frame - series
Out[183]: b    d    e
Utah    0.0  0.0  0.0
Ohio    3.0  3.0  3.0
Texas   6.0  6.0  6.0
Oregon  9.0  9.0  9.0

如果DataFrame与Series的运算,要求对DataFrame的每列与Series进行算术运算,要结合axis的使用。###(这个地方的axis不用默认为1或‘columns’,可以改成0或‘index’在每列层次上进行运算)###这里发现axis默认竟然不是0?于是gpt了一下发现,关于 axis 默认值 的问题,答案是:具体情况具体分析,因为 默认的行为取决于参与运算的对象类型和索引结构

比如这里DataFrame与Series的运算的例子。

默认行为依赖于 Series 的索引

  • 如果 Series 的索引与 DataFrame 的行索引对齐,则默认 axis=0
  • 如果 Series 的索引与 DataFrame 的列索引对齐,则默认 axis=1
In [186]: series3 = frame['d']
In [187]: frame
Out[187]: b     d     e
Utah    0.0   1.0   2.0
Ohio    3.0   4.0   5.0
Texas   6.0   7.0   8.0
Oregon  9.0  10.0  11.0
In [188]: series3
Out[188]: 
Utah       1.0
Ohio       4.0
Texas      7.0
Oregon    10.0
Name: d, dtype: float64
In [189]: frame.sub(series3, axis='index')
Out[189]: b    d    e
Utah   -1.0  0.0  1.0
Ohio   -1.0  0.0  1.0
Texas  -1.0  0.0  1.0
Oregon -1.0  0.0  1.0

### 要特别注意加减乘除和sum()/average()等这些函数关于axis的使用 ###

6. “重新提取”和修改索引

Series、DataFrame(配合参数axis和0或1)可以用reindex,“重新提取”列名或行名,如果不加参数默认提取index(Series只有index),下面obj没有索引“e”对应的值,所以返回NaN。

In [91]: obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
In [93]: obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
In [94]: obj2
Out[94]: 
a   -5.3
b    7.2
c    3.6
d    4.5
e    NaN

下面df使用了axis=1,就是重新提取列名了(columns)

In [94]: df= pd.DataFrame({'first': ['kevin', 'lou', 'ian'], 'last': ['durant', 'reed', 'brown']},index=[3,4,5])Out[94]: df.reindex(['first','third'],axis=1)first	third
3	kevin	NaN
4	lou	    NaN
5	ian    	NaN

修改索引就是直接对索引进行修改。 用df.index、df.columns来修改。

7.丢弃指定轴上的项

涉及到del、drop的使用,主要是drop

对于Series,直接drop掉想要丢弃的索引及涉及的数据们。

In [105]: obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])In [107]: new_obj = obj.drop(['d', 'c'])

对于DataFrame,当然也可以用drop方法,但是要注意依然默认axis=0(index),即删除行。

In [110]: data = pd.DataFrame(np.arange(16).reshape((4, 4)),.....:                     index=['Ohio', 'Colorado', 'Utah', 'New York'],.....:                     columns=['one', 'two', 'three', 'four'])In [112]: data.drop(['Colorado', 'Ohio'])
Out[112]: one  two  three  four
Utah        8    9     10    11
New York   12   13     14    15

要删除列,让axis=1(columns)。

In [114]: data.drop(['two', 'four'], axis='columns')
Out[114]: one  three
Ohio        0      2
Colorado    4      6
Utah        8     10
New York   12     14

顺带提一下del在DataFrame的运用,del用于“彻底”删除DataFrame的某列(不能删除行),相比于del的删除,drop的删除像是临时性的,临时返回一个结果对象,不会改变DataFrame本身,通常把临时修改的结果赋给某个新变量,如果想实现“彻底”删除某一行/列,可结合inplace=True选项。(很多方法在这方面和drop都是类似的,结合inplace=True实现“彻底”执行,可以就地修改对象,不会返回新的对象,这是书上原话)

del frame2['eastern']In [115]: obj.drop('c', inplace=True)
In [116]: obj
Out[116]: 
a    0.0
b    1.0
d    3.0
e    4.0
dtype: float64

 8.排序

排序涉及到两个方法,sort_values(值)方法和sort_index(索引)方法。

对于Series,直接在对象后面使用方法就行。

obj.sort_index()
obj.sort_values()

对于DataFrame,先讨论sort_index。需要注意一些参数。首先依然是axis,不设置axis默认为0(index),也可以设置axis=1(columns),对列索引排序。

In [203]: frame = pd.DataFrame(np.arange(8).reshape((2, 4)),.....:                      index=['three', 'one'],.....:                      columns=['d', 'a', 'b', 'c'])
In [204]: frame.sort_index()
Out[204]: d  a  b  c
one    4  5  6  7
three  0  1  2  3
In [205]: frame.sort_index(axis=1)
Out[205]:a  b  c  d
three  1  2  3  0
one    5  6  7  4

数据默认是按升序排序的,但也可以降序排序,设置参数ascending=False

In [206]: frame.sort_index(axis=1, ascending=False)
Out[206]: d  c  b  a
three  0  3  2  1
one    4  7  6  5

 下面是sort_values的讨论。首先要明确在排序时,任何缺失值默认都会被放到Series的末尾。

刚才讲的axisascending=False在sort_values依旧适用。然后是一些额外的补充by参数,需要选择sort_values(by=‘列名’)或者sort_values(by='行名',axis=1),by也可以放行/列名列表,按优先级进行排序。

frame = pd.DataFrame({'b': [4, 7, -3, 2], 'a': [0, 1, 0, 1]})In [212]: frame
Out[212]: a  b
0  0  4
1  1  7
2  0 -3
3  1  2In [214]: frame.sort_values(by=['a', 'b'])
Out[214]: a  b
2  0 -3
0  0  4
3  1  2
1  1  7In [215]: frame.sort_values(by=2,axis=1)
Out[215]:b  a
0  4  0
1  7  1
2 -3  0
3  2  1

 9.汇总和计算描述统计

一些常用count、sum、mean、cumsum等描述汇总统计等,不再赘述。

DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵:

# returns有四列数据AAPL、GOOG、IBM、MSFTIn [247]: returns.corr()
Out[247]: AAPL      GOOG       IBM      MSFT
AAPL  1.000000  0.407919  0.386817  0.389695
GOOG  0.407919  1.000000  0.405099  0.465919
IBM   0.386817  0.405099  1.000000  0.499764
MSFT  0.389695  0.465919  0.499764  1.000000
In [248]: returns.cov()
Out[248]: AAPL      GOOG       IBM      MSFT
AAPL  0.000277  0.000107  0.000078  0.000095
GOOG  0.000107  0.000251  0.000078  0.000108
IBM   0.000078  0.000078  0.000146  0.000089
MSFT  0.000095  0.000108  0.000089  0.000215

10.唯一值、值计数以及成员资格

下面更多是对Series对象使用的方法。

可以用unique方法返回唯一值:

In [251]: obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])In [252]: uniques = obj.unique()
In [253]: uniques
Out[253]: array(['c', 'a', 'd', 'b'], dtype=object)

value_count()方法对Series里的值计数并倒序返回计数值排序。(注意单词拼写,以及这里value没有复数,区分之前的sort_values

In [254]: obj.value_counts()
Out[254]: 
c    3
a    3
b    2
d    1
dtype: int64

然后是一个isin方法,可以判断Series里面的元素是否在isin的列表里,返回一个布尔值Series。可以把这个布尔值Series结合之前的汇总描述统计方法配合使用。

In [256]: obj
Out[256]: 
0    c
1    a
2    d
3    a
4    a
5    b
dtype: object
In [257]: mask = obj.isin(['b', 'c'])
In [258]: mask
Out[258]: 
0     True
1    False
2    False
3    False
4    False
5     True
dtype: boolIn [259]: obj[mask]
Out[259]: 
0    c
5    b
dtype: object

最后带一句:关于axis的选择对于DataFrame确实比较复杂,且涉及大部分方法,可以不用死记硬背,使用方法时,可以进行一些试错尝试(使用副本等其他方法避免对原数据操作,以免造成不可逆转的操作),来选择正确的axis参数。

相关文章:

Pandas基础学习(1)

之前看的pandas的教材和课程里,内容参差不齐,实际使用很少的方法的内容有点多,导致很乱而且记不住那么多,这个帖子尽量用最少的文字,最精炼的语言来总结比较实用的方法,内容主要来源于《利用python进行数据…...

20241224在Ubuntu20.04.6下给X99平台上的M6000显卡安装驱动程序

20241224在Ubuntu20.04.6下给X99平台上的M6000显卡安装驱动程序 2024/12/24 16:18 下载驱动程序: https://www.nvidia.cn/drivers/lookup/ https://www.nvidia.cn/drivers/results/ https://www.nvidia.cn/drivers/details/237923/ https://www.nvidia.cn/drivers/l…...

批量多线程给TXT文档插入相关腾讯AI【高质量无水印无版权】原创图片

给蜘蛛访问的网站文章插入相关图片,可以带来以下好处: ‌1、提升用户体验‌:图片能够直观地展示文章内容,帮助用户更好地理解和消化信息。对于阅读者来说,图文并茂的内容往往更具吸引力,也能提高他们的阅读…...

保护模式基本概念

CPU 架构 RISC(Reduced Instruction Set Computer) 中文即"精简指令集计算机”。RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕 CISC&…...

mysql 查询优化之字段建立全文索引

最近在接手一些老项目时发现表设计存在问题导致查询较慢 例如一张旧表的设计: 模糊匹配某个关键字时,需要十几秒左右,而且表的数据量不多 都知道mysql8.0版本InnoDB引擎都支持全文索引了,因此可以在content建立全文索引,但全文索引对中文支持并不完善…...

redis和mysql的区别

Redis是一种非关系型数据库(NoSQL),将数据存储在缓存中,这虽然提高了运行效率,但是保存时间却很短。将数据存储在内存中,因此读写速度非常快,特别适合用于需要高速访问的场景,如缓存…...

【Laravel】接口的访问频率限制器

Laravel 接口的访问频率,你可以在 Laravel 中使用速率限制器(Rate Limiter)。以下是一个详细的步骤,展示如何为这个特定的 API 路由设置速率限制: 1. 配置 RouteServiceProvider 首先,确保在 App\Provide…...

LabVIEW水泵性能测试系统

在现代工业应用中,水泵作为一种广泛使用的流体输送设备,其性能的可靠性对整个生产系统的稳定运行至关重要。通过LabVIEW软件配合专业硬件设备,设计了一套水泵性能测试系统,实现对各类水泵的综合性能测试与分析,提升水泵…...

基于推理的目标检测 DetGPT

基于推理的目标检测 DetGPT flyfish detgpt.github.io 近年来,由于大型语言模型(LLMs)的发展,计算机视觉领域取得了重大进展。这些模型使人类与机器之间能够进行更有效、更复杂的交互,为模糊人类与机器智能界限的新技…...

【Java 基础】-- ArrayList 和 Linkedlist

目录 1. Java 中的 ArrayList 和 LinkedList 简介 ArrayList LinkedList 2. 相同数量级下的内存开销对比 ArrayList 的内存开销 LinkedList 的内存开销 3. 它们的速度对比 总结 1. Java 中的 ArrayList 和 LinkedList 简介 ArrayList 数据结构:基于动态数组…...

电脑不小心删除了msvcr120.dll文件怎么办?“缺失msvcr120.dll文件”要怎么解决?

一、文件丢失与损坏的常见原因及解决办法 1. 不小心删除系统文件 常见情况:有时在清理电脑垃圾文件时,可能会不小心删除一些重要的系统文件,如msvcr120.dll等。解决办法: 恢复文件:如果刚删除不久,可以尝…...

数据结构----链表头插中插尾插

一、链表的基本概念 链表是一种线性数据结构,它由一系列节点组成。每个节点包含两个主要部分: 数据域:用于存储数据元素,可以是任何类型的数据,如整数、字符、结构体等。指针域:用于存储下一个节点&#…...

【面试 - 遇到的问题】Vue 里 router-view 使用 key + 关闭页面后重新打开页面-获取的数据赋值到旧组件问题(钩子执行顺序)

目录 【1】问题描述【2】问题排查前 - 页面渲染、tag 页签渲染 逻辑梳理页面渲染【借用别人的描述】<router-view :key"key" />1. 不设置key 属性2. 设置 key 属性值为 $route.path/page/1 > /page/2/page?id1 > /page?id2, 3. 设置 key 属性值为 $rou…...

Dubbo简单总结

1、dubbo服务暴露的流程 ulr:protocol://username:password@host:port/path?param1=value1&param2=value2 a、服务的暴露起始于 Spring IOC 容器刷新完毕之后,会根据配置参数组装成 URL, 然后根据 URL 的参数来进行本地或者远程调用。 b、会通过 proxyFactory.getInv…...

智慧社区电商系统:提升用户体验的界面设计

3.1可行性分析 开发者在进行开发系统之前&#xff0c;都需要进行可行性分析&#xff0c;保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该智慧社区电子商务系统所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&…...

电感降额和选型规范

通常元器件有一个最佳降额范围&#xff0c;在此范围内&#xff0c;元器件工作应力的降低对其失效率的下降有显著的改善&#xff0c;设备的设计易于实现&#xff0c;且不必在设备的质量&#xff0c;体积&#xff0c;成本方面付出大的代价&#xff0c;应按设备可靠性要求&#xf…...

STM32HAL库中RTC闹钟设置时分秒,年月日

在STM32的HAL库中&#xff0c;RTC&#xff08;实时时钟&#xff09;模块提供了多种功能来管理时间和日期&#xff0c;包括设置闹钟。对于RTC闹钟功能&#xff0c;确实主要集中在时、分、秒的配置上&#xff0c;但年、月、日也可以通过RTC日期寄存器进行设置&#xff0c;并且可以…...

linux-19 根文件系统(一)

之前提到过&#xff0c;linux的目录是一个倒置的树&#xff0c;它通过层次性的方式来组织&#xff0c;管理整个系统的文件&#xff0c;而这本身实际上是通过文件系统。文件系统&#xff0c;大家记得文件系统是内核的主要功能之一&#xff0c; 它的主要目的就是实现本机上的某一…...

kotlin中泛型中in和out的区别

概念含义 in关键字&#xff08;逆变&#xff09; 在Kotlin泛型中&#xff0c;in关键字主要用于定义逆变&#xff08;Contravariance&#xff09;。它表示一个泛型类型参数可以是指定类型或者它的超类型。简单来说&#xff0c;就是对于类型A和B&#xff0c;如果A是B的子类型&…...

Spring学习(一)——Sping-XML

一、Spring的概述 (一)什么是Spring? Spring是针对bean对象的生命周期进行管理的轻量级容器。提供了功能强大IOC、AOP及Web MVC等功能。Spring框架主要由七部分组成&#xff1a;分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 S…...

设计模式——桥接模式

文章目录 1. 定义2. 结构组成3. 桥接模式结构4. 示例代码5. 模式优势6. 总结 1. 定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的主要目的是将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。 2. 结构组成 桥接模…...

python Enum类介绍及cls关键字用法详解

文章目录 Enum 类基本用法定制枚举枚举方法枚举类方法 cls 关键字类方法工厂方法总结 在 Python中&#xff0c; Enum 类和 cls 关键字有一些特定的用法和含义。下面我将详细解释它们的用法&#xff1a; Enum 类 Enum 类是Python标准库中的一个类&#xff0c;用于创建枚举&a…...

模型的多GPU并行训练,DDP

DDP全称是DistributedDataParallel, 在torch.nn.parallel里面。 今天总结一下用DDP进行多GPU并行训练的方法&#xff0c; 内容来自build gpt2加上自己的补充。 如果你有多块GPU&#xff0c;就可以充分利用它们。 DDP会创建多个process&#xff08;进程&#xff0c;不是线程哦&…...

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。 实验环境 【 !】功能简介: 按下KEY1使能电机,按下…...

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析&#xff1a; ​ 1. 与AI和机器学习的深度结合 趋势&#xff1a;LabVIEW正在向集成AI和机器学习方向发展&#xff0c;尤其是在数据处理、预测性维护和自动化控制领域。 原因&#xff1a;AI技术的普及使得实验和工业场景中的…...

ChatGPT之父:奥尔特曼

奥尔特曼 阿尔特曼一般指萨姆奥尔特曼,他是OpenAI的联合创始人兼首席执行官,被称为“ChatGPT之父”.以下是其具体介绍: 个人经历 1985年4月22日出生于美国芝加哥,8岁学会编程,9岁拥有电脑,对信息技术和互联网产生兴趣.高中就读于约翰巴勒斯中学,后进入斯坦福大学主修计…...

MySQL8.0后的double write有什么变化

什么是double write&#xff1f; 一部分是内存中的double write buffer &#xff0c;大小为2MB&#xff08;16k一个页&#xff0c;一共128个页&#xff09;。 第二部分是磁盘共享表空间的128个数据页&#xff0c;在对脏页进行落盘的时候&#xff0c;并不是直接进行落盘&#x…...

wsl ubuntu Unexpected error from cudaGetDeviceCount

wsl ubuntu Unexpected error from cudaGetDeviceCount 在这里插入图片描述 参考资料&#xff1a; Quad (4x) A6000 WSL2 CUDA Init Errors...

渐开线齿轮和摆线齿轮有什么区别?

摆线齿形与渐开线齿形的区别 虽然在比对这两种齿形&#xff0c;但有一个事情希望大家注意&#xff1a;渐开线齿轮只是摆线齿轮的一个特例。 &#xff08;1&#xff09;摆线齿形的压力角在啮合开始时最大&#xff0c;在齿节点减小到零&#xff0c;在啮合结束时再次增大到最大…...

状态图的理解和实践

状态图&#xff08;State Diagram&#xff09;是软件工程和系统设计中的一种重要工具&#xff0c;主要用于描述对象在其生命周期中的动态行为。通过状态图&#xff0c;我们可以清晰地看到对象所经历的状态序列、引起状态转移的事件&#xff08;event&#xff09;以及因状态转移…...

mysql(基础语法)

准备一张员工表 /*Navicat Premium Data TransferSource Server : localhost_3306Source Server Type : MySQLSource Server Version : 80037 (8.0.37)Source Host : localhost:3306Source Schema : studymysqlTarget Server Type : MySQLTar…...

openjdk17 从C++视角看 String的intern的jni方法JVM_InternString方法被gcc编译器连接

symbols-unix 文件部分内容 JVM_IHashCode JVM_InitClassName JVM_InitStackTraceElement JVM_InitStackTraceElementArray JVM_InitializeFromArchive JVM_InternString 要理解在 symbols-unix 文件中包含 JVM_InternString 方法的原因&#xff0c;我们需要从构建过程、符号…...

金融保险行业数字化创新实践:如何高效落地自主可控的企业级大数据平台

使用 TapData&#xff0c;化繁为简&#xff0c;摆脱手动搭建、维护数据管道的诸多烦扰&#xff0c;轻量替代 OGG, Kettle 等同步工具&#xff0c;以及基于 Kafka 的 ETL 解决方案&#xff0c;「CDC 流处理 数据集成」组合拳&#xff0c;加速仓内数据流转&#xff0c;帮助企业…...

一键打断线(根据相交点打断)——CAD c# 二次开发

多条相交线根据交点一键打断&#xff0c;如下图&#xff1a; 部分代码如下: finally namespace IFoxDemo; public class Class1 {[CommandMethod("ddx")]public static void Demo(){//"ifox可以了".Print();Database db HostApplicationServices.Workin…...

flask基础

from flask import Flask, requestapp Flask(__name__)# app.route(/) # def hello_world(): # put applications code here # return Hello World!app.route(/) # 路由 当用户访问特定 URL 时&#xff0c;Flask 会调用对应的视图函数来处理请求 def index():return …...

Springboot基于Web的高校志愿者服务管理系统81559

Springboot基于Web的高校志愿者服务管理系统81559 本系统&#xff08;程序**源码数据库调试部署开发环境&#xff09;带论文文档1****万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。** 系统程序文件列表 项目功能&#xff1a; 志愿者,团队,招募机构,团队信息…...

各种网站(学习资源及其他)

欢迎围观笔者的个人博客~ 也欢迎通过RSS网址https://kangaroogao.github.io/atom.xml进行订阅~ 大学指南 上海交通大学生存手册中国科学技术大学人工智能与数据科学学院本科进阶指南USTC不完全入学指南大学生活质量指北科研论 信息搜集 AI信息搜集USTC飞跃网站计算机保研 技…...

熊军出席ACDU·中国行南京站,详解SQL管理之道

12月21日&#xff0c;2024 ACDU中国行在南京圆满收官&#xff0c;本次活动分为三个篇章——回顾历史、立足当下、展望未来&#xff0c;为线上线下与会观众呈现了一场跨越时空的技术盛宴&#xff0c;吸引了众多业内人士的关注。云和恩墨副总经理熊军出席此次活动并发表了主题演讲…...

Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人

安装 1.拉取项目 项目地址: chatgpt-on-wechat 2.安装依赖 pip3 install -r requirements.txt pip3 install -r requirements-optional.txt3、获取API信息 当前免费的有百度的文心一言&#xff0c;讯飞的个人认证提供500万token的额度。 控制台-讯飞开放平台 添加链接描述…...

独一无二,万字详谈——Linux之文件管理

Linux文件部分的学习&#xff0c;有这一篇的博客足矣! 目录 一、文件的命名规则 1、可以使用哪些字符&#xff1f; 2、文件名的长度 3、Linux文件名的大小写 4、Linux文件扩展名 二、文件管理命令 1、目录的创建/删除 &#xff08;1&#xff09;、目录的创建 ① mkdir…...

达梦数据库-读写分离集群部署

读写分离集群部署 读写分离集群由一个主库以及一个或者多个(最多可以配置 8 个)实时备库组成&#xff0c;基于实时归档实现的高性能数据库集群&#xff0c;不但提供数据保护、容灾等数据守护基本功能&#xff0c;还具有读写操作自动分离、负载均衡等特性。同时可以配置确认监视…...

C#(事件)2

一、事件的使用步骤 定义委托&#xff08;如果需要&#xff09;&#xff1a; 如果没有合适的预定义委托&#xff0c;就需要定义一个委托来匹配事件处理程序的签名。例如&#xff0c;public delegate void MyEventHandler(int value);定义了一个名为MyEventHandler的委托&…...

Linux xargs 命令使用教程

简介 xargs 是一个功能强大的 Linux 命令&#xff0c;用于从标准输入构建和执行命令。它接受一个命令的输出&#xff0c;并将其作为参数提供给另一个命令。它在处理大量输入时特别有用&#xff0c;其含义可以解释为&#xff1a;extended arguments&#xff0c;使用 xargs 允许…...

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…...

Centos下的OpenSSH服务器和客户端

目录 1、在 IP地址为192.168.98.11的Linux主机上安装OpenSSH服务器&#xff1b; 2、激活OpenSSH服务&#xff0c;并设置开机启动&#xff1b; 3、在IP地址为192.168.98.33的Linux主机上安装OpenSSH客户端&#xff0c;使用客户端命令&#xff08;ssh、scp、sftp&#xff09;访…...

赋能新一代工业机器人-望获实时linux在工业机器人领域应用案例

在工业4.0蓬勃发展的当下&#xff0c;工业机器人作为制造业转型升级的中流砥柱&#xff0c;正朝着超精密、极速响应的方向全力冲刺。然而&#xff0c;为其适配理想的望获实时Linux系统&#xff0c;却犹如寻找开启宝藏之门的关键钥匙&#xff0c;成为众多企业在智能化进程中的棘…...

我的JAVA-Web基础(2)

1.JDBC 防止sql注入 2.JSP JSP的基本语法 基本语法是 <% %> Java代码 <% %> 输出变量 可以转换成${变量}的EL表达式 <%! %>定义变量 JSP的基本语法包括以下几个主要部分&#xff1a; 1. 表达式&#xff08;Expression&#xff09; 表达式用于将…...

OMG DDS 规范漫谈:分布式数据交互的演进之路

一、由来与起源脉络 OMG DDS&#xff08;Object Management Group Data Distribution Service&#xff09;的发展是计算机科学和技术进步的一个缩影&#xff0c;它反映了对高效、可靠的数据共享需求的响应。DDS 的概念萌生于20世纪90年代末&#xff0c;当时分布式计算已经从理…...

JVM系列(十二) -常用调优命令汇总

最近对 JVM 技术知识进行了重新整理&#xff0c;再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以直接点击如下地址快速阅读。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的加载过程JVM系列(三) -内存布局详解JVM系列(四) -对象的创建过程JVM系列(五) -对象的内存分…...

人的心理特征

一、心理特征 通过心理学实验揭示了人类在认知、情感、行为等方面的一些普遍规律。 1. 社会性与从众心理 实验例子&#xff1a;阿什的从众实验&#xff08;Asch Conformity Experiment&#xff09;结论&#xff1a;人类天生具有从众的倾向&#xff0c;尤其是在群体中&#x…...