python -- series和 DataFrame增删改数据

学习目标

  • 知道df添加新列的操作

  • 知道insert函数插入列数据

  • 知道drop函数删除df的行或列数据

  • 知道drop_duplicates函数对df或series进行数据去重

  • 知道unique函数对series进行数据去重

  • 知道apply函数的使用方法

1 DataFrame添加列

注意:本文用到的数据集在文章顶部

1.1 直接赋值添加列数据

通过 df[列名]=新值df[列名]=series对象/list对象 添加新的一列, 新列添加到df的最后

  • 添加列名为 城市 的一列, 值都为北京

    import pandas as pd
    ​
    # 加载数据集
    df = pd.read_csv('../data/LJdata.csv')
    ​
    # 获取前5条数据并复制一份
    temp_df = df.head().copy()
    ​
    # 添加一列数据都是固定值
    temp_df['省份'] = '北京'
    print(temp_df)
    ​
    # 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数  城市
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26  北京
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33  北京
    2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34  北京
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30  北京
    4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30  北京

  • 添加列名为 区县 的一列, 值分别是 朝阳区、朝阳区、西城区、昌平区、朝阳区

    # 列表的数据数量必须和df的行数相等
    temp_df['区县'] = ['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区']
    print(temp_df)
    ​
    # 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数  省份    区县
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26  北京  朝阳区
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33  北京  朝阳区
    2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34  北京  西城区
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30  北京  昌平区
    4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30  北京  朝阳区

  • 添加列名为 新价格 的一列, 值比原价格列的值多1000元

    # 新增数据为series对象
    # print(temp_df['价格'] + 1000)
    temp_df['新价格'] = temp_df['价格'] + 1000
    print(temp_df)
    ​
    # 输出结果如下区域          地址    户型  面积  价格  ...    更新时间 看房人数  省份    区县 新价格
    0    燕莎租房        新源街  2室1厅    50  5800  ...  2017.07.21       26  北京  朝阳区   6800
    1    望京租房      澳洲康都  2室1厅    79  7800  ...  2017.07.23       33  北京  朝阳区   8800
    2  广安门租房      远见名苑  2室1厅    86  8000  ...  2017.07.20       34  北京  西城区   9000
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  ...  2017.07.25       30  北京  昌平区   6300
    4  团结湖租房    团结湖北口  2室1厅    63  6400  ...  2017.07.26       30  北京  朝阳区   7400

1.2 insert函数添加列数据

通过 df.insert(loc=,column=,value=) 方法在指定位置添加列

loc: 指定列位置下标数字

column: 添加列的列名

value: 添加列的所有值, series对象、列表对象、常数等

  • 在区域列后添加列名为 城市 的一列, 值都为北京

    # 获取前5条数据
    new_df = df.head().copy()
    print(new_df)
    new_df.insert(loc=1, column='城市', value='北京')
    print(new_df)
    ​
    # 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30区域  城市          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房  北京        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房  北京      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  广安门租房  北京      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3  天通苑租房  北京  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  团结湖租房  北京    团结湖北口  2室1厅    63  6400    南  2017.07.26        30

  • 在城市列后添加列名为 区县 的一列, 值分别是 朝阳区、朝阳区、西城区、昌平区、朝阳区

    new_df.insert(loc=2, column='区县', value=['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'])
    print(new_df)
    ​
    # 输出结果如下区域  城市    区县          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房  北京  朝阳区        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房  北京  朝阳区      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  广安门租房  北京  西城区      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3  天通苑租房  北京  昌平区  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  团结湖租房  北京  朝阳区    团结湖北口  2室1厅    63  6400    南  2017.07.26        30

  • 在价格列后添加列名为 新价格 的一列, 值比原价格列的值多1000元

    pd.set_option('display.max_columns', None)  # 展示所有列
    pd.set_option('display.width', None)  # 不换行显示
    new_df.insert(loc=7, column='新价格', value=new_df['价格'] + 1000)
    print(new_df)
    ​
    # 输出结果如下区域  城市    区县          地址    户型  面积  价格  新价格  朝向    更新时间  看房人数
    0    燕莎租房  北京  朝阳区        新源街  2室1厅    50  5800    6800    南  2017.07.21        26
    1    望京租房  北京  朝阳区      澳洲康都  2室1厅    79  7800    8800    东  2017.07.23        33
    2  广安门租房  北京  西城区      远见名苑  2室1厅    86  8000    9000    东  2017.07.20        34
    3  天通苑租房  北京  昌平区  天通苑北一区  2室1厅   103  5300    6300  东南  2017.07.25        30
    4  团结湖租房  北京  朝阳区    团结湖北口  2室1厅    63  6400    7400    南  2017.07.26        30

2 DataFrame删除行列

通过 df.drop(labels=, axis=, inplace=) 方法删除行列数据

labels: 行索引值或列名列表

axis: 删除行->0或index, 删除列->1或columns, 默认0

inplace: TrueFalse, 是否在原数据上删除, 默认False

# 删除一行数据, 原df上并没有删除
print(temp_df.drop(labels=[0]))
​
# 删除多行数据, 原df上删除
temp_df.drop(labels=[0, 2, 4], axis='index', inplace=True)
print(temp_df)
​
# 删除一列数据, 原df上并没有删除
print(temp_df.drop(labels=['新价格'], axis=1))
​
# 删除多列数据, 原df上删除
temp_df.drop(labels=['新价格', '区县', '省份'], axis='columns', inplace=True)
print(temp_df)
​
# 输出结果如下区域          地址    户型  面积  价格  ...    更新时间 看房人数  省份    区县 新价格
1    望京租房      澳洲康都  2室1厅    79  7800  ...  2017.07.23       33  北京  朝阳区   8800
2  广安门租房      远见名苑  2室1厅    86  8000  ...  2017.07.20       34  北京  西城区   9000
3  天通苑租房  天通苑北一区  2室1厅   103  5300  ...  2017.07.25       30  北京  昌平区   6300
4  团结湖租房    团结湖北口  2室1厅    63  6400  ...  2017.07.26       30  北京  朝阳区   7400
​
[4 rows x 11 columns]区域          地址    户型  面积  价格  ...    更新时间 看房人数  省份    区县 新价格
1    望京租房      澳洲康都  2室1厅    79  7800  ...  2017.07.23       33  北京  朝阳区   8800
3  天通苑租房  天通苑北一区  2室1厅   103  5300  ...  2017.07.25       30  北京  昌平区   6300
​
[2 rows x 11 columns]区域          地址    户型  面积  价格  朝向    更新时间  看房人数  省份    区县
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33  北京  朝阳区
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30  北京  昌平区区域          地址    户型  面积  价格  朝向    更新时间  看房人数
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30

3 Series或DataFrame数据去重

通过 <s/df>.drop_duplicates(subset=,keep=,inplace=) 方法对数据去重

subset: df的参数, 传入列名列表, 对指定列进行去重, 不写此参数默认对所有列进行去重

keep: 保留哪条重复数据, first->保留第一条, last->保留最后一条, False->都不保留, 默认first

inplace: TrueFalse, 是否在原数据上去重, 默认False

  • DataFrame数据去重 duplicates

    temp_df = df.head().copy()
    ​
    # 对df所有列去重, 当前df没有重复的行数据
    print(temp_df.drop_duplicates())
    # 根据指定列对df去重, 默认保留第一条数据
    # 第1行和第5行、第2行和第3行重复
    print(temp_df.drop_duplicates(subset=['户型', '朝向']))
    # 保留最后一条数据
    # print(temp_df.drop_duplicates(subset=['户型', '朝向'], keep='last'))
    # 重复数据都不保留
    # print(temp_df.drop_duplicates(subset=['户型', '朝向'], keep=False))
    ​
    # 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30

  • Series数据去重

    print('-------------去重之后返回Series对象--------------------')
    # 默认保留第一条数据
    print(temp_df['朝向'].drop_duplicates())
    # 保留最后一条数据
    print(temp_df['朝向'].drop_duplicates(keep='last'))
    # 重复数据都不保留
    print(temp_df['朝向'].drop_duplicates(keep=False))
    ​
    print('-------------去重之后返回数组--------------------')
    # series对象还可以使用unique函数去重, 返回ndarray数组
    print(temp_df['朝向'].unique())
    # nunique函数实现去重计数操作, 类似 count(distinct)
    print(temp_df['朝向'].nunique())
    ​
    # 输出结果如下
    0      南
    1      东
    3    东南
    Name: 朝向, dtype: object
    2      东
    3    东南
    4      南
    Name: 朝向, dtype: object
    3    东南
    Name: 朝向, dtype: object
    ['南' '东' '东南']
    3

4 Series或DataFrame数据修改

4.1 直接修改数据

通过 df[列名]=新值s[行索引]=新值 修改数据

# 获取前5条数据并复制一份
temp_df = df.head().copy()
​
# 获取价格列, 得到series对象, 复制一份数据
s1 = temp_df['价格'].copy()
print(s1)
​
# series修改数据
s1[0] = 7000
print(s1)
​
# dataframe修改数据, 列表数据数量要和行数相等
temp_df['价格'] = [6800, 8800, 9000, 6300, 6400]
print(temp_df)
​
# 输出结果如下
0    5800
1    7800
2    8000
3    5300
4    6400
Name: 价格, dtype: int64
0    7000
1    7800
2    8000
3    5300
4    6400
Name: 价格, dtype: int64区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  6800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  8800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  9000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  6300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30

4.2 replace函数替换数据

通过 <s/df>.replace(to_replace=, value=, inplace=) 方法替换数据

to_replace: 需要替换的数据

value: 替换后的数据

inplace: TrueFalse, 是否在原数据上替换, 默认False

# 获取前5条数据并复制一份
temp_df = df.head().copy()
​
# 替换series的数据
print(temp_df['价格'].replace(to_replace=5300, value=6000))
​
temp_df['朝向'].replace('东南', '西', inplace=True)
print(temp_df)
​
# 替换dataframe的数据
print(temp_df.replace(to_replace='2室1厅', value='3室2厅'))
​
# 输出结果如下
0    5800
1    7800
2    8000
3    6000
4    6400
Name: 价格, dtype: int64区域          地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800   南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800   东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000   东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300   西  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400   南  2017.07.26        30区域          地址    户型  面积  价格 朝向    更新时间  看房人数
0    燕莎租房        新源街  3室2厅    50  5800   南  2017.07.21        26
1    望京租房      澳洲康都  3室2厅    79  7800   东  2017.07.23        33
2  广安门租房      远见名苑  3室2厅    86  8000   东  2017.07.20        34
3  天通苑租房  天通苑北一区  3室2厅   103  5300   西  2017.07.25        30
4  团结湖租房    团结湖北口  3室2厅    63  6400   南  2017.07.26        30

4.3执行自定义函数修改数据

有时需要我们对df或s对象中的数据做更加精细化的修改动作,并将修改操作封装成为一个自定义的函数;这时我们就可以利用<s/df>.apply(函数名)来调用我们自定义的函数

s或df对象可以借助apply函数执行自定义函数, 内置函数无法处理需求时就需要使用自定义函数来处理

4.3.1s.apply()函数遍历每一个值同时执行自定义函数
  • Series对象使用apply调用自定义的函数,返回新的Series对象

    # 加载数据集
    df = pd.read_csv('../data/LJdata.csv')
    # 获取前5条数据并复制一份
    temp_df = df.head().copy()
    ​
    ​
    # 自定义函数, 最少接收一个参数
    def func(x):# x此时是s对象中一个数据值:燕莎租房、望京租房print('x的值是->', x)# 本自定义函数返回的也是一个数据if x == '天通苑租房':return '昌平区'return x
    ​
    ​
    temp_df['区域'] = temp_df['区域'].apply(func)
    print(temp_df)
    ​
    # 输出结果如下
    x的值是-> 燕莎租房
    x的值是-> 望京租房
    x的值是-> 广安门租房
    x的值是-> 天通苑租房
    x的值是-> 团结湖租房区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
    1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3      昌平区  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30
  • Series对象使用apply调用自定义的函数,并向自定义函数中传入其他参数

    # 获取前5条数据
    temp_df = df.head().copy()
    ​
    ​
    # 自定义函数, 最少接收一个参数
    def func(x, arg1, arg2):# x此时是s对象中一个数据print('x的值是->', x)# 本自定义函数返回的也是一个数据if x == '天通苑租房':return arg1return arg2
    ​
    ​
    # args: 传入其他参数值, 元组类型
    temp_df['区域'] = temp_df['区域'].apply(func, args=('昌平区', '其他区'))
    ​
    # apply中其他参数名和自定义函数中其他形参名相同
    # temp_df['区域'] = temp_df['区域'].apply(func1, arg1='昌平区', arg2='其他区')
    print(temp_df)
    ​
    # 输出结果如下
    x的值是-> 燕莎租房
    x的值是-> 望京租房
    x的值是-> 广安门租房
    x的值是-> 天通苑租房
    x的值是-> 团结湖租房区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0  其他区        新源街  2室1厅    50  5800    南  2017.07.21        26
    1  其他区      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
    2  其他区      远见名苑  2室1厅    86  8000    东  2017.07.20        34
    3  昌平区  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
    4  其他区    团结湖北口  2室1厅    63  6400    南  2017.07.26        30

4.3.2 df.apply()函数遍历每一行/列同时执行自定义函数
# 获取前5条数据
temp_df = df.head().copy()
print(temp_df)
​
​
def func1(s, arg1):# 此时s参数就是df中的一列数据, s对象# print('s的值是->', s)# print('s的类型是->', type(s))# 本自定义函数也必须返回一列数据, s对象# print(s.__dict__)if s._name == '价格':return s + arg1else:return s
​
# 默认遍历df每列, axis=0
print(temp_df.apply(func1, args=(1000,), axis=0))
​
​
def func2(s, arg1):# 此时s参数就是df中的一行数据, s对象# print('s的值是->', s)# print('s的类型是->', type(s))# 本自定义函数也必须返回一列数据, s对象# print(s.__dict__)if s['区域'] == '天通苑租房':# 修改价格对应的值s['价格'] = s['价格'] + arg1return selse:return s
​
​
​
# 遍历df每行, axis=1
print(temp_df.apply(func2, arg1=1000, axis=1))
​
# 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  6800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  8800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  9000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  6300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  7400    南  2017.07.26        30区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  6300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30
4.3.3 df.applymap()函数遍历每一个值同时执行自定义函数
# 获取前5条数据
temp_df = df.head().copy()
print(temp_df)
​
​
# 自定义函数只能接收一个参数
def func(x):# 此时x参数就是df中的每个数据# print('x的值是->', x)# 本自定义函数也必须返回一个数据if x == '2室1厅':return '3室2厅'else:return x
​
​
print(temp_df.applymap(func))
​
# 输出结果如下区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30区域          地址    户型  面积  价格  朝向    更新时间  看房人数
0    燕莎租房        新源街  3室2厅    50  5800    南  2017.07.21        26
1    望京租房      澳洲康都  3室2厅    79  7800    东  2017.07.23        33
2  广安门租房      远见名苑  3室2厅    86  8000    东  2017.07.20        34
3  天通苑租房  天通苑北一区  3室2厅   103  5300  东南  2017.07.25        30
4  团结湖租房    团结湖北口  3室2厅    63  6400    南  2017.07.26        30

总结

请对下列API 有印象、能找到、能理解、能看懂

  • df['列名'] = 标量或向量 修改或添加列

  • df.insert(列下标数字, 列名, 该列所有值) 指定位置添加列

  • <df/s>.drop([索引值1, 索引值2, ...]) 根据索引删除行数据

  • df.drop([列名1, 列名2, ...], axis=1) 根据列名删除列数据

  • <df/s>.drop_duplicates() df或s对象去除重复的行数据

  • s.unique() s对象去除重复的数据

  • <df/s>.replace('原数据', '新数据', inplace=True) 替换数据

    • df或series对象替换数据,返回的还是原来相同类型的对象,不会对原来的df造成修改

    • 如果加上inplace=True参数,则会修改原始df

  • apply函数

    • s.apply(自定义函数名, arg1=xx, ...) 对s对象中的每一个值,都执行自定义函数,且该自定义函数除了固定接收每一个值作为第一参数以外,还可以接收其他自定义参数

    • df.apply(自定义函数名, arg1=xx, ...) 对df对象中的每一列,都执行自定义函数,且该自定义函数除了固定接收列对象作为第一参数以外,还可以接收其他自定义参数

    • df.apply(自定义函数名, arg1=xx, ..., axis=1) 对df对象中的每一,都执行自定义函数,且该自定义函数除了固定接收行对象作为第一参数以外,还可以接收其他自定义参数

  • applymap函数

    • df.applymap(自定义函数名) 对df对象中的每个值, 都执行自定义函数, 且该自定义函数只能接收每个值作为参数, 不能接收其他自定义参数

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 map

组件 地图个性化样式组件是腾讯位置服务为开发者提供的地图高级能力&#xff0c;开发者可以在法律允许的范围内定制地图风格&#xff0c;支持定制背景面、背景线、道路、POI等地图元素颜色、显示层级等内容&#xff1b;支持按照类型精细化管理POI的显示、隐藏&#xff1b;灵活…

JMS VS AMQP

JMS&#xff08;Java Message Service&#xff09;是一个为Java平台设计的API&#xff0c;主要针对Java开发者提供了一套用于企业级消息服务的标准接口。而AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;是一个应用层协议&#xff0c;它提供了一个开放的、标准…

BUG解决: Zotero 文献GBT7714无法正常调用

1. 下载csl文件 网上有推荐直接下载现成版本的&#xff0c;比如参考资料【1】的蓝奏云文件&#xff0c;但是还是无法实现功能&#xff08;空文档中可以用了&#xff09;。 2. Github版本 也有说网盘版本和那个 Juris-M 的 CSL bug 太多的。 总结 后面发现&#xff0c;只需…

带池化注意力 Strip Pooling | Rethinking Spatial Pooling for Scene Parsing

论文地址:https://arxiv.org/abs/2003.13328 代码地址:https://github.com/houqb/SPNet 空间池化已被证明在捕获像素级预测任务的长距离上下文信息方面非常有效,如场景解析。在本文中,我们超越了通常具有N N规则形状的常规空间池化,重新思考空间池化的构成,引入了一种…

对比深度图聚类的硬样本感知网络

Hard Sample Aware Network for Contrastive Deep Graph Clustering 文章目录 Hard Sample Aware Network for Contrastive Deep Graph Clustering摘要引言方法实验结论启发点 摘要 本文提出了一种名为Hard Sample Aware Network (HSAN)的新方法&#xff0c;用于对比深度图聚类…

Git+Gitlab 远程库测试学习

Git远程仓库 1、Git远程仓库 何搭建Git远程仓库呢&#xff1f;我们可以借助互联网上提供的一些代码托管服务来实现 Gitee 码云是国内的一个代码托管平台&#xff0c;由于服务器在国内&#xff0c;所以相比于GitHub&#xff0c;码云速度会更快 码云 Gitee - 基于 Git 的代码托…

Python实现连连看9

&#xff08;2&#xff09;标识选中的图片 在判断出玩家选中的是哪一张图片之后&#xff0c;接下来就可以标识选中的图片了&#xff0c;即在该选中的图片外围画矩形。代码如下所示。 FIRSTCLICK True #FIRSTCLICK是全局变量 if(click_col>0 and click_row>0) and \(no…

【进程调度的基本过程】初步认识进程和线程的区别与联系:计算机是如何工作的

​ &#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f43a;一.冯诺依曼体系结构 认识计算机的祖师爷 -- 冯诺依曼 冯诺依曼&#xff08;John von Neumann&#xff0c;1903年12⽉28⽇-1957年2⽉8⽇&…

调用华为API实现语音合成

目录 1.作者介绍2.华为云语音合成2.1 语音合成介绍2.2 华为语音合成服务2.3 应用场景 3. 实验过程以及结果3.1 获取API密钥3.2 调用语音合成算法API3.3 实验代码3.4 运行结果 1.作者介绍 袁斌&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2023级研究生 研究…

SpringBoot整合Skywalking

下载Java Agent 官网&#xff1a;https://skywalking.apache.org/downloads/ 提示&#xff1a;Agent最好到网上找一找之前的版本&#xff0c;新版本可能有bug&#xff0c;如果出现了并且网上也几乎没有这个版本的解决方法那么就切换之前的版本 本地启动时 -javaagent:d:\opt\…

建筑特种工高处作业吊篮安装拆卸工题库

1、施工现场外租吊篮设备&#xff0c;在施工前应由( )编制专项施工方案&#xff0c;并由( )技术负责人和现场总监理工程师签字后实行。 A 使用单位 使用单位 B 使用单位 租赁单位 C 租赁单位 使用单位 D 租赁单位 租赁单位 2、施工现场外租吊篮…

java基础语法整理 ----- 上

java基础语法 一、变量二、数据类型三、标识符四、键盘录入五、判断语句1. 三种格式2. 练习题 六、switch语句七、循环八、循环控制语句九、方法 一、变量 1.什么是变量&#xff1a; 在程序运行过程中&#xff0c;其值可以发生改变的量从本质上讲&#xff0c;变量是内存中的一…

MineAdmin 前端打包后,访问速度慢原因及优化

前言&#xff1a;打包mineadmin-vue前端后&#xff0c;访问速度很慢&#xff0c;打开控制台&#xff0c;发现有一个index-xxx.js文件达7M&#xff0c;加载时间太长&#xff1b; 优化&#xff1a; 一&#xff1a;使用文件压缩&#xff08;gzip压缩&#xff09; 1、安装compre…

java基础练习题

1、一个".java"源文件中是否可以包括多个类&#xff1f;有什么限制&#xff1f; 可以包含多个类。但是只有一个类可以声明为public&#xff0c;且要求声明为public的类的类名与源文件名相同。 2、java的优势&#xff1f; a、跨平台性 b、安全性高 c、简单性 d、…

无延迟,持续畅玩 - Wi-Fi 6 助力打造游戏厅极致体验

1、需求背景&#xff1a; 连锁游戏厅行业竞争激烈&#xff0c;顾客对高品质的游戏体验有着高要求。网络是游戏厅的核心基础设施之一&#xff0c;需要确保游戏过程中的网络连接稳定性和顾客满意度。 长时间稳定连接 为保证顾客的游戏体验感&#xff0c;游戏厅要确保网络连接长…

使用 CloudFlare Turnstile 解决跨境电商站的垃圾邮件侵扰

最近明月一个跨境电商代维客户的网站被垃圾邮件侵扰了,从最开始的每天几封疯狂到每天几百上千封垃圾邮件,几乎所有可拦截屏蔽的关键词都是随机可变的,简单的邮件客户端拦截基本已经没有任何效果了,在收到用户的求助后经过分析发现主要是利用网站在线咨询页面里的邮件发送造…

SMS-GSM

SMS-GSM 短信模块&#xff0c;不想通过第三方的接口&#xff0c;自己搭建短信模块&#xff0c;提高信息安全。 /**/ package sms;import com.diagcn.smslib.CMessage; import com.diagcn.smslib.COutgoingMessage; import com.diagcn.smslib.SZHTOCService;/*** 短信模块** au…

汇编:头文件

汇编头文件&#xff08;header files&#xff09;在汇编语言编程中类似于高层语言中的头文件&#xff0c;它们通常包含宏定义、常量定义、数据结构定义、函数声明以及其他在多个汇编源文件中共享的代码&#xff1b;使用头文件可以提高代码的可维护性和可读性&#xff0c;并使代…

【全开源】云调查考试问卷系统(FastAdmin+ThinkPHP+Uniapp)

便捷、高效的在线调研与考试新选择​ 云调查考试问卷是一款基于FastAdminThinkPHPUniapp开发的问卷调查考试软件&#xff0c;可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置&#xff0c;同时支持系统模板问卷&#xff…

linux内存缓存占用过高分析和优化

1、什么是buffer/cache &#xff1f; buffer/cache其实是作为服务器系统的文件数据缓存使用的&#xff0c;尤其是针对进程对文件存在read/write操作的时候&#xff0c;所以当你的服务进程在对文件进行读写的时候&#xff0c;Linux内核为了提高服务的读写速度&#xff0c;则将会…