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

Python3数据分析与挖掘建模(6)离散分布分析示例

1. 离散分布分析示例

相关库:

pandas详细用法

numpy详细用法

1.1 引入算法库

# 引入 pandas库
import pandas as pd # 引入 numpy库
import numpy as np# 读取数据
df=pd.read_csv("data/HR.csv")# 查看数据
df
Out[6]: satisfaction_level  last_evaluation  ...  department  salary
0                    0.38             0.53  ...       sales     low
1                    0.80             0.86  ...       sales  medium
2                    0.11             0.88  ...       sales  medium
3                    0.72             0.87  ...       sales     low
4                    0.37             0.52  ...       sales     low...              ...  ...         ...     ...
14997                0.11             0.96  ...     support     low
14998                0.37             0.52  ...     support     low
14999                 NaN             0.52  ...     support     low
15000                 NaN        999999.00  ...        sale     low
15001                0.70             0.40  ...        sale     nme
[15002 rows x 10 columns]

1.2 Satisfaction Level的分析

(1)分析满意度

过滤异常值

# 创建新变量
[15002 rows x 10 columns]
sl_s=df["satisfaction_level"]# 判断是否有异常值
sl_s.isnull()
Out[8]: 
0        False
1        False
2        False
3        False
4        False...  
14997    False
14998    False
14999     True
15000     True
15001    False
Name: satisfaction_level, Length: 15002, dtype: bool# 查询异常值
sl_s[sl_s.isnull()]
Out[9]: 
14999   NaN
15000   NaN
Name: satisfaction_level, dtype: float64# 列出异常值信息
df[df["satisfaction_level"].isnull()]
Out[10]: satisfaction_level  last_evaluation  ...  department  salary
14999                 NaN             0.52  ...     support     low
15000                 NaN        999999.00  ...        sale     low
[2 rows x 10 columns]# 丢弃异常值
sl_s=sl_s.dropna()# 再次查看是否有异常值
sl_s.isnull()
Out[12]: 
0        False
1        False
2        False
3        False
4        False...  
14995    False
14996    False
14997    False
14998    False
15001    False
Name: satisfaction_level, Length: 15000, dtype: bool
# 都是False,没有问题

基础分析:

# 均值
sl_s.mean()
Out[13]: 0.6128393333333333# 最大值
sl_s.max()
Out[14]: 1.0# 最小值
sl_s.min()
Out[15]: 0.09# 中位数
sl_s.median()
Out[16]: 0.64# 分位数
sl_s.quantile(q=0.25)
Out[17]: 0.44# 分位数
sl_s.quantile(q=0.75)
Out[18]: 0.82# 偏度
sl_s.skew()
Out[19]: -0.47643761717258093# 峰度
sl_s.kurt()
Out[20]: -0.6706959323886252

离散化分布分析:

np.histogram(sl_s.values,bins=np.arange(0.0, 1.1, 0.1))
Out[21]: 
(array([ 195, 1214,  532,  974, 1668, 2146, 1973, 2074, 2220, 2004],dtype=int64),array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]))

上述代码,使用了NumPy的np.histogram()函数来计算数据的直方图。

具体而言,np.histogram(sl_s.values, bins=np.arange(0.0, 1.1, 0.1))的含义是:

  • sl_s.values是一个Series对象,表示满意度(satisfaction_level)的数据。
  • np.arange(0.0, 1.1, 0.1)用于指定直方图的边界范围,从0.0到1.0,步长为0.1。
  • np.histogram()函数将根据指定的边界范围对数据进行分组,并返回每个分组中数据的频数和边界值。

输出结果中的第一个数组表示每个分组中数据的频数,第二个数组表示分组的边界值。

在这个例子中,结果显示了从0.0到1.0的10个分组,并给出了每个分组的频数。例如,频数为195的分组包含了满意度在0.0到0.1之间的数据。

这样的直方图可以帮助我们了解满意度数据的分布情况,以及各个区间内的数据数量。

1.3 LastEvaluation的分析

le_s=df["last_evaluation"]le_s[le_s.isnull()]
Out[25]: Series([], Name: last_evaluation, dtype: float64)  # 没有异常的值le_s.mean()
Out[26]: 67.37373216904412        # le_s.max()
Out[28]: 999999.0   # 最大值过大,可能有问题le_s.min()
Out[29]: 0.36     # 最小值太小,可能有问题le_s.median()
Out[30]: 0.72  # 当前中位数正常le_s.std()
Out[31]: 8164.407523745649le_s.skew()
Out[32]: 122.48265175204614  # 偏度,说明均值比大部分值都大很多le_s.kurt()
Out[33]: 15001.999986807796  # 峰度,说明该分布形变非常大# 获取大于1的值
le_s[le_s>1]
Out[34]: 
15000    999999.0    # 只有这个值大于1,说明这个值有问题,需要抛弃掉
Name: last_evaluation, dtype: float64  # 偏离太多的异常值,会对均值和方差造成影响# 过滤异常值
le_s=le_s[le_s<=1]
le_s[le_s>1]
Out[36]: Series([], Name: last_evaluation, dtype: float64)

提取正常值信息

le_s=df["last_evaluation"]
q_low=le_s.quantile(q=0.25)
q_high=le_s.quantile(q=0.75)
q_interval=q_high-q_low
k=1.5
le_s=le_s[le_s<q_high+k*q_interval][le_s>q_low-k*q_interval]
le_s
Out[49]: 
0        0.53
1        0.86
2        0.88
3        0.87
4        0.52... 
14996    0.53
14997    0.96
14998    0.52
14999    0.52
15001    0.40
Name: last_evaluation, Length: 15001, dtype: float64# 获取数量
len(le_s)
Out[50]: 15001# 获取分布图
np.histogram(le_s.values,bins=np.arange(0.0, 1.1, 0.1))
Out[51]: 
(array([   0,    0,    0,  179, 1390, 3396, 2234, 2062, 2752, 2988],dtype=int64),array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]))

去掉异常值后重新计算

le_s.max()
Out[52]: 1.0  # 正常,在0~1区域内le_s.min()
Out[53]: 0.36  # 正常,在0~1区域内le_s.mean()
Out[54]: 0.7160675954936337  # 均值不是太大le_s.median()
Out[55]: 0.72        # 中位数不是太大,且接近均值,说明差异性低le_s.std()
Out[56]: 0.17118464250786233        le_s.skew()
Out[57]: -0.02653253746872579    # 偏度小于0,没有异常le_s.kurt()
Out[58]: -1.2390454655108427     # 峰度小于0,没有异常

1.4 NumberProject的分析

静态结构分析:

np_s=df["number_project"]
np_s[np_s.isnull()]
Out[60]: Series([], Name: number_project, dtype: int64)np_s.mean()
Out[61]: 3.8026929742700974np_s.std()
Out[62]: 1.232732779200601np_s.median()
Out[63]: 4.0np_s.max()
Out[64]: 7np_s.min()
Out[65]: 2np_s.skew()
Out[66]: 0.3377744235231047np_s.kurt()
Out[67]: -0.49580962709450604np_s.value_counts()
Out[68]: 
number_project
4    4365
3    4055
5    2761
2    2391
6    1174
7     256
Name: count, dtype: int64np_s.value_counts(normalize=True)
Out[70]: 
number_project
4    0.290961
3    0.270297
5    0.184042
2    0.159379
6    0.078256
7    0.017064
Name: proportion, dtype: float64np_s.value_counts(normalize=True).sort_index()
Out[71]: 
number_project
2    0.159379
3    0.270297
4    0.290961
5    0.184042
6    0.078256
7    0.017064
Name: proportion, dtype: float64

在上述分析代码中,静态结构分析的内容主要体现在对"number_project"列数据的描述统计部分,包括以下代码段:

np_s.mean()  # 平均值
np_s.std()  # 标准差
np_s.median()  # 中位数
np_s.max()  # 最大值
np_s.min()  # 最小值
np_s.skew()  # 偏度
np_s.kurt()  # 峰度
np_s.value_counts()  # 频数统计
np_s.value_counts(normalize=True)  # 频率统计
np_s.value_counts(normalize=True).sort_index()  # 按索引排序的频率统计

这些统计指标可以帮助我们了解"number_project"列数据的分布和特征,从而进行静态结构分析。例如,通过计算平均值、标准差、偏度和峰度等指标,你可以了解该列数据的集中趋势、离中趋势、偏态和峰态情况。而频数统计和频率统计可以提供不同取值的出现次数和占比,进一步展示数据的分布情况。

1.5 AverageMonthlyHours的分析

amh_s=df["average_monthly_hours"]
amh_s.mean()
Out[75]: 201.0417277696307  # 均值比较高amh_s.std()
Out[76]: 49.94181527437925  # 标准差,比较正常amh_s.max()
Out[77]: 310amh_s.min()
Out[78]: 96amh_s.skew()
Out[79]: 0.05322458779916304  # 偏度,稍微振偏amh_s.kurt()
Out[80]: -1.1350158577565719   # 峰度,比较平缓# 用异常值公式剔除异常值
amh_s=amh_s[amh_s<amh_s.quantile(0.75)+1.5*(amh_s.quantile(0.75)-amh_s.quantile(0.25))][amh_s>amh_s.quantile(0.25)-1.5*(amh_s.quantile(0.75)-amh_s.quantile(0.25))]len(amh_s)
Out[82]: 15002  # 原数量就是15002,说明没有异常值# 查看分布
np.histogram(amh_s.values, bins=np.arange(amh_s.min(),amh_s.max()+10, 10))
Out[84]: 
(array([ 168,  171,  147,  807, 1153, 1234, 1075,  824,  818,  758,  751,738,  856,  824,  987, 1002, 1045,  935,  299,  193,  131,   86],dtype=int64),array([ 96, 106, 116, 126, 136, 146, 156, 166, 176, 186, 196, 206, 216,226, 236, 246, 256, 266, 276, 286, 296, 306, 316], dtype=int64))

1.6 TimeSpendCompany的分析

tsc_s=df["time_spend_company"]
tsc_s.value_counts().sort_index()
Out[86]: 
time_spend_company
2     3245
3     6445
4     2557
5     1473
6      718
7      188
8      162
10     214
Name: count, dtype: int64
tsc_s.mean()
Out[87]: 3.498066924410079

上述数据中,根据sort_index()结果可以得知,没有存在异常数。

1.7 WorkAccident的分析

wa_s=df["Work_accident"]
wa_s.value_counts()
Out[89]: Work_accident
0    12833
1     2169
Name: count, dtype: int64# 均值
wa_s.mean()
Out[90]: 0.14458072257032395 #说明事故率是百分之十四点四

1.8 Left的分析

l_s=df["left"]# 分布
l_s.value_counts()
Out[95]: 
left
0    11428
1     3574
Name: count, dtype: int64  # 离职率高

1.9 PromotionLast5Years的分析

pl5_s=df["promotion_last_5years"]
pl5_s.value_counts()
Out[97]: 
promotion_last_5years
0    14683
1      319
Name: count, dtype: int64  # 晋升数为319,说明只有少部分得到晋升 

1.10 Salary的分析

s_s=df["salary"]s_s.where(s_s!="nme").dropna().value_counts()
Out[103]: 
salary
low       7318
medium    6446
high      1237
Name: count, dtype: int64   # 说明高收入人群是极少数,低收入人群是半数,部分人群中等收入

1.11 Department的分析

d_s=df["department"]
d_s.value_counts(normalize=True)  # 查询分布比例
Out[105]: 
department
sales          0.275963
technical      0.181309
support        0.148647
IT             0.081789
product_mng    0.060125
marketing      0.057192
RandD          0.052460
accounting     0.051127
hr             0.049260
management     0.041994
sale           0.000133
Name: proportion, dtype: float64# 移除异常值   
d_s=d_s.where(d_s!="sale").dropna()d_s.value_counts(normalize=True)
Out[108]: 
proportion
0.276000    0.1
0.181333    0.1
0.148667    0.1
0.081800    0.1
0.060133    0.1
0.057200    0.1
0.052467    0.1
0.051133    0.1
0.049267    0.1
0.042000    0.1
Name: proportion, dtype: float64

1.12 简单对比分析操作

(1)对比分析

剔除异常值

# 移除异常值,这里移除的是isNull()查出来的异常值
df=df.dropna(axis=0,how="any")# 移除异常值,这里根据规则,移除不符合规范的值
df=df[df["last_evaluation"]<=1][df["salary"]!="name"][df["department"]!="sale"]# 清洗后的值
df
Out[110]: satisfaction_level  last_evaluation  ...  department  salary
0                    0.38             0.53  ...       sales     low
1                    0.80             0.86  ...       sales  medium
2                    0.11             0.88  ...       sales  medium
3                    0.72             0.87  ...       sales     low
4                    0.37             0.52  ...       sales     low...              ...  ...         ...     ...
14995                0.37             0.48  ...     support     low
14996                0.37             0.53  ...     support     low
14997                0.11             0.96  ...     support     low
14998                0.37             0.52  ...     support     low
15001                0.70             0.40  ...        sale     nme

根据部门分组,生成新表

df.loc[:,["satisfaction_level","last_evaluation","number_project","department"]].groupby("department").mean()
Out[131]: satisfaction_level  last_evaluation  number_project
department                                                      
IT                     0.618142         0.716830        3.816626
RandD                  0.619822         0.712122        3.853875
accounting             0.582151         0.717718        3.825293
hr                     0.598809         0.708850        3.654939
management             0.621349         0.724000        3.860317
marketing              0.618601         0.715886        3.687646
product_mng            0.619634         0.714756        3.807095
sales                  0.614447         0.709717        3.776329
support                0.618300         0.723109        3.803948
technical              0.607897         0.721099        3.877941

上述数据中,根据 satisfaction_level 的平均值可以看出对HR的满意度是比较低的。其他的数据也可以反映出相应的情况。

脚本解析:

注意,在这个示例中,使用了.loc来选择多个列,并通过列表传递给.groupby()函数。然后,调用.mean()函数来计算平均值。执行该代码将会输出每个部门的各项指标的平均值。

相关文章:

Python3数据分析与挖掘建模(6)离散分布分析示例

1. 离散分布分析示例 相关库&#xff1a; pandas详细用法 numpy详细用法 1.1 引入算法库 # 引入 pandas库 import pandas as pd # 引入 numpy库 import numpy as np# 读取数据 dfpd.read_csv("data/HR.csv")# 查看数据 df Out[6]: satisfaction_level last_eval…...

汇编语言程序设计基础知识二

五、顺序结构 1、程序设计的步骤 1、分析问题 2、建立数据模型 3、设计算法 4、编制程序 5、上机调试 2、流程图的应用 3、程序的基本控制结构 1、顺序结构&#xff1a;程序顺序执行&#xff0c;不发生跳转 2、分支结构&#xff1a;程序在执行过程中发生跳转 3、循环…...

一文详解!Robot Framework Selenium UI自动化测试入门篇

目录 前言&#xff1a; 自动化框架的选择 测试环境的搭建 导入Selenium2Library包 关键字是什么&#xff1f; 创建测试用例 前言&#xff1a; 自动化测试的重要性越来越受到人们的重视&#xff0c;因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这…...

Java 9 模块化系统详解

Java 9 模块化系统详解 一、简介1. 引入模块化系统原因2. 模块化系统带来的优势和挑战3. 模块化关键概念 二、模块化基础1. 模块化源代码结构规范2. 模块定义与描述符3. 打包可执行模块 三、模块化系统的高级特性1. 模块发现与解决依赖2. 模块化升级与替换3. 模块化动态访问 四…...

Windows定时执行Python脚本

在Linux环境下我们可以使用crontab工具来定时的执行脚本&#xff0c;可以很轻松的管理各个虚拟环境下的py文件在Windows上可以使用任务计划程序来定时执行我们的脚本 关于这个的基本使用可以查看我前面的博客 https://blog.csdn.net/wyh1618/article/details/125725967?spm10…...

数据科学简介:如何使用 Pandas 库处理 CSV 文件

部分数据来源:ChatGPT 什么是 CSV 文件? CSV ( Comma Separated Values)文件是一种常见的文本文件格式,它通常用于存储结构化数据,因为它可以轻松地转换成电子表格,如Excel。 CSV 文件是以逗号作为分隔符的表格数据。文件中的每行代表一个记录,每列代表一个属性。例如…...

面试专题:java多线程(2)-- 线程池

1.为什么要用线程池&#xff1f; 线程池提供了一种限制和管理资源&#xff08;包括执行一个任务&#xff09;。 每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处&#xff1a; 降低资源消…...

Linux文件权限及用户管理

文件权限 在Linux中&#xff0c;每个文件和目录都有一组权限&#xff0c;这些权限决定了哪些用户可以访问文件或目录&#xff0c;以及他们可以进行什么样的操作。权限分为三类&#xff1a; 所有者权限&#xff1a;这些权限适用于文件或目录的所有者。 组权限&#xff1a;这些…...

以AI为灯,照亮医疗放射防护监管盲区

相信绝大部分人都有在医院拍X光片的经历&#xff0c;它能够让医生更方便快速地找出潜在问题&#xff0c;判断病人健康状况&#xff0c;是医疗诊断过程中的常见检查方式。但同时X射线也是一把双刃剑&#xff0c;它的照射量可在体内累积&#xff0c;对人体血液白细胞有杀伤力&…...

Golang单元测试详解(一):单元测试的基本使用方法

Golang 单元测试 Golang 中的单元测试是使用标准库 testing 来实现的&#xff0c;编写一个单元测试是很容易的&#xff1a; 创建测试文件&#xff1a;在 Go 项目的源代码目录下创建一个新的文件&#xff08;和被测代码文件在同一个包&#xff09;&#xff0c;以 _test.go 为后…...

数据库的序列

目录 一、序列是什么 二、序列的用途 二、创建序列 三、查看、修改、删除序列 四、使用序列 &#xff08;1&#xff09;在插入语句中使用 &#xff08;2&#xff09;不在插入语句中使用 五、使用序列的例子 一、序列是什么 数据库对象分为&#xff1a;用户、视图、索引…...

2022年回顾

年总写完了&#xff08;已持续多年&#xff09;&#xff0c;顺便写个小的回顾。 寻找属于自己的方向 无论当前干啥&#xff0c;大多数都不是真正适合你的&#xff0c;但是&#xff0c;你又不能不做下去&#xff0c;那么&#xff0c;持续的寻找适合的&#xff0c;就是一种解开…...

40亿个QQ号,限制1G内存,如何去重?

40亿个unsigned int&#xff0c;如果直接用内存存储的话&#xff0c;需要&#xff1a; 4*4000000000 /1024/1024/1024 14.9G &#xff0c;考虑到其中有一些重复的话&#xff0c;那1G的空间也基本上是不够用的。 想要实现这个功能&#xff0c;可以借助位图。 使用位图的话&a…...

【django】django的orm的分组查询

前言&#xff1a;django当中分组查询如何实现&#xff1f; annotate from myapp import models from django.db.models.functions import TruncMonth from django.db.models import Count,Avg# 分组 values 就是取值作用 model.Book.objects.values(month).annotate(countCo…...

MySQL5.8在Windows下下载+安装+配置教程

MySQL是一款常用的关系型数据库管理系统&#xff0c;本文将介绍MySQL5.8在Windows下的安装配置教程。 1. 软件下载地址 免安装版下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/安装版下载地址&#xff1a;https://dev.mysql.com/downloads/installer/ 2. 免安…...

Flask or FastAPI? Python服务端初体验

1. 引言 最近由于工作需要&#xff0c;又去了解了一下简单的python服务搭建的相关工作&#xff0c;主要是为了自己开发的模型或者工具给同组的人使用。之前介绍的针对于数据科学研究比较友好的一个可以展示的前端框架Streamlit可以说是一个利器。不过&#xff0c;随着ChatGPT的…...

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记

写在前面的话&#xff1a;此系列文章为笔者学习计算机组成原理时的个人笔记&#xff0c;分享出来与大家学习交流。使用教材为唐朔飞第3版&#xff0c;笔记目录大体与教材相同。 网课 计算机组成原理&#xff08;哈工大刘宏伟&#xff09;135讲&#xff08;全&#xff09;高清_…...

Linux:apache网页优化

Linux&#xff1a;apache网页优化 一、Apache 网页优化二、网页压缩2.1 检查是否安装 mod_deflate 模块2.2 如果没有安装mod_deflate 模块&#xff0c;重新编译安装 Apache 添加 mod_deflate 模块2.3 配置 mod_deflate 模块启用2.4 检查安装情况&#xff0c;启动服务2.5 测试 m…...

涨点技巧:注意力机制---Yolov8引入Resnet_CBAM,CBAM升级版

1.计算机视觉中的注意力机制 一般来说,注意力机制通常被分为以下基本四大类: 通道注意力 Channel Attention 空间注意力机制 Spatial Attention 时间注意力机制 Temporal Attention 分支注意力机制 Branch Attention 1.1.CBAM:通道注意力和空间注意力的集成者 轻量级…...

solr教程

一&#xff1a;安装配置 下载完成之后&#xff0c;解压solr文件&#xff0c;解压tomcat 1.1 在tomcat安装solr,并且建立solrCore 把solr5.5目录下的server/solr-webapp/webapp 重命名为solr,并且放置到tomcat/webapp的目录下。 打开tomcat/webapp/solr/WEB-INF/web.xml新建…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...