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 arg1
        return 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 + arg1
    else:
        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['价格'] + arg1
        return s
    else:
        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对象中的每个值, 都执行自定义函数, 且该自定义函数只能接收每个值作为参数, 不能接收其他自定义参数

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

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

相关文章

Java采取擦除式泛型到底兼容了什么场景?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 Java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;Java擦除式泛型是一个妥协,…

数据+AI 打造企业的“金山银山”

今日之世界&#xff0c;数据是生产资料&#xff0c;而人工智能&#xff08;AI&#xff09;是生产工具&#xff0c;它们的结合&#xff0c;带来的是业务的增长、新质生产力的提升&#xff0c;就是金山银山。 创新是源动力 凡是到过浙江省安吉县余村的人&#xff0c;应该都会被它…

2024年AI大模型训练数据白皮书作用

2024年AI大模型训练数据白皮书 在人工智能迅猛发展的今天&#xff0c;AI大模型的训练数据质量和管理成为影响其性能和应用效果的关键因素。《2024年AI大模型训练数据白皮书》为业内人士提供了一份详尽的指南&#xff0c;揭示了当前AI大模型训练数据的最新趋势、最佳实践以及未…

Steam游戏如何选择适合的服务器

在Steam平台上&#xff0c;玩家可以享受到来自世界各地开发者的游戏作品。然而&#xff0c;要获得最佳的游戏体验&#xff0c;选择合适的服务器至关重要。本文将从网络延迟、服务器位置、游戏类型和个人偏好等多个方面&#xff0c;为玩家提供选择Steam游戏服务器的实用指南。 如…

【核心动画-转场动画-CATransition Objective-C语言】

一、转场动画,CATransition, 1.接下来,我们来说这个转场动画啊,效果呢,会做这么一个小例子, 感觉有一个3D的一个样式一样, 转场动画呢,就是说,你在同一个View,比如说,imageView,去切换图片的时候,你可以去用这个,转场动画, 实际上,包括,控制器之间的切换,也…

【Flask开发实战】首页模板

一、前言 前面我们已经完成登录页面的设定&#xff0c;登录后临时调转到“hello flask”的界面。现在我们根据实际首页的设计需要&#xff0c;来完成首页相关内容的开发。一般系统首页会放一些分析数据&#xff0c;多以图表的方式展示&#xff0c;方便使用者了解信息。以防火墙…

【Vscode配置java环境并配置stringboot】

1.VSCODE配置JAVA环境 参考这篇文章配置JAVA环境&#xff1a;连接 java版本&#xff0c;我是win11系统,我下载的JAVA安装版本是下面&#xff0c;是最新版的&#xff1a; 配置环境&#xff1a;步骤很简单&#xff0c;就是向系统环境变量中添加路径&#xff0c;参考上面文章中的…

类和对象(二)(C++)

初始化列表 class Date{public:Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day;}; 虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量的初始化…

PCL 生成空间椭圆点云

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 设椭圆在 X O Y XOY XOY平面上,参数方程为:

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 目录 Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 一、简单介绍 二、轮船人员获救预测实战 三、数据处理 1、导入数据 2、对缺失数据的列进行填充 3、属性转换&#xff0c;把某些列的字符串值…

炫技来了!使用SDR设备成功抓到蓝牙air packet, 并且wireshark实时解析, 没错就是蓝牙空口抓包器

本文章主要介绍是用ZYNQ7020AD9361Gnu radio是搭建一个蓝牙抓包器的文章。 由于之前一直做蓝牙Host&#xff0c;对controller觉得是一个比较虚无缥缈的东西&#xff0c;得不到的总是在骚动&#xff0c;所以最近用我用吃灰了2年的SDR(Software Defined Radio&#xff09;设备研…

警务反诈RPA:利用机器人流程自动化技术打击诈骗行为

信息时代&#xff0c;网络技术快速发展&#xff0c;在丰富生活的同时&#xff0c;也带来了持续高发的电信网络诈骗问题&#xff0c;对社会造成了严重威胁。面对海量的数据信息&#xff0c;传统数据融合技术的瓶颈不断显现&#xff0c;无法满足风险防控、打击诈骗的效率要求&…

【刷题篇】分治-归并排序

文章目录 1、排序数组2、交易逆序对的总数3、计算右侧小于当前元素的个数4、翻转对 1、排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 class Solution { public:vector<int> tmp;void mergeSort(vector<int>& nums,int left,int right){…

【漏洞复现】多客圈子论坛系统 httpGet 任意文件读取漏洞

0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…

TensorRT 精度debug分析工具

tensorRT还提供了一套可用于engine生成过程中debug的工具&#xff0c;包括Polygraphy、ONNX GraphSurgeon和PyTorch-Quantization。这些小工具用处很大&#xff0c;值得花时间进一步研究。 Debug方法示例 polygraphy Polygraphy是TensorRT官方提供的一系列小工具合集&#x…

非递归实现组合型枚举、费解的开关(贪心)

非递归实现组合型枚举 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include <iostream> #include <vector> using namespace std; void FN(int n, int m, vector<int>& s, int start) {if (s.size() m) {for (int num : s) {cout <&…

SM481,SM432和利时DCS备件

SM481,SM432和利时DCS备件。POU名只能包含字母、数字、下划线&#xff0c;第一个字符必须是字母或者下划线&#xff0c;且遵循以下原则&#xff1a;SM481,SM432和利时DCS备件。关于重名&#xff0c;不能与变量名、变量组名、POU文件夹名、任务名、SM481,SM432和利时DCS备件。工…

算法类学习笔记 —— 典型卷积神经网络

文章目录 介绍LetNet填充&步长&通道数填充步长通道数卷积层池化层全连接层激活函数常见的激活函数Sigmoid函数tanh函数ReLU激活函数LReLUPReLUSwish softmax分类 AlexNetVGGNetGoogleNetResNetDenseNetSENet 介绍 现有的卷积神经网络的结构可以按照下图机型分类&#x…

项目3:从0开始的RPC框架(扩展版)

一. 全局配置加载 1. 需求分析 通常情况下&#xff0c;在RPC框架运行的会涉及到多种配置信息&#xff0c;比如注册中心的地址、序列化方式、网络服务端接口号等。 在简易版框架中&#xff0c;硬编码了这些配置&#xff0c;也就是都写死了&#xff0c;在真实的应用环境中是不…

Halcon 双相机标定与拼图(二)

一、概述 这种标定有两种模式&#xff0c;有一个标定板和多个标定板两种 一个标定板 两个相机的重叠区域比较大&#xff0c;那么我们可以把标定板放到那个重叠区域来统一坐标系&#xff0c;如下 这种是只需要一个标定板&#xff0c;这种是推荐的方式 。这种是比较简单的&…