【Python】数据分析+数据挖掘——掌握Python和Pandas中的单元格替换操作

1. 前言

数据处理和清洗是数据分析和机器学习中至关重要的步骤。在数据处理过程中,我们经常需要对数据集进行清洗和转换,其中单元格替换是一个常用的技术。Python作为一种功能强大且灵活的编程语言,为数据处理提供了丰富的工具和库。Pandas库是Python中最流行的数据处理库之一,它提供了丰富的功能,包括强大的单元格替换操作。

在本博客中,我们将深入探讨Python和Pandas库中有关单元格替换的知识。我们将首先介绍Python中的基本替换方法,然后重点关注Pandas库中的df.replace()方法,以及如何使用它来进行单元格替换。我们还将学习如何使用df.replace()来实现单元格范围替换,以及如何进行哑变量替换,将分类数据转换为更易于处理的形式。


2. 单元格变量替换

当涉及到数据处理、清洗或转换时,Python原生库和Pandas库都提供了一些功能来进行单元格替换。让我们先介绍一下Python原生库中的替换方法,然后再探讨Pandas库的相关功能。


Python原生库中的单元格替换:

在Python中,主要使用内置的数据结构如列表(List)和字典(Dictionary)来处理数据。对于列表,你可以使用列表推导式或循环来实现单元格替换,而对于字典,可以通过键值对的方式进行替换。



  1. 例如使用列表推导式替换列表中的特定值:

In[0]:

derive_list = ['a','b','c','d','e'] # 用列表推导来替换的列表例子

derive_list = [x if x != 'a' else 'A' for x in derive_list] # 使用列表推导式来替换列表中特定的值
print(derive_list)

注释:

  • derive_list: 这是一个列表变量,它包含了一些元素。假设derive_list是一个字符串列表,例如[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]。

  • for x in derive_list: 这是列表推导式的循环部分。它遍历derive_list中的每个元素,并将当前元素赋值给变量x。

  • x if x != ‘a’ else ‘A’: 这是列表推导式的条件表达式。它表示如果当前元素x不等于’a’,则不做修改,否则替换为’A’。

最终结果: 列表推导式的结果是一个新的列表,其中满足条件的元素已经被替换。该结果会覆盖原始的derive_list,因此derive_list会被修改。


out[0]:

['A', 'b', 'c', 'd', 'e']


  1. 接下来使用循环替换列表中的特定值:

In[1]:

loop_list = ['h','e','l','l','o',',','p','y','t','h','o','n'] # 用循环来替换列表中特定的值

for index,list_item in enumerate(loop_list): # 使用循环来替换列表中特定的值
    if list_item == 'p':
        loop_list[index] = 'P'
    
for new_list_item in loop_list: # 使用循环来依次打印新列表里面的元素值
    print(new_list_item, end="") # end=""的作用是不换行

注释:

  • enumerate()函数可以用于遍历一个可迭代对象(如列表、元组、字符串等)并返回元素的索引和对应的值。

out[1]:

hello,Python


  1. 最后在学习一下使用字典替换列表中的特定值:

In[2]:

num_key_dict = {0:'a',1:'b',2:'c',3:'d'} # 键为number类型的dict
str_key_dict = {'0':'a','1':'b','2':'c','3':'d'} # 键为string类型的dict

num_key_dict[1] = 'B' # 替换dict中的特定值
str_key_dict['1'] = 'B' # 替换dict中的特定值

print("num_key_dict is:",num_key_dict)
print("str_key_dict is:",str_key_dict)

注释:

  • 若将str_key_dict['1'] = 'B'改为str_key_dict[1] = 'B'那么str_key_dict中的’b‘值并不会被改变,而是字典中多了一个key为1,value为’B’的键值对

out[2]:

num_key_dict is: {0: 'a', 1: 'B', 2: 'c', 3: 'd'}
str_key_dict is: {'0': 'a', '1': 'B', '2': 'c', '3': 'd'}

案例数据表university_rank.csv

在这里插入图片描述

接下来我们将重点放在Pandas中的单元格替换操作,Pandas提供了多种方法来替换DataFrame或Series中的特定值。这些方法可以帮助你快速、灵活地对数据进行替换。下面将详细介绍几种常用的单元格替换方法。

常用的函数是df.inplace来进行某个单元格或者某个列的变量替换

语法:DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method=‘pad’)

df.replace(
    # 要替换的值。可以是单个值、一个列表、字典或正则表达式。
    to_replace
    # 用于替换的新值。可以是单个值或字典。
    value
    # 是否在原df上修改
    inplace = False
    # 指定每行替换的最大数量。默认为None,表示不限制。
    limit = None
	# 是否启用正则表达式替换。默认为False。
	regex = False 
	# 当to_replace为字典时,指定如何进行替换。默认为'pad',表示用字典中的值向前填充
	method = 'pad'
)

In[3]:

import pandas as pd

df = pd.read_csv("university_rank.csv") # 读取案例数据表
inplace_set = {'北美': "北美洲", '南美': '南美洲'} # 创建一个替换集合
df.地区.replace(inplace_set, inplace=True) # 将读取到的数据中所有'北美'、'南美'单元格均换成'北美洲'、'南美洲'
df # 展示新的DataFrame

**out[3]:**
        大学名称   排名   地区   学科领域    排名依据
0       哈佛大学    1  北美洲     工程    学术声誉
1       牛津大学    2   欧洲     医学    科研产出
2       北京大学    3   亚洲     商学   国际影响力
3       悉尼大学    4  大洋洲  计算机科学    教学质量
4      圣保罗大学    5  南美洲     艺术   学生满意度
..       ...  ...  ...    ...     ...
95   圣保罗国立大学   96  南美洲  计算机科学  研究生录取率
96   约翰内斯堡大学   97   非洲   环境科学    学术声誉
97     麦吉尔大学   98  北美洲     艺术   学生满意度
98  伦敦政治经济学院   99   欧洲     法律   国际影响力
99      东京大学  100   亚洲     教育  毕业生就业率

[100 rows x 5 columns]

2.1 范围单元格替换

假如要对某个范围的单元格进行替换就需要搭配df.querydf.locdf.index来使用来达到目的

若我想要筛选出地区为北美洲和南美洲,同时10<排名<80的所有记录,将其排名依据均设置为空



In[4]:

df.loc[df.query("10<排名<80 and 地区 in ['北美洲','南美洲']").index, '排名依据'] = '' # 筛选出地区为北美洲和南美洲,同时10<排名<80的所有记录,将其排名依据均设置为空
df[10:79] # 查看进行范围单元格替换后的DataFrame

out[4]:

大学名称排名地区学科领域排名依据
10斯坦福大学11北美洲工程
11剑桥大学12欧洲医学教学质量
12清华大学13亚洲商学校友网络
13墨尔本大学14大洋洲计算机科学学术声誉
14圣保罗国立大学15南美洲艺术
..................
74墨尔本大学75大洋洲商学国际化程度
75圣保罗国立大学76南美洲计算机科学
76约翰内斯堡大学77非洲环境科学学术声誉
77麦吉尔大学78北美洲艺术
78伦敦政治经济学院79欧洲法律国际影响力

69 rows × 5 columns



同样的我们也可以使用replace方法,通过条件表达式选择满足条件的行,并将"排名依据"列的值置为空字符串

In[5]:

# 使用replace方法,通过条件表达式选择满足条件的行,并将"排名依据"列的值置为空字符串
condition = (df["排名"].between(11, 79)) & (df["地区"].isin(['北美洲', '南美洲']))
df['排名依据'].replace(to_replace=df.loc[condition, '排名依据'].values, value='', inplace=True)

df[10:79] # 查看进行范围单元格替换后的DataFrame
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}

out[5]:

大学名称排名地区学科领域排名依据
10斯坦福大学11北美洲工程
11剑桥大学12欧洲医学教学质量
12清华大学13亚洲商学校友网络
13墨尔本大学14大洋洲计算机科学学术声誉
14圣保罗国立大学15南美洲艺术
..................
74墨尔本大学75大洋洲商学国际化程度
75圣保罗国立大学76南美洲计算机科学
76约翰内斯堡大学77非洲环境科学学术声誉
77麦吉尔大学78北美洲艺术
78伦敦政治经济学院79欧洲法律国际影响力

69 rows × 5 columns


2.2 哑变量替换

在数据分析和统计学中,哑变量(Dummy Variable),也称为虚拟变量,是用来对分类变量进行编码的一种方法。在许多机器学习算法中,需要将分类数据转换为数值形式才能进行处理,而哑变量就是一种常用的编码方式。

哑变量编码的基本思想是将一个有n个取值的分类变量转换成n个二进制变量,每个二进制变量表示该分类是否出现。对于原始的分类变量,其中某个取值用1表示,而其他取值用0表示。这样做的目的是为了在数值形式上保持分类变量之间的独立性。

例如,假设有一个商品,它具有商品ID、价格、分类三个属性,变量“分类”,包含三个取值:“日常用品”、“蔬果"和"服装”。如下图所示

属性1
属性2
属性3
商品
商品ID
价格
分类

使用哑变量编码后,将生成三个二进制变量:"日常用品"变量、“蔬果"变量和"服装"变量。如果原始数据中的某一行"分类"是"日常用品”,则"日常用品"变量为1,而"蔬果"和"服装"变量为0。


下面这个表格是正常的商品表

商品名称商品ID价格分类
手帕纸10011$日常用品
T恤100210$服装
火龙果10035$蔬果

下面这个改动后的商品表则是使用分类这个哑变量

商品名称商品ID价格分类_日常用品分类_服装分类_蔬果
手帕纸10011$100
T恤100210$010
火龙果10035$001

哑变量替换(Dummy Variable Replacement)指的是将原始的分类变量使用哑变量编码替换成数值形式。这种替换方式常用于机器学习模型的训练和其他数据分析任务,因为大部分算法需要处理数值数据。



在Pandas中,使用pd.get_dummies函数可以方便地将包含分类数据的DataFrame或Series转换成哑变量形式。它会自动识别分类数据并生成相应的哑变量。其中某个分类的取值用1表示,其余分类的取值用0表示。

语法:pd.get_dummies(data, prefix=None, prefix_sep=‘_’, columns=None, drop_first=False, dtype=None)

pd.get_dummies(
    # 转换的变量列,若不指定则为全部列
    data
    # 哑变量名称前缀,str或列表,用于指定生成的哑变量列名的前缀。默认为None,即不添加前缀。
    prefix = None
    # 用于指定前缀与原始列名之间的分隔符
    prefix_sep = '_'
    # 设置空值的哑变量
    dummy_na = False
    # 转换的原始列名,若不指定则为全部列
    columns = None
    # 是否丢弃第一列,因为若后面的列全为0,反向说明省去的列为1,则第一列可舍去
    drop_frist = False
	# 数据类型,用于指定生成哑变量列的数据类型。默认为None,即自动推断数据类型。
	dtype = None
)

In[6]:

df = pd.read_csv("university_rank.csv") # 读取案例数据表
print(df) # 打印一下案例数据表
print(pd.get_dummies(data=df.学科领域)) # 只打印以学科领域为哑变量列的表 

out[6]:

        大学名称   排名   地区   学科领域    排名依据
0       哈佛大学    1   北美     工程    学术声誉
1       牛津大学    2   欧洲     医学    科研产出
2       北京大学    3   亚洲     商学   国际影响力
3       悉尼大学    4  大洋洲  计算机科学    教学质量
4      圣保罗大学    5   南美     艺术   学生满意度
..       ...  ...  ...    ...     ...
95   圣保罗国立大学   96   南美  计算机科学  研究生录取率
96   约翰内斯堡大学   97   非洲   环境科学    学术声誉
97     麦吉尔大学   98   北美     艺术   学生满意度
98  伦敦政治经济学院   99   欧洲     法律   国际影响力
99      东京大学  100   亚洲     教育  毕业生就业率

[100 rows x 5 columns]
医学商学工程教育法律环境科学社会科学经济学艺术计算机科学
00010000000
11000000000
20100000000
30000000001
40000000010
.................................
950000000001
960000010000
970000000010
980000100000
990001000000

100 rows × 10 columns



In[7]:

df = pd.read_csv("university_rank.csv") # 读取案例数据表
print(df) # 打印案例表
print(pd.get_dummies(df, columns=["学科领域"])) # 打印包括学科领域哑变量列的所有数据

out[7]:

        大学名称   排名   地区   学科领域    排名依据
0       哈佛大学    1   北美     工程    学术声誉
1       牛津大学    2   欧洲     医学    科研产出
2       北京大学    3   亚洲     商学   国际影响力
3       悉尼大学    4  大洋洲  计算机科学    教学质量
4      圣保罗大学    5   南美     艺术   学生满意度
..       ...  ...  ...    ...     ...
95   圣保罗国立大学   96   南美  计算机科学  研究生录取率
96   约翰内斯堡大学   97   非洲   环境科学    学术声誉
97     麦吉尔大学   98   北美     艺术   学生满意度
98  伦敦政治经济学院   99   欧洲     法律   国际影响力
99      东京大学  100   亚洲     教育  毕业生就业率

[100 rows x 5 columns]
大学名称排名地区排名依据学科领域_医学学科领域_商学学科领域_工程学科领域_教育学科领域_法律学科领域_环境科学学科领域_社会科学学科领域_经济学学科领域_艺术学科领域_计算机科学
0哈佛大学1北美学术声誉0010000000
1牛津大学2欧洲科研产出1000000000
2北京大学3亚洲国际影响力0100000000
3悉尼大学4大洋洲教学质量0000000001
4圣保罗大学5南美学生满意度0000000010
.............................................
95圣保罗国立大学96南美研究生录取率0000000001
96约翰内斯堡大学97非洲学术声誉0000010000
97麦吉尔大学98北美学生满意度0000000010
98伦敦政治经济学院99欧洲国际影响力0000100000
99东京大学100亚洲毕业生就业率0001000000

100 rows × 14 columns



In[8]:

print(pd.get_dummies(df, columns=["学科领域"], drop_first=True)) # 去掉第一列哑变量

out[8]:

大学名称排名地区排名依据学科领域_商学学科领域_工程学科领域_教育学科领域_法律学科领域_环境科学学科领域_社会科学学科领域_经济学学科领域_艺术学科领域_计算机科学
0哈佛大学1北美学术声誉010000000
1牛津大学2欧洲科研产出000000000
2北京大学3亚洲国际影响力100000000
3悉尼大学4大洋洲教学质量000000001
4圣保罗大学5南美学生满意度000000010
..........................................
95圣保罗国立大学96南美研究生录取率000000001
96约翰内斯堡大学97非洲学术声誉000010000
97麦吉尔大学98北美学生满意度000000010
98伦敦政治经济学院99欧洲国际影响力000100000
99东京大学100亚洲毕业生就业率001000000

100 rows × 13 columns

2.3 分段单元格替换

分段单元格替换(Binning)是一种在数据处理中常用的技术,它将连续的数值数据划分为若干个离散的区间,然后用相应的区间值来替换原始数据。这样可以将连续的数值数据转换为有序的分类数据,便于数据分析和可视化。

分段单元格替换通常用于数据的离散化,将数值数据按照一定规则划分成若干区间,然后将原始数据映射到相应的区间值。

在Pandas中,可以使用cut()函数来实现分段单元格替换。cut()函数接受一个Series对象和一个表示区间边界的列表,然后将Series中的数值映射到相应的区间。

假如现在我想要将原本1-100的排名替换成1-20,20-40,40-60,60-80,80-100五段来显示,那么我们能使用什么函数来达到这个目的呢?


语法:pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=‘raise’)

pd.cut(
    # 分段的变量列名称
    x
    # 具体的分段设定,表示区间边界的列表,可以是整数表示区间的个数,也可以是自定义的边界值列表
    bin
    # 是否包括右边界 '[)'形式
    right = True
    # 给分段设置标签
    lables = None
    # 第一条记录是否包括左侧界值,当right不为True才有效果
    include_lowest = False
    # 是否返回划分后的区间边界值,默认为False。
	retbins = False 
	# 表示区间边界的精度,默认为3
	precision = 3
	# 处理重复的边界值。默认为'raise',即如果有重复的边界值会抛出异常
	duplicates = 'raise'
)

In[9]:

df = pd.read_csv("university_rank.csv") # 读取案例数据表

# 对df的排名列进行分段处理 
df['排名'] = pd.cut(x=df['排名'], bins=[1, 20, 40, 60, 80, 100],
                  right=False, labels=["L1", "L2", "L3", "L4", "L5"])
print(df.head(40)) # 打印替换后的新DataFrame

out[9]:

大学名称排名地区学科领域排名依据
0哈佛大学L1北美工程学术声誉
1牛津大学L1欧洲医学科研产出
2北京大学L1亚洲商学国际影响力
3悉尼大学L1大洋洲计算机科学教学质量
4圣保罗大学L1南美艺术学生满意度
5约翰内斯堡大学L1非洲法律毕业生就业率
6麦吉尔大学L1北美教育校友网络
7伦敦政治经济学院L1欧洲经济学国际化程度
8东京大学L1亚洲社会科学研究生录取率
9澳大利亚国立大学L1大洋洲环境科学科研经费
10斯坦福大学L1北美工程研究成果
11剑桥大学L1欧洲医学教学质量
12清华大学L1亚洲商学校友网络
13墨尔本大学L1大洋洲计算机科学学术声誉
14圣保罗国立大学L1南美艺术学生满意度
15约翰内斯堡大学L1非洲法律国际影响力
16麦吉尔大学L1北美教育毕业生就业率
17伦敦政治经济学院L1欧洲经济学科研产出
18东京大学L1亚洲社会科学国际化程度
19澳大利亚国立大学L2大洋洲环境科学研究生录取率
20加州理工学院L2北美工程学术声誉
21巴黎高等师范学院L2欧洲医学科研产出
22香港大学L2亚洲商学国际影响力
23奥克兰大学L2大洋洲计算机科学教学质量
24里约热内卢大学L2南美艺术学生满意度
25约翰内斯堡大学L2非洲法律毕业生就业率
26约翰内斯堡大学L2非洲工程研究成果
27麦吉尔大学L2北美医学教学质量
28伦敦政治经济学院L2欧洲社会科学国际化程度
29东京大学L2亚洲艺术学生满意度
30澳大利亚国立大学L2大洋洲法律毕业生就业率
31斯坦福大学L2北美经济学校友网络
32剑桥大学L2欧洲工程科研产出
33清华大学L2亚洲医学学术声誉
34墨尔本大学L2大洋洲商学教学质量
35圣保罗国立大学L2南美计算机科学研究生录取率
36约翰内斯堡大学L2非洲环境科学学术声誉
37麦吉尔大学L2北美艺术学生满意度
38伦敦政治经济学院L2欧洲法律国际影响力
39东京大学L3亚洲教育毕业生就业率

3. 结束语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/61253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

tinkerCAD案例:31. 3D 基元形状简介

tinkerCAD案例&#xff1a;31. 3D 基元形状简介 1 将一个想法从头脑带到现实世界是一次令人兴奋的冒险。在 Tinkercad 中&#xff0c;这将从一个新的设计开始。 在新设计中&#xff0c;简单的原始形状可以通过不同的方式组合成更复杂的形状。 在这个项目中&#xff0c;你将探索…

网络安全设备及部署

什么是等保定级&#xff1f; 之前了解了下等保定级&#xff0c;接下里做更加深入的探讨 文章目录 一、网路安全大事件1.1 震网病毒1.2 海康威视弱口令1.3 物联网Mirai病毒1.4 专网 黑天安 事件1.5 乌克兰停电1.6 委内瑞拉电网1.7 棱镜门事件1.8 熊猫烧香 二、法律法规解读三、安…

C语言基础知识点一

C语言基础知识点一&#xff1a; 1.数据类型 2.bool类型&#xff1a; 使用bool时时&#xff0c;需要增加<stdbool.h>头文件。 说明&#xff1a;bool 类型只有非零&#xff08;true&#xff09;和零&#xff08;false&#xff09;两种值。 如: if&#xff08;-1&#xf…

【供电并接电路】2021-12-31

缘由在实际应用中mos管的导通问题 - 电路设计论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛!MOS管实际应用中的开通问题-硬件开发-CSDN问答 设计的思想是&#xff0c;当CH_5.2V有5.2V电压时&#xff0c;Q7导通&#xff0c;Q6产生UGS​压差&#xff0c;从而使Q6导通&#xff0c…

SpringBoot+AOP+Redission实战分布式锁

文章目录 前言一、Redission是什么&#xff1f;二、使用场景三、代码实战1.项目结构2.类图3.maven依赖4.yml5.config6.annotation7.aop8.model9.service 四、单元测试总结 前言 在集群环境下非单体应用存在的问题&#xff1a;JVM锁只能控制本地资源的访问&#xff0c;无法控制…

Python中的PDF文本提取:使用fitz和wxPython库(带进度条)

引言&#xff1a; 处理大量PDF文档的文本提取任务可能是一项繁琐的工作。本文将介绍一个使用Python编写的工具&#xff0c;可通过简单的操作一键提取大量PDF文档中的文本内容&#xff0c;极大地提高工作效率。 import wx import pathlib import fitzclass PDFExtractor(wx.Fr…

2.运行Python

在完成上一篇的环境安装后,本篇文章我们运行python及简单的命令使用 在安装之后我们可以在最近安装的程序中点击快捷方式启动python 第一种方式 python自带的开发环境 双击安装好后的应用程序 第二种方式 命令行 将print(“hello word”) 写入到文件,文件后缀名以.py结…

Windows环境下VSCode安装PlatformIO Cero报错ERROR: HTTP error 403 while getting

安装PlatformIO插件成功&#xff0c;初始化失败 错误信息判断问题尝试访问https://pypi.tuna.tsinghua.edu.cn/simple/platformio/成功点击文件后报错如下&#xff1a; 解决问题- 换源 &#xff08; Windows下有两个地方需要更改&#xff09;cmd命令行Pip文件 总结&#xff1a;…

Android Gradle 骚操作,将两个项目合并到一个项目中

1. 前言 在工作中&#xff0c;由于各种原因&#xff0c;导致需要将两个可单独运行的App项目&#xff0c;合并到一个git仓库里&#xff0c;且单独的App项目里还有其他Module模块。 如果只是将两个项目复制到同一个文件夹下&#xff0c;还是得单独打开各个项目&#xff0c;是很不…

python自动化运维常用模块,python自动化运维项目

大家好&#xff0c;本文将围绕python自动化运维需要掌握的技能展开说明&#xff0c;python自动化运维快速入门 pdf是一个很多人都想弄明白的事情&#xff0c;想搞清楚python自动化运维常用模块需要先了解以下几个事情。 这篇文章主要介绍了一个有趣的事情&#xff0c;具有一定借…

b 树和 b+树的理解

项目场景&#xff1a; 图灵奖获得者&#xff08;Niklaus Wirth &#xff09;说过&#xff1a; 程序 数据结构 算法&#xff0c; 也就说我们无时无刻 都在和数据结构打交道。 只是作为 Java 开发&#xff0c;由于技术体系的成熟度较高&#xff0c;使得大部分人认为&#xff1…

英特尔傲腾CAS报错unknown error cache acceleration software could not start cache

英特尔傲腾CAS报错unknown error cache acceleration software could not start cache 文章目录 英特尔傲腾CAS报错unknown error cache acceleration software could not start cache我是怎么遇到这个问题的我是如何解决的实验步骤打Primo Cache蓝屏补丁拔掉原来的系统盘开关机…

WSL2安装CentOS7和CentOS8

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载ZIP包&#xff1f;二、安装1.打开Windows子系统支持2.安装到指定位置3.管理虚拟机4.配置虚拟机1.配置国内源2.安装软件3.安装第三方源 5.配置用户1.创建…

嵌入式开发学习(STC51-12-I2C/IIC)

内容 在数码管右3位显示数字&#xff0c;从0开始&#xff0c;按K1键将数据写入到EEPROM内保存&#xff0c;按K2键读取EEPROM内保存的数据&#xff0c;按K3键显示数据加1&#xff0c;按K4键显示数据清零&#xff0c;最大能写入的数据是255&#xff1b; I2C介绍 I2C简介 I2C&…

windows下的txt文档,传到ubuntu后,每行后面出现^M,怎么处理?

问题背景&#xff1a;windows下pycharm生成的txt文档&#xff0c;传到ubuntu后&#xff0c;每行后面出现^M 用vim打开显示 使用cat -A filename显示如下 参考https://www.lmlphp.com/user/16697/article/item/579325/给出的几种方法 方法一、dos2unix filename。服务器没装…

esp32c3 xiao 脚本记录

oled显示网络时间, wifi链接网络 // ntp_get_date.h #include "time.h"String week[8] {"Sun", "Mon", "Tues", "Wednes", "Thur", "Fri", "Sat" };void printLocalTime(Adafruit_SSD1306 …

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(二)前后端实现用户的登录和注册功能【用户模块】

网页版Java五子棋项目&#xff08;二&#xff09;前后端实现用户的登录和注册功能【用户模块】 在用户模块我们要清楚要完成的任务一、MyBatis后端操作数据库1. 需要在数据库创建用户数据库1. 用户id2. 用户名3. 密码4. 天梯积分5. 总场数6. 获胜场数 2. 创建用户类User和数据库…

vue2-vue项目中你是如何解决跨域的?

1、跨域是什么&#xff1f; 跨域本质是浏览器基于同源策略的一种安全手段。 同源策略&#xff08;sameoriginpolicy&#xff09;&#xff0c;是一种约定&#xff0c;它是浏览器最核心也是最基本的安全功能。 所谓同源&#xff08;即指在同一个域&#xff09;具有以下三个相同点…

【分布式系统】聊聊服务调度

什么是服务治理 对于程序员来说的话&#xff0c;把功能按照一定的设计进行开发上线之后&#xff0c;其实并不够&#xff0c;在未来的时间内&#xff0c;其实还需要做好功能的维护工作&#xff0c;而维护项目的成本远远高于开发出一个软件的成本。 对于功能开发起来期来说&am…

2021-03-03 Multisim 14.0 电池充电防止反接保护

R2R3当作充电线电阻看,也可设置这2个电阻导线电阻,电阻取值依据充电电流范围确定,由于电池存在电压因此可以用光耦检测,发光二极管当作继电器看,可采用继电器自锁,当下次再次反接的话另一个继电器同样,2个继电器相互控制.本电路可验证极性变化时2路检测的变化,图中S1为模拟电池…