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

python从入门到精通(二十二):python文件操作之Excel全攻略(基于pandas)

Python处理表格数据

  • 1.表格的基础知识
    • 1.1 xls与xlsx格式详解
    • 1.2 表格内部结构的认识
  • 2.表格的基础操作
    • 2.1 认识表格的基本库
      • 2.1.1 csv内置的标准库
      • 2.1.2 xlrd 和 xlwt
      • 2.1.3 openpyxl
      • 2.1.4 pandas
    • 2.2 安装和环境配置
    • 2.3 xlrd 和 xlwt
      • 2.3.1 库的说明
      • 2.3.2 安装xlrd库
      • 2.3.3 导入模块
      • 2.3.4 深入使用
    • 2.4 Pandas
      • 2.4.1 简介
      • 2.4.2 安装pandas
      • 2.4.3 导入pandas
      • 2.4.3 pandas Series数据结构
        • 2.4.3.1 Series的作用和参数
        • 2.4.3.2 创建一个空Series对象
        • 2.4.3.3 创建一个简单的Series对象
        • 2.4.3.4 根据索引值读取数据
        • 2.4.3.5 手动设定索引值
        • 2.4.3.7 手动设置索引并取值
        • 2.4.3.8 使用key/value创建Series
      • 2.4.4 pandas DataFrame数据结构
        • 2.4.4.1使用ndarrays和字典创建DF
      • 2.4.5 Pandas读取写入CSV
        • 2.4.5.1 read_csv读取CSV文件
        • 2.4.5.2 to_csv写入csv文件
        • 2.4.5.3 数据处理
      • 2.4.6 Pandas读取写入Execl
        • 2.4.6.1 Pandas数据查看
          • 2.4.6.1.1 head()
          • 2.4.6.1.2 tail()
          • 2.4.6.1.3 info()
          • 2.4.6.1.4 set_option 指定查看行数
          • 2.4.6.1.5 shape 行列数
          • 2.4.6.1.6 dtypes 变量类型
          • 2.4.6.1.7 describe 统计
        • 2.4.6.2 Pandas数据选择
          • 2.4.6.2.1 index 行名称或者行索引
          • 2.4.6.2.2 columns 查找列名称
          • 2.4.6.2.3 values查找表的值
          • 2.4.6.2.4 df["A"] 查找某一列
          • 2.4.6.2.5 df[['A','B']] 查找多个列
          • 2.4.6.2.6 sample 随机选取几行
          • 2.4.6.2.7 df[x:x]指定连续选择多行
          • 2.4.6.2.8 loc 根据行列名称定位查找
          • 2.4.6.2.9 iloc 根据索引定位查找
          • 2.4.6.2.10 布尔值索引
        • 2.4.6.3 Pandas数据修改
          • 2.4.6.3.1 list修改列名
          • 2.4.6.3.2 rename修改列名
          • 2.4.6.3.3 set_index修改索引
          • 2.4.6.3.4 按列修改值
          • 2.4.6.3.5 切片操作
          • 2.4.6.3.5 条件设置
          • 2.4.6.3.5 按列修改类型
        • 2.4.6.4 Pandas数据增加
          • 2.4.6.4.1 使用 loc按行增加
          • 2.4.6.4.1 使用 loc按列增加
        • 2.4.6.3 Pandas数据拼接
        • 2.4.6.3 Pandas数据删除
          • 2.4.6.3.1 删除空值数据
          • 2.4.6.3.2 删除格式错误数据
          • 2.4.6.3.3 删除错误数据
          • 2.4.6.3.4 删除重复数据
        • 2.4.6.4 Pandas数据排序
        • 2.4.6.5 Pandas数据过滤
        • 2.4.6.6 Pandas数据分组
        • 2.4.6.7 Pandas数据合并
        • 2.4.6.8 Pandas时间序列处理
        • 2.4.6.9 Pandas数据可视化

1.表格的基础知识

如果我们要使用python来处理表格,首先我们需要了解怎么表格的每个部分对应的python应该怎么操作

1.1 xls与xlsx格式详解

  • 历史演变:xls是Excel 2003及之前版本的默认格式,采用BIFF8二进制格式存储
  • xlsx格式特点:基于XML的开放格式(OOXML标准),采用ZIP压缩技术

兼容性对比:

  • Excel 2007+ 支持读写两种格式
  • Excel 2013+ 默认保存为xlsx
  • 其他办公软件兼容性差异

文件结构差异:

  • xls最大限制:65536行×256列
  • xlsx最大支持:1048576行×16384列

打开方式:

  • xls是excel2003及以前版本所生成的文件格式
  • xlsx是excel2007及以后版本所生成的文件格式
    (excel 2007之后版本可以打开上述两种格式,但是excel2013只能打开xls格式)

1.2 表格内部结构的认识

  • 一个Excel电子表格文档称为一个工作簿
  • 一个工作簿保存在一个扩展名为.xlsx的文件中
  • 一个工作簿可以包含多个表
  • 用户当前查看的表(或关闭Excel前最后查看的表)称为活动表
  • 在特定行和列的方格称为单元格、格子

在这里插入图片描述

2.表格的基础操作

2.1 认识表格的基本库

2.1.1 csv内置的标准库

  • 简介:csv 是 Python 内置的标准库,专门用于处理 CSV(逗号分隔值)文件。CSV
    文件是一种简单的文本文件,数据以逗号分隔不同字段,常用于数据交换和存储。
  • 优点:无需额外安装,使用简单,适合处理简单的 CSV 文件读写操作。
  • 缺点:功能相对单一,只能进行基本的读写操作,缺乏数据处理和分析功能。
  • 示例代码 - 读取 CSV 文件
import csvwith open('example.csv', 'r', newline='') as file:reader = csv.reader(file)for row in reader:print(row)

2.1.2 xlrd 和 xlwt

  • 简介:xlrd 用于读取 Excel 文件(主要支持 .xls 格式),xlwt 用于写入 Excel 文件(仅支持 .xls
    格式)。这两个库在早期 Python 处理 Excel 文件时非常常用,但由于 .xls 格式的局限性,现在逐渐被 openpyxl
    取代。
  • 优点:简单易用,对于处理旧版本的 Excel 文件有一定的优势。
  • 缺点:仅支持 .xls 格式,不支持 Excel 2010 及以上版本的 .xlsx 格式,功能相对有限。
import xlrd# 打开 Excel 文件
workbook = xlrd.open_workbook('example.xls')# 获取指定工作表,这里以获取第一个工作表为例
sheet = workbook.sheet_by_index(0)# 获取工作表的行数和列数
rows, columns = sheet.nrows, sheet.ncols# 遍历每一行
for row in range(rows):# 用于存储当前行的数据row_data = []# 遍历当前行的每一列for col in range(columns):# 获取当前单元格的值cell_value = sheet.cell_value(row, col)row_data.append(cell_value)print(row_data)
import xlwt# 创建一个新的工作簿
workbook = xlwt.Workbook()# 创建一个工作表
sheet = workbook.add_sheet('Sheet1')# 定义要写入的数据
data = [['Name', 'Age', 'City'],['Alice', 25, 'New York'],['Bob', 30, 'Los Angeles']
]# 遍历数据列表
for row_index, row in enumerate(data):# 遍历当前行的数据for col_index, value in enumerate(row):# 在指定单元格写入数据sheet.write(row_index, col_index, value)# 保存工作簿到文件
workbook.save('output.xls')

2.1.3 openpyxl

  • 简介:openpyxl 是一个用于读写 Excel 2010 及以上版本文件(.xlsx、.xlsm 等)的库。它可以直接操作 Excel
    文件的单元格、工作表、图表等元素。
  • 优点:能够精确控制 Excel 文件的各种元素,如单元格样式、合并单元格、设置公式等,适合需要对 Excel 文件进行复杂格式设置的场景。
  • 缺点:主要专注于 Excel 文件的操作,对于其他格式的表格数据支持有限,且在数据处理和分析方面不如 pandas 强大。
from openpyxl import load_workbookworkbook = load_workbook('example.xlsx')
sheet = workbook.active
for row in sheet.iter_rows(values_only=True):print(row)

2.1.4 pandas

  • 简介:pandas 是一个强大的数据处理和分析库,提供了 DataFrame 和 Series
    两种主要的数据结构,非常适合处理表格数据。它支持多种文件格式的读写,包括 CSV、Excel、SQL 数据库等。
  • 优点:功能全面,涵盖了数据读取、清洗、转换、分析、可视化等多个方面,提供了丰富的方法和函数,能够高效地处理大规模数据。
  • 缺点:学习曲线相对较陡,对于初学者来说可能需要花费一些时间来掌握其复杂的 API。
import pandas as pddf = pd.read_csv('example.csv')
average_age = df['Age'].mean()
print(f"Average age: {average_age}")

2.2 安装和环境配置

安装必要库

pip install pandas openpyxl xlrd xlsxwriter sqlite3

2.3 xlrd 和 xlwt

2.3.1 库的说明

什么是xlrd模块

  • python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写exce的库。

为什么用xlrd模块

  • 在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用。xlrd模块可以用于读取Excel的数据,速度非常快,推荐使用!

2.3.2 安装xlrd库

1.如果安装慢或者安装失败,可以指定安装源安装
在这里插入图片描述
2.百度搜索安装源
在这里插入图片描述
3.命令行下指定安装源安装
在这里插入图片描述

2.3.3 导入模块

import xlrd

2.3.4 深入使用

1.打开execl文件读取数据

data = xlrd.open_workbook("1.xls")

2.获取book中的工作表

#方法一
table = data.sheets()[0]
#方法二
table = data.sheet_by_index(0)
#方法三
table = data.sheet_by_name("sheet1")

3.返回book中的所有表

names = data.sheet_names()

4.检查sheet是否导入完毕

data.sheet_loaded(sheet_name or index)

5.获取sheet中的行数

2.4 Pandas

2.4.1 简介

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

官方网站:https://pandas.pydata.org/
官方文档:https://pandas.pydata.org/pandas-docs/stable/

2.4.2 安装pandas

pip安装pandas

pip install pandas

在这里插入图片描述

2.4.3 导入pandas

导入pandas并查看相应版本 as 是给pandas起一个简称,方便我们使用

import pandas as pd
pandas._version_

在这里插入图片描述

2.4.3 pandas Series数据结构

2.4.3.1 Series的作用和参数

Pandas Series 类似表格中的一个列(column),类似于一维数组,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。Series 可以保存任何数据类型。Series 由索引(index)和列组成,函数如下:

pandas.Series(data,index,dtype,name,copy) 

参数说明如下所示:
在这里插入图片描述

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从0开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。
2.4.3.2 创建一个空Series对象
import pandas as pd
# print(pandas.__version__)series1 = pd.Series()
print(series1)
2.4.3.3 创建一个简单的Series对象
import pandas as pd
# print(pandas.__version__)a = [1,2,3]
series2 = pd.Series(a)
print(series2)

在这里插入图片描述
在这里插入图片描述

2.4.3.4 根据索引值读取数据

从上图可知,如果没有指定索引,索引值就从0开始,我们可以根据索引值读取数据:

import pandas as pd
# print(pandas.__version__)a = [1,2,3]
series2 = pd.Series(a)
print(series2[1])

在这里插入图片描述

2.4.3.5 手动设定索引值
import pandas as pd
# print(pandas.__version__)a = [1,2,3]
series2 = pd.Series(a,index=('x','y','z'))
print(series2)

在这里插入图片描述

2.4.3.7 手动设置索引并取值
import pandas as pd
# print(pandas.__version__)a = [1,2,3]
series2 = pd.Series(a,index=('x','y','z'))
print(series2["x"])

在这里插入图片描述

2.4.3.8 使用key/value创建Series

字典的 key 变成了索引值

import pandas as pd
# print(pandas.__version__)a = {1:"xsad",2:"dsadas",3:"sdasds"}
series2 = pd.Series(a)
print(series2)

在这里插入图片描述

如果我们只需要字典中的一部分数据,只需要指定需要数据的索引即可,如下实例:

import pandas as pd
# print(pandas.__version__)a = {1:"xsad",2:"dsadas",3:"sdasds"}
series2 = pd.Series(a,index=[1,2])
print(series2)

在这里插入图片描述
设置series的name

import pandas as pd
# print(pandas.__version__)a = {1:"xsad",2:"dsadas",3:"sdasds"}
series2 = pd.Series(a,name="lucky-series-test")
print(series2)

在这里插入图片描述

2.4.4 pandas DataFrame数据结构

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series组成的字典(共同用一个索引)。
在这里插入图片描述
DataFrame 其实是从 Series 的基础上演变而来,就是多个Series组成的字典

在这里插入图片描述
行标签(index),又有列标签(columns)
在这里插入图片描述
标签和现实表格的对应关系
在这里插入图片描述

DataFrame 构造方法如下:

pandas.DataFrame( data,index,columns,dtype,copy)

在这里插入图片描述

  • data:一组数据(ndarray,series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签
  • columns:列标签,默认为 Rangelndex(0,1,2,…,n)。
  • dtype:数据类型。
  • copy:拷贝数据,默认为False。

Pandas DataFrame 是一个二维的数组结构,类似二维数组

import pandas as pd
# print(pandas.__version__)data =[['dlrb',10],['lucky',12],['glnz',13]]
df = pd.DataFrame(data,columns=['name','Age'])
print(df)

在这里插入图片描述

2.4.4.1使用ndarrays和字典创建DF

以下实例使用 ndarrays 创建,ndarray的长度必须相同,如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。

ndarray(N 维数组)是一个快速且灵活的数据集容器。

以下实例-使用 ndarrays 创建

import pandas as pd
# print(pandas.__version__)data ={'Name':['elrb','lucky','glnz'],'Age':[10,12,13]}
df = pd.DataFrame(data)
print(df)

在这里插入图片描述
从以上输出结果可以知道, DataFrame 数据类型一个表格,包含rows(行)和columns(列):
在这里插入图片描述
还可以使用字典(key/value),其中字典的 key 为列名
实例-使用字典创建

import pandas as pd
# print(pandas.__version__)data = [{'a':1,'b':2,'c':3,'d':4,'e':5},{'a':1,'b':2,'c':3,'d':4,'e':5},{'a':1,'b':2,'c':3,'d':4,'e':5},{'a':1,'b':2,'c':3,'d':4,'e':5},{'a':1,'b':2,'c':3,'d':4,'e':5}]
df = pd.DataFrame(data)
print(df)

在这里插入图片描述

Pandas 可以使用loc属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推:

import pandas as pd
# print(pandas.__version__)data ={"calories":[420,380,390],"duration":[50,40,45]
}
df = pd.DataFrame(data)
print(df.loc[0])
print(df.loc[1])

注意:返回结果其实就是一个 Pandas Series 数据。

返回多行数据,也可以返回多行数据,使用[[…]]格式,…为各行的索引,以逗号隔开:

import pandas as pd
# print(pandas.__version__)data ={"calories":[420,380,390],"duration":[50,40,45]
}
df = pd.DataFrame(data)
print(df.loc[[0,1]])

返回某行数据

import pandas as pd
# print(pandas.__version__)data ={"calories":[420,380,390],"duration":[50,40,45]
}
df = pd.DataFrame(data,index=['day1','day2','day3'])
print(df)
print(df.loc['day1'])

在这里插入图片描述

2.4.5 Pandas读取写入CSV

CSV(Iomma-Separated Values,逗号分隔值,有时也称为CSV字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。
Pandas 可以很方便的处理 CSV 文件 本文以 nba.csv为例

2.4.5.1 read_csv读取CSV文件
import pandas as pddata = pd.read_csv('2.csv')
print(data.to_string())

to_string()用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面5行和未尾5行,中间部分以…代替。

2.4.5.2 to_csv写入csv文件
import pandas as pddata = pd.read_csv('2.csv')
data.to_csv('test.csv')
print(data.to_string())

注意: 在写入csv文件会默认将索引写入如果不需要索引 则需添加参数进行处理

data.to_csv('test.csv',index=False)
2.4.5.3 数据处理

1.head()
head( n)方法用于读取前面的n行,如果不填参数n,默认返回 5 行。
实例-读取前面10行

import pandas as pddata = pd.read_csv('2.csv')
print(data.head(10))

2.tail()
tail( n)方法用于读取尾部的n行,如果不填参数n,默认返回 5 行,空行各个字段的值返回 NaN,
实例-读取未尾10 行

import pandas as pddata = pd.read_csv('2.csv')
print(data.tail(10))

3.info()
info()方法返回表格的一些基本信息

import pandas as pddata = pd.read_csv('2.csv')
print(data.info())

2.4.6 Pandas读取写入Execl

Pandas提供了非常强大的功能操作Excel,是数据分析领域处理Excel文档的重要工具

Pandas方法

  • 读取Excel
df= pd.read excel()
  • 写入Excel
df.to excel()

常用参数

  • index:是否写入索引默认为True
  • header :是否写入表头 默认True
  • sheet_name:写入哪个sheet页 默认sheet1
  • startrow 写入Excel数据开始行 默认0行
  • startcol 写入Excel数据开始列 默认0列
import pandas as pd# 读取Excel 去除表头 使用默认生成表头  
df = pd.read_excel('1.xlsx',header=None)
print(df.to_string())# 写入Excel 去除表头header=None和索引index=False 
df.to_excel('1.xlsx',index=False,header=False)

注意
当前在读取Excel以后会默认把第一行作为表头,这样在写入的时候会自带格式,为了防止这个问题出现,所以需要再读取和写入的时候给定参数,下面所有数据操作都以这个表为对象
在这里插入图片描述

2.4.6.1 Pandas数据查看

上面处理csv的所有方法在这里可以同样去使用,这里就不在过多赘述~

2.4.6.1.1 head()

head( n)方法用于读取前面的n行,如果不填参数n,默认返回 5 行。
在这里插入图片描述

2.4.6.1.2 tail()

tail( n)方法用于读取尾部的n行,如果不填参数n,默认返回 5 行,空行各个字段的值返回 NaN,
实例-读取未尾10 行
在这里插入图片描述

2.4.6.1.3 info()

info()方法返回表格的一些基本信息
在这里插入图片描述

import pandas as pd# 读取Excel 去除表头 使用默认生成表头
df = pd.read_excel('1.xlsx',header=None)
# print(data.to_string())
print(df.head())
print(df.head(10))
print(df.tail())
print(df.tail(10))
print(df.info())# 写入Excel 去除表头和索引
df.to_excel('1.xlsx',index=False,header=False)
2.4.6.1.4 set_option 指定查看行数
df= pd.set option('max rows',200) # 可查看200行
2.4.6.1.5 shape 行列数
df.shape    #DataFrame的行列数 199行 6列

在这里插入图片描述

2.4.6.1.6 dtypes 变量类型
df.dtypes

在这里插入图片描述

2.4.6.1.7 describe 统计
df.describe()

在这里插入图片描述

2.4.6.2 Pandas数据选择
2.4.6.2.1 index 行名称或者行索引
df.index

在这里插入图片描述

2.4.6.2.2 columns 查找列名称
df.columns

在这里插入图片描述

2.4.6.2.3 values查找表的值
df.values

在这里插入图片描述

2.4.6.2.4 df[“A”] 查找某一列
df['姓名'] #查找出姓名这一列

在这里插入图片描述

2.4.6.2.5 df[[‘A’,‘B’]] 查找多个列
df[['姓名','年龄']]

在这里插入图片描述

2.4.6.2.6 sample 随机选取几行
df.sample(5) #随机选5行

在这里插入图片描述

2.4.6.2.7 df[x:x]指定连续选择多行
df[1:5] #

在这里插入图片描述

2.4.6.2.8 loc 根据行列名称定位查找

格式:

df.loc[ :,:]

在这里插入图片描述
按图取出如下数据:
在这里插入图片描述

df.loc[0:5,'工号':'入职时间']

1.取一列,指定行

df.loc[0:9,'工号']

在这里插入图片描述

2.取一列,全部行,相当于取 series

df.loc[:,'工号']

在这里插入图片描述

3.取一行,指定连线列

df.loc[9,'工号':'入职时间']

在这里插入图片描述

4.取一行,指定不连续列

df.loc[9['工号','入职时间']]

在这里插入图片描述

2.4.6.2.9 iloc 根据索引定位查找

格式:

df.iloc[:,:]

在这里插入图片描述
按照图中取出所需数据:
在这里插入图片描述

df.iloc[0:7,0:5]  #包左不包右,省略顶到头

1.取一列,指定行

df.iloc[0:4,1]

在这里插入图片描述

2.取一列,全部行,相当于取 series

df.iloc[:,1]

在这里插入图片描述

3.取一行,指定连续列

df.iloc[4,1:6]

在这里插入图片描述

4.取一行,指定不连续列

df.iloc[5,[1,6]]  #报错 取这样的数据用标签取而不是索引 

5.取一行,全部列

df.iloc[46,:]

在这里插入图片描述

2.4.6.2.10 布尔值索引

最后我们可以采用判断指令(Boolean indexing)进行选择,我们可以约束某项条件然后选择出当前所有数据

df['年龄'] == 30

在这里插入图片描述

df[df['年龄'] == 30]

在这里插入图片描述

df['单价(元)'] > 5000

在这里插入图片描述

df[df['单价(元)'] > 5000]

在这里插入图片描述

2.4.6.3 Pandas数据修改
2.4.6.3.1 list修改列名
df.columns = ['num','name','age','time','sale' ,'price']

在这里插入图片描述
在这里插入图片描述

2.4.6.3.2 rename修改列名
df.rename(columns={'num'='工号','name'='姓名','age'='年龄','time'='入职时间','sale'='销量','price'='单价(元)'},inplace=True) #把英文名称改回汉字

在这里插入图片描述

2.4.6.3.3 set_index修改索引
df.set_index('工号') #工号成了索引
df.set_index('工号',inplace=True) #工号成了索引

在这里插入图片描述

df.reset_index(inplace=True) # 取消刚才的赋值操作

在这里插入图片描述
多次reset ,drop就是舍弃丢掉,当你想重新设置index的时候,就可以用到

df.reset_index(inplace=True,drop=True) # 取消刚才的赋值操作

在这里插入图片描述

2.4.6.3.4 按列修改值
df['姓名'] + ['_同学'] #字符串列可以直接加上字符串,对整列进行操作

在这里插入图片描述
在原表修改

df['姓名'] = df['姓名'] + ['_同学']

在这里插入图片描述

2.4.6.3.5 切片操作

字符串操作:长度

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

在这里插入图片描述
字符串操作:切分 split()

df['姓名'].str.split('_',expand=True)[0]

在这里插入图片描述
将姓名_同学切分后重新赋值

df['姓名'] = df['姓名'].str.split('',expand=True)[0]

在这里插入图片描述
#用 loc 标签来选取修改

df.loc[3'姓名']='曹鑫CDA'

在这里插入图片描述
#用iloc 索引来选取修改

df.iloc[3,1]='潘雨类'

在这里插入图片描述

2.4.6.3.5 条件设置

如果现在的判断条件是这样,我们想要更改B中的数,而更改的位置是取决于A的,对于A大于4的位置.更改B在相应位

df['单价(元)'] > 4000

在这里插入图片描述

df[df['单价(元)'] > 4000] = 0

在这里插入图片描述

df.loc[df['年龄']>30'姓名'] = 0 #年龄>30的姓名改为0

在这里插入图片描述

2.4.6.3.5 按列修改类型

#一列一列的处理,str,float,int

df['工号'] = df['工号'].astype('str')
df .dtypes

#一列一列的处理,时间

df['入职时间']= pd.to_datetime(df['入职时间'])
df .dtypes
2.4.6.4 Pandas数据增加
2.4.6.4.1 使用 loc按行增加
df.loc[199]=[1,1,1,1,1,1]

在这里插入图片描述

2.4.6.4.1 使用 loc按列增加

在原始上面改还是新建一列呢?

df['新姓名'] = df['姓名'+ ' 同学'

在这里插入图片描述

2.4.6.3 Pandas数据拼接
dfl = df.loc[0:5,:]

在这里插入图片描述

df2 =df.loc[4:10,:]

在这里插入图片描述
在这里插入图片描述

pd.concat([dfl,df2],axis=0)  #axis=0  上下拼接 删除  0-5 4-10

在这里插入图片描述

pd.concat([dfl,df2],axis=0,ignore_index=True )  #ignore_index重新生成index,拼接的index是乱的

在这里插入图片描述

df4 =pd.concat([dfl,df2],axis=1)        #axis=1  横向拼接

在这里插入图片描述
在这里插入图片描述

2.4.6.3 Pandas数据删除

数据清洗是对一些没有用的数据进行处理的过程,很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理
在这个教程中,我们将利用 Pandas包来进行数据清洗。
请观察下面表格
在这里插入图片描述
表包含了四种空数据

  • n/a
  • NA
  • na
  • - -
2.4.6.3.1 删除空值数据

如果我们要删除包含空字段的行,可以使用 dropna()方法语法格式如下:

DataFrame.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)
  • axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1表示逢空值去掉整列。
  • how:默认为’any’如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。
  • thresh:设置需要多少非空值的数据才可以保留下来的。
  • subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
  • inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据

我们可以通过 isnull()判断各个单元格是否为空

df['年龄'].isnull()

在这里插入图片描述

df[df['年龄'].isnull()] #取出空值的行

在这里插入图片描述

df[df['年龄'].isnu1l()| df['入职时间'].isnu11()]

在这里插入图片描述

以上例子中我们看到 Pandas 把 n/a 和 NA 当作空数据,na 不是空数据,不符合我们要求,我们可以指定空数据类型:

import pandas as pdmissing_values =['n/a","na',"--"]
df = pd.read_csv('property-data.csv',na_values = missing_values)
print(df['NUM_BRDROOMS'])
print(df['NUM_BRDROOMS'].isnull())

在这里插入图片描述

接下来的实例演示了删除包含空数据的行

df.dropna(axis=1,how='any')
'any':只要存在NaN 就 drop 掉:'al1'必须全部是 NaN 才 drop
import pandas as pddf = pd.read_csv('property-data.csv')
new_df = df.dropna()
print(new_df.to_string()) 

在这里插入图片描述
注意:默认情况下,dropna()方法返回一个新的DataFrame,不会修改源数据。
如果你要修改源数据 DataFrame,可以使用 inplace =True 参数:

import pandas as pddf = pd.read_csv('property-data.csv')
df.dropna(inplace=True)
print(df.to_string())

我们也可以移除指定列有空值的行:移除 ST NUM 列中字段值为空的行

import pandas as pddf = pd.read_csv('property-data.csv')
df.dropna(subset=['ST NUM'],inplace=True)
print(df.to_string())

在这里插入图片描述
我们也可以 filna() 方法来替换一些空字段,使用 12345 替换空字段

import pandas as pddf = pd.read_csv('property-data.csv')
df.fillna(12345,inplace =True)
print(df.to_string())

在这里插入图片描述
我们也可以指定某一个列来替换数据,使用 12345 替换 PID 为空数据:

import pandas as pddf = pd.read_csv('property-data.csv')
df['PID'].fillna(12345,inplace = True)
print(df.to_string())

替换空单元格的常用方法是计算列的均值、中位数值或众数。
Pandas使用 mean()、median()和 mode()方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)
使用 mean()方法计算列的均值并替换空单元格

import pandas as pddf = pd.read_csv('property-data.csv')
x= df["ST NUM"].mean()
df["ST NUM"].fillna(x,inplace = True)
print(df.to_string())

在这里插入图片描述
使用 median()方法计算列的中位数并替换空单元格

import pandas as pddf = pd.read_csv('property-data.csv')
x= df["ST NUM"].median()
df["ST NUM"].fillna(x,inplace = True)
print(df.to_string())

在这里插入图片描述
使用 mode()方法计算列的众数并替换空单元格

import pandas as pddf = pd.read_csv('property-data.csv')
x= df["ST NUM"].mode()
df["ST NUM"].fillna(x,inplace = True)
print(df.to_string())

在这里插入图片描述

2.4.6.3.2 删除格式错误数据

数据格式错误的单元格会使数据分析变得困难,甚至不可能,我们可以通过包含空单元格的行,或者将列中的所有单元格转换为相同格式的数据。
以下实例会格式化日期

import pandas as pd#第三个日期格式错误
data ={"Date":['2020/12/01','2020/12/02','2020/12/26'],"duration":[50,40,45]
}df = pd.DataFrame(data,index=["day1","day2","day3"])
df["Date"] = pd.to_datetime(df["Date"])
print(df)
2.4.6.3.3 删除错误数据

数据错误也是很常见的情况,我们可以对错误的数据进行替换或移除。
以下实例会替换错误年龄的数据

import pandas as pdperson = {
"name":['dlrb','lucky','Iglnz'],"age":[50,40,12345]# 12345 年龄数据是错误的
}df = pd.DataFrame(person)
print(df)
df.loc[2,'age']=30 # 修改数据
print(df.to_string())

在这里插入图片描述
也可以设置条件语句:
将 age 大于 120 的设置为 120:

import pandas as pdperson = {
"name":['dlrb','lucky','Iglnz'],"age":[50,40,12345]# 12345 年龄数据是错误的
}df = pd.DataFrame(person)
print(df)
for i in df.index:if df.loc[i,'age'] > 120 :df.loc[i,'age'] = 120print(df.to_string())

在这里插入图片描述
将 age 大于 120 的删除:

import pandas as pdperson = {
"name":['dlrb','lucky','Iglnz'],"age":[50,40,12345]# 12345 年龄数据是错误的
}df = pd.DataFrame(person)
print(df)
for i in df.index:if df.loc[i,'age'] > 120 :df.drop(i,inplace=True)print(df.to_string())
2.4.6.3.4 删除重复数据

如果我们要清洗重复数据,可以使用 duplicated()和drop_duplicates()方法。
如果对应的数据是重复的,duplicated()会返回 True,否则返回 False。

import pandas as pdperson ={"name":['dlrb','lucky','lucky','glnz'],"age":[50,0,40,23]
}
df = pd.DataFrame(person)
print(df)
print(df.duplicated())
df.drop duplicates()
print(df)
df.drop duplicates() #快速删除重复数据

在这里插入图片描述

在这里插入图片描述

按列删除

df.drop(labels='工号',axis=1)

按行删除

df.drop(labels=1,axis=0)
2.4.6.4 Pandas数据排序
df.sort_values(by=['入职时间'],ascepding = 1) # by参数指定按照什么进行排  acsending参数指定是顺序还是逆序,1顺序,0逆序

在这里插入图片描述

df.sort _values(by=['入职时间''销量','年龄'],ascending=[1,1,1])
2.4.6.5 Pandas数据过滤
2.4.6.6 Pandas数据分组
2.4.6.7 Pandas数据合并
2.4.6.8 Pandas时间序列处理
2.4.6.9 Pandas数据可视化

相关文章:

python从入门到精通(二十二):python文件操作之Excel全攻略(基于pandas)

Python处理表格数据 1.表格的基础知识1.1 xls与xlsx格式详解1.2 表格内部结构的认识 2.表格的基础操作2.1 认识表格的基本库2.1.1 csv内置的标准库2.1.2 xlrd 和 xlwt2.1.3 openpyxl2.1.4 pandas 2.2 安装和环境配置2.3 xlrd 和 xlwt2.3.1 库的说明2.3.2 安装xlrd库2.3.3 导入模…...

html常用标签

文章说明 本文旨在总结 HTML 中常见的标签&#xff0c;并提供简洁的解释&#xff0c;方便大家快速查找和复习。我们假设读者已经具备一定的 HTML 基础知识。本文将持续更新和完善&#xff0c;欢迎大家参与续写和补充 一、 HTML 标签 整个网页从 <html> 开始到 </html…...

ROS分布式部署通信

目录 一、概念 二、设置 ROS 分布式网络 1. 环境要求 2. 主机&#xff08;Master&#xff09;设置 3. 从机&#xff08;节点设备&#xff09;设置 4. 测试是否正常通信 三、进阶启动多从机节点&#xff08;launch&#xff09;。 一、概念 ROS 分布式通信用于在多台计算机…...

.Net 6 上传文件接口 文件大小报错整体配置

/// <summary>/// 上传文件/// </summary>/// <param name"file"></param>/// <returns></returns>[HttpPost("UploadifyFile")][RequestSizeLimit(2000 * 1024 * 1024)] // 设置最大请求体大小为 100MBpublic async …...

12.【线性代数】——图和网络

十二 图和网络&#xff08;线性代数的应用&#xff09; 图 g r a p h { n o d e s , e d g e s } graph\{nodes, edges\} graph{nodes,edges}1.关联矩阵2. A A A矩阵的零空间&#xff0c;求解 A x 0 Ax0 Ax0 电势3. A T A^T AT矩阵的零空间&#xff0c;电流总结电流图结论 …...

游戏引擎学习第145天

仓库:https://gitee.com/mrxiao_com/2d_game_3 今天的计划 目前&#xff0c;我们正在完成遗留的工作。当时我们已经将声音混合器&#xff08;sound mixer&#xff09;集成到了 SIMD 中&#xff0c;但由于一个小插曲&#xff0c;没有及时完成循环内部的部分。这个小插曲主要是…...

Linux(Centos 7.6)命令详解:zip

1.命令作用 打包和压缩(存档)文件(package and compress (archive) files)&#xff1b;该程序用于打包一组文件进行分发&#xff1b;存档文件&#xff1b;通过临时压缩未使用的文件或目录来节省磁盘空间&#xff1b;且压缩文件可以在Linux、Windows 和 macOS中轻松提取。 2.命…...

23年以后版本pycharm找不到conda可执行文件解决办法

这个问题很痛苦&#xff0c;折磨了我半天。 就是链接远程服务器的时候 就一直以为这三个都要配置 就这个conda环境这里怎么都找不到服务器的虚拟环境的python可执行文件&#xff0c;非常痛苦。 后面查找了资料&#xff0c;找了好久&#xff0c;才发现&#xff0c;原来只需要配…...

AGI(Artificial General Intelligence,通用人工智能)技术介绍

文章目录 **AGI的关键特点**1. **泛化能力**&#xff1a;2. **自主性和适应性**&#xff1a;3. **自我意识与推理**&#xff1a; **与当前AI的区别****AGI的挑战**1. **技术难点**&#xff1a;2. **伦理与安全**&#xff1a;3. **资源与算力**&#xff1a; **AGI的实现路径**- …...

createrepo centos通过nginx搭建本地源

yum update 先安装一个nginx。 安装Nginx yum install gcc gcc-c pcre pcre-devel openssl openssl-devel libtool zlib zlib-devel -y cd /usr/local/src wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz cd nginx-1.22.0 ./configu…...

279.完全平方数

279.完全平方数 力扣题目链接(opens new window) 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, ...&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n &#xff0c;返回和为 n 的完全平方数的 最少数…...

Dify部署踩坑指南(Windows+Mac)

组件说明 Dify踩坑及解决方案 ⚠️ 除了修改镜像版本&#xff0c;nginx端口不要直接修改docker-compose.yaml &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 1、更换镜像版本 这个文件是由.env自动生成的&#xff0c;在.env配置 …...

备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

深入解析ECDSA与RSA公钥算法:原理、对比及AWS最佳实践

一、公钥加密算法概述 在HTTPS通信和数字证书领域,ECDSA(椭圆曲线数字签名算法)和RSA(Rivest-Shamir-Adleman)是最主流的两种非对称加密算法。它们共同构成了现代网络安全的基础,但设计理念和技术实现存在显著差异。 © ivwdcwso (ID: u012172506) 二、RSA算法详解…...

单例设计模式---懒汉式--线程安全和不安全、枚举类

单例设计模式—懒汉式–线程安全和不安全 优点 资源利用率高&#xff1a;只有在真正需要使用单例实例时才进行创建&#xff0c;避免了在应用启动时就占用不必要的资源。 缺点 线程安全问题&#xff1a;在多线程环境下&#xff0c;如果多个线程同时调用获取实例的方法&#xff…...

c++: 容器vector

文章目录 介绍initializer_list与string的不同底层总代码 介绍 C 中的 vector 是一种序列容器&#xff0c;它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构&#xff0c;但它可以自动管理内存&#xff0c;这意味着你不需要手动分配和释放内存。 与 C 数组相…...

肖恩的n次根

1.肖恩的n次根 - 蓝桥云课 问题描述 喜欢研究数学问题的肖恩注意到&#xff0c;在编程语言中通常内置函数只有开平方根和开立方根&#xff0c;但是肖思想知道开高次方根&#xff08;大于3次方称为高次方&#xff09;&#xff0c;应该怎么做。请你设计一个程序来帮帮肖恩。 输…...

Java直通车系列15【Spring MVC】(ModelAndView 使用)

目录 1. ModelAndView 概述 2. ModelAndView 的主要属性和方法 主要属性 主要方法 3. 场景示例 示例 1&#xff1a;简单的 ModelAndView 使用 示例 2&#xff1a;使用 ModelAndView 处理列表数据 示例 3&#xff1a;使用 ModelAndView 处理异常情况 1. ModelAndView 概…...

LeetCode和为k的字数组(560题)

题目展示 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums …...

消息队列为什么会有消费组的概念,什么作用,以订单系统为例说明

消息队列中的消费组&#xff08;Consumer Group&#xff09;概念是为了实现消息的并行处理和负载均衡。在分布式系统中&#xff0c;消费组允许多个消费者实例共同消费同一个主题&#xff08;Topic&#xff09;中的消息&#xff0c;从而提高消息处理的速度和系统的吞吐量。 消费…...

数据结构--AVL树

一、二叉搜索树&#xff08;Binary Search Tree, BST&#xff09; 基本性质 对于树中的每个节点&#xff0c;其左子树中的所有节点值均小于该节点值。其右子树中的所有节点值均大于该节点值。左右子树也分别是二叉搜索树。 极端场景 在极端情况下&#xff0c;如插入节点顺序…...

OpenManus 的提示词

OpenManus 的提示词 引言英文提示词的详细内容工具集的详细说明中文翻译的详细内容GitHub 仓库信息背景分析总结 引言 OpenManus 是一个全能 AI 助手&#xff0c;旨在通过多种工具高效地完成用户提出的各种任务&#xff0c;包括编程、信息检索、文件处理和网页浏览等。其系统提…...

达梦数据库在Linux,信创云 安装,备份,还原

&#xff08;一&#xff09;系统环境检查 1操作系统&#xff1a;确认使用的是国产麒麟操作系统&#xff0c;检查系统版本是否兼容达梦数据库 V8。可以通过以下命令查看系统版本&#xff1a; cat /etc/os-release 2硬件资源&#xff1a;确保服务器具备足够的硬件资源&#xff0…...

怎么使用Sam Helper修改手机屏幕分辨率,使得游戏视野变广?

1.准备Shizuku 和Sam Helper软件 2.打开设置&#xff0c;找到关于本机&#xff0c;连续点击版本号五次打开开发者选项 3.找到开发者选项&#xff0c;打开USB调试和无线调试 4.返回桌面&#xff0c;我们接着打开shizuku,点击配对&#xff0c;这里打开开发者选项&#xff0c;找…...

Unity DOTS 从入门到精通之 创建实体

文章目录 前言安装 DOTS 包创建实体1.手动创建空实体&#xff08;适用于运行时动态创建&#xff09;2.克隆 预制体&#xff08;主线程同步操作&#xff09;3.克隆 预制体&#xff08;兼容Job System&#xff09;4.通过 GameObject 转换&#xff08;Baker方式&#xff09; 其他E…...

【OA角色数据权限】自定数据权限(自定义部门)、本部门数据权限、本部门及以下数据权限、仅本人数据权限

文章目录 引言I 表设计部门表设计角色表设计II 数据过滤处理注解参数说明数据权限使用数据过滤处理切面 DataScopeAspectQuery 基类知识扩展引言 I 表设计 部门表设计 部门表采用部门路径反应祖先层级关系(包含自己部门的ID) 查询用户所在的本部门及其对应的下级部门:采用…...

记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)

文章目录 记录小白使用 Cursor 开发第一个微信小程序&#xff08;一&#xff09;&#xff1a;注册账号及下载工具&#xff08;250308&#xff09;一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序&#xff08…...

STM32旋转编码器驱动详解:方向判断、卡死处理与代码分析 | 零基础入门STM32第四十八步

主题内容教学目的/扩展视频旋转编码器电路原理&#xff0c;跳线设置&#xff0c;结构分析。驱动程序与调用。熟悉电路和驱动程序。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、旋转编码器原理与驱动结构1.1 旋转编码器工作原理1.2 驱动程序结构 二、方向判断…...

海思Hi3516DV00移植yolov5-7.0的模型转化流程说明

一、YOLOv5 YOLOv5作为单阶段检测框架的集大成者&#xff0c;凭借其卓越的实时性、高精度和易用性&#xff0c;已成为工业界实际部署的首选方案。yolov5的最新版本是7.0&#xff0c;该版本是官方最后更新的一个版本。yolov5-7.0 工程化实现卓越&#xff1a;基于PyTorch框架构…...

C++ string类(前)

目录 一、前言 二、正文 1.1什么是string类 1.2为什么学习string类 1.3string使用注意 1.4 string 类常用接口说明 1.4.1string类对象的常见构造 1.4.2string类对象的容量操作 1.4.3 string 类对象的访问以及遍历操作 1.4.4 string 类对象的修改操作 三、结言 一、前…...

MySQL---INSERT语句、UPDATE语句、DELETE语句

目录 INSERT语句-插入 1.格式 2.操作 UPDATE语句-修改 1.格式 2.操作 DELETE语句-删除 1.格式 2.操作 INSERT语句-插入 1.格式 格式: insert into 表名 values (value1,value2,.....) 1. value后的内容&#xff1a;与表字段匹配的数据&#xff0c;如果字段为主键&…...

vuejs 模板语法、条件渲染、v-for、事件处理、表单输入绑定

创建vue项目之后我们就可以开始写代码了&#xff0c;我们的代码一般都会写在src目录-components目录-HelloWord.vue文件内。 我们之前写的HTML文件的结构是HTML代码可以集成或者连接外部的css/js文件。 我们通过vue建立的项目&#xff0c;它的结构是在一个vue文件内集成了HTML…...

Mysql中的常用函数

1、datediff(date1,date2) date1减去date2&#xff0c;返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…...

使用JMeter(组件详细介绍+使用方式及步骤)

JSON操作符 在我们使用请求时,经常会遇到JSON格式的请求体,所以在介绍组件之前我会将介绍部分操作符,在进行操作时是很重要的 Operator Description $ 表示根元素 当前元素 * 通配符,所有节点 .. 选择所有符合条件的节点 .name 子元素,name是子元素名称 [start:e…...

【大模型聊天】实时交互技术选型

在Python开发中&#xff0c;实现RAG问答或大模型聊天功能无需强制使用WebSocket&#xff0c;技术选型需结合实时性需求与交互场景。以下是技术分析及示例&#xff1a; 技术方案对比 技术适用场景优缺点WebSocket双向高频交互&#xff08;如实时对话&#xff09;优点&#xff1…...

计算机网络:计算机网络的概念

1.计算机网络&#xff1a;由若干个结点和链接这些的链路组成。 2.集线器&#xff08;Hub&#xff09;&#xff1a;可以把多个结点连接起来&#xff0c;组成一个计算机网络。 不能避免数据冲突的情况 3.交换机&#xff08;Switch&#xff09;:可以把多个结点连接起来&#x…...

Trae:引领未来的 AI 编程新时代

目录 Trae&#xff1a;引领未来的 AI 编程新时代 更快、更好、更准确的 AI IDE 无缝协作&#xff0c;AI 赋能开发者 Builder 模式&#xff1a;从 0 到 1 的智能助力 深度上下文理解&#xff0c;精准满足开发需求 实时代码补全&#xff0c;极致提升开发效率 智能 AI 协作…...

Vue _总结

文章目录 一 Vue介绍1 什么是Vue.js2 MVVM二 第一个例子1 引入vue2 html中用法3 创建vue实例对象三 Vue基本语法1 v-text2 v-bind3 v-on4 v-model5 v-if6 v-for7 计算属性8 组件化全局注册本地注册9 生命周期10 员工程序使用vue.js重构list.htmladd.htmlupdate.html四 使用vue-…...

Refreshtoken 前端 安全 前端安全方面

网络安全 前端不需要过硬的网络安全方面的知识,但是能够了解大多数的网络安全,并且可以进行简单的防御前两三个是需要的 介绍一下常见的安全问题,解决方式,和小的Demo,希望大家喜欢 网络安全汇总 XSSCSRF点击劫持SQL注入OS注入请求劫持DDOS 在我看来,前端可以了解并且防御前…...

基于深度学习的医学图像分割算法研究——结合MRI/CT图像的肿瘤区域自动分割与三维重建

针对课题《基于深度学习的医学图像分割算法研究——结合MRI/CT图像的肿瘤区域自动分割与三维重建》,以下是详细的研究框架与技术实现方案: 1. 核心研究要点 主要目标:构建端到端的深度学习模型,实现MRI/CT肿瘤区域的精准分割,并通过三维可视化支持临床诊断。核心挑战: 医…...

企业如何选择研发项目进度管理软件?盘点15款实用工具

这篇文章介绍了以下工具: 1. PingCode&#xff1b; 2. Worktile&#xff1b; 3. 腾讯 TAPD&#xff1b; 4. 华为 DevCloud&#xff1b; 5. 亿方云&#xff1b; 6. 阿里云效&#xff1b; 7. CODING 码云&#xff1b; 8. 明道云&#xff1b; 9. 进度猫&#xff1b; 10. 轻流等。 …...

【2024_CUMCM】图论模型

基本概念 注&#xff1a;以下叙述大多是自话&#xff0c;夹杂多数不专业表述 点集、边集 图论中图是由点和边组成的 G(V,E) V--点集 E--边集 权 G(V,E,W) W--权 一般都有权&#xff0c;构成赋权图 赋权图 在图中每条边都赋予一个非负实数权重的图&#xff0c;就是给每一条…...

Unity UGUI下优化需要射线检测类的UI元素的一种方式

直接上脚本 - 原理探究 先看MaskableGraphic 可以看到继承了Graphic&#xff0c;继续深入 在构造函数中找到了useLegacyMeshGeneration 而useLegacyMeshGeneration用来判断是否使用旧的网格生成系统&#xff0c;这里我们使用新的 在这个方法中&#xff0c;Graphic默认通过…...

unity3d 背景是桌面3d数字人,前面是web的表单

是可以实现的&#xff0c;但涉及多个技术栈的结合&#xff0c;包括 Unity3D、Web 技术&#xff08;HTML、JavaScript&#xff09;、以及可能的 WebGL 或 WebRTC 技术。大致有以下几种实现方案&#xff1a; 方案 1&#xff1a;Unity 作为独立应用&#xff08;桌面端&#xff0…...

一周热点-Claude 3.7 Sonnet-在响应和思考模型之间切换

Anthropic 最近发布了 Claude 3.7 Sonnet,这是一款具有混合推理能力的模型,允许用户在即时响应和扩展思考模式之间切换,以适应不同类型的任务需求。以下是关于 Claude 3.7 Sonnet 的详细介绍: 1 混合推理模式 标准模式:快速生成响应,适合日常对话和简单任务,能在短时间内…...

【大模型安全】安全解决方案

【大模型安全】安全解决方案 1.技术层面2.数据层面数据收集阶段训练阶段模型推理阶段 1.技术层面 在使用大语言模型时&#xff0c;通常有几种选择&#xff1a;一种是采用封装好的大语言模型SaaS云服务&#xff1b;另一种是在公有云上部署自有的大语言模型&#xff0c;并通过权…...

Clion快捷键、修改字体

文章目录 一、Clion快捷键1.撤销&#xff1a;crtl Z2.重做&#xff1a;crtl shift Z3.删除该行&#xff1a;crtl Y4.多行后退&#xff1a;选中多行 Tab5.多行缩进&#xff1a;选中多行 shift Tab 二、修改注释的斜体 一、Clion快捷键 1.撤销&#xff1a;crtl Z 2.重做…...

软件工程笔记下

从程序到软件☆ 章节 知识点 概论☆ 软件的定义&#xff0c;特点&#xff0c;生存周期。软件工程的概论。软件危机。 1.☆软件&#xff1a;软件程序数据文档 &#xff08;1&#xff09;软件&#xff1a;是指在计算机系统的支持下&#xff0c;能够完成特定功能与性能的包括…...

探索DeepSeek:牛仔技术的未来在哪里?

引言 在当今快速发展的科技世界中&#xff0c;DeepSeek作为一种前沿技术&#xff0c;正逐渐改变我们对信息搜索和数据处理的认知。本文将深入探讨DeepSeek技术的核心优势、应用场景以及未来发展趋势&#xff0c;带您全面了解这一技术的魅力所在。 一、DeepSeek技术简介 1.1 什…...

Wireshark抓包标准化流程

1. 软件安装与验证 安装路径规范 按企业要求部署至指定目录&#xff1a; xxxx/xxxx/xxxx/xxxx验证安装完整性&#xff1a; 检查是否勾选 Install TShark&#xff08;默认已选&#xff09;确认安装后生成 Wireshark.exe 和 tshark.exe 可执行文件 权限配置 右键点击安装目录下…...