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

Python库学习(十二):数据分析Pandas[下篇]

接着上篇《Python库学习(十一):数据分析Pandas[上篇]》,继续学习Pandas

1.数据过滤

在数据处理中,我们经常会对数据进行过滤,为此Pandas中提供mask()where()两个函数;

  • mask(): 在 满足条件的情况下替换数据,而不满足条件的部分则保留原始数据;
  • where(): 在 不满足条件的情况下替换数据,而满足条件的部分则保留原始数据;
from datetime import datetime, timedelta
import random
import pandas as pd

def getDate() -> str:
    """
    用来生成日期
    :return: 
    """

    # 随机减去天数
    tmp = datetime.now() - timedelta(days=random.randint(1100))
    # 格式化时间
    return tmp.strftime("%Y-%m-%d")

if __name__ == '__main__':
    # 准备数据 水果
    fruits = ["苹果""香蕉""橘子""榴莲""葡萄"]
    rows = 3
    today = datetime.now()
    data_dict = {
        "fruit": [random.choice(fruits) for _ in range(rows)],
        "date": [getDate() for _ in range(rows)],
        "price": [round(random.uniform(15), 2for _ in range(rows)],  # 随机生成售价,并保留两位小数
    }
    data = pd.DataFrame(data_dict)
    # 复制数据,方便后续演示
    data_tmp = data.copy()
    print("-------------- 生成数据预览 ------------------")
    print(data)
    print("-------------- 普通条件:列出价格大于3.0的水果 ------------------")
    condition = data["price"] > 3.0
    # 列出价格大于3.0的水果
    fruit_res = data[condition]["fruit"]
    print("价格大于3.0的水果:", fruit_res.to_numpy())

    print("-------------- 使用mask:把价格大于3.0设置成0元 ------------------")
    # 把价格大于3.0设置成0元
    data["price"] = data["price"].mask(data["price"] > 3.0, other=0)
    print(data)
    print("-------------- 使用where:把价格不大于3.0设置成0元 ------------------")
    # 把价格不大于3.0设置成0元
    data_tmp["price"] = data_tmp["price"].where(data_tmp["price"] > 3.0, other=0)
    print(data_tmp)
    
"""
-------------- 生成数据预览 ------------------
  fruit        date  price
0    橘子  2023-10-16   3.52
1    苹果  2023-09-08   1.07
2    葡萄  2023-09-27   2.69
-------------- 普通条件:列出价格大于3.0的水果 ------------------
价格大于3.0的水果: ['橘子']
-------------- 使用mask:把价格大于3.0设置成0元 ------------------
  fruit        date  price
0    橘子  2023-10-16   0.00
1    苹果  2023-09-08   1.07
2    葡萄  2023-09-27   2.69
-------------- 使用where:把价格不大于3.0设置成0元 ------------------
  fruit        date  price
0    橘子  2023-10-16   3.52
1    苹果  2023-09-08   0.00
2    葡萄  2023-09-27   0.00
"""
    

@注:从功能上可以看出,mask()和where()是正好两个相反的函数

2. 数据遍历

if __name__ == '__main__':
    # 数据生成参考上面
    print("-------------- 生成数据预览 ------------------")
    print(data)
    print("-------------- 遍历dataframe数据 ------------------")
    for index, row in data.iterrows():
        print("index:{} 水果:{} 日期:{} 售价:{}".format(index, row["fruit"], row["date"], row["price"]))

    print("-------------- 遍历Series数据 ------------------")
    series_data = pd.Series({"name""张三""age"20"height"185})
    for k, v in series_data.items():
        print("key:{} value:{}".format(k, v))

"""
-------------- 生成数据预览 ------------------
  fruit        date  price
0    橘子  2023-10-14   3.71
1    橘子  2023-10-03   3.74
2    香蕉  2023-09-06   1.17
3    葡萄  2023-08-30   1.16
4    榴莲  2023-10-21   1.47
-------------- 遍历dataframe数据 ------------------
index:0 水果:橘子 日期:2023-10-14 售价:3.71
index:1 水果:橘子 日期:2023-10-03 售价:3.74
index:2 水果:香蕉 日期:2023-09-06 售价:1.17
index:3 水果:葡萄 日期:2023-08-30 售价:1.16
index:4 水果:榴莲 日期:2023-10-21 售价:1.47
-------------- 遍历Series数据 ------------------
key:name value:张三
key:age value:20
key:height value:185
"""
        

3. 分层索引

分层索引(MultiIndex)是Pandas 中一种允许在一个轴上拥有多个(两个或更多)级别的索引方式。这种索引方式适用于多维数据和具有多个层次结构的数据。

3.1 使用set_index

from datetime import datetime, timedelta
import random
import pandas as pd

if __name__ == '__main__':
    # 创建一个示例 DataFrame
    fruits = ["苹果""苹果""橘子""橘子""橘子""百香果"]
    rows = len(fruits)
    today = datetime.now()
    dict_var = {
        'fruit': fruits,
        'date': [(today - timedelta(days=i)).strftime("%Y-%m-%d"for i in range(rows)],
        'price': [round(random.uniform(15), 2for _ in range(rows)],
        'num': [round(random.uniform(10500), 2for _ in range(rows)]
    }
    sale_data = pd.DataFrame(dict_var)

    # 设置多层次索引
    sale_data.set_index(['fruit''date'], inplace=True)
    print("----------------------------- 创建多层次索引-----------------------------------")
    print(sale_data)
    print("----------------------------- 打印索引信息-----------------------------------")
    index_info = sale_data.index
    print(index_info)
    print("----------------------------- 使用loc 访问多层次索引-----------------------------------")
    search_price = sale_data.loc[('苹果''2023-11-02'), 'price']
    print(search_price)
    print("----------------------------- 使用xs 访问多层次索引-----------------------------------")
    search_xs = sale_data.xs(key=('苹果''2023-11-02'), level=['fruit''date'])
    print(search_xs)
    

"""
----------------------------- 创建多层次索引-----------------------------------
                    price     num
fruit    date                     
苹果    2023-11-02   1.08  211.31
        2023-11-01   1.35  308.87
橘子    2023-10-31   3.25  180.84
        2023-10-30   2.53  115.14
        2023-10-29   2.61  146.49
百香果   2023-10-28   1.36  246.01
----------------------------- 打印索引信息-----------------------------------
MultiIndex([( '苹果', '2023-11-02'),
            ( '苹果', '2023-11-01'),
            ( '橘子', '2023-10-31'),
            ( '橘子', '2023-10-30'),
            ( '橘子', '2023-10-29'),
            ('百香果', '2023-10-28')],
           names=['fruit', 'date'])
----------------------------- 使用loc 访问多层次索引-----------------------------------
1.08
----------------------------- 使用xs 访问多层次索引-----------------------------------
                  price     num
fruit date                     
苹果    2023-11-02   1.08  211.31
"""
    

3.2 使用**MultiIndex**

if __name__ == '__main__':
    fruits = ["苹果""香蕉""橘子""榴莲""葡萄""雪花梨""百香果"]
    date_list = ['2023-03-11''2023-03-13''2023-03-15']
    cols = pd.MultiIndex.from_product([date_list, ["售卖价""成交量"]], names=["日期""水果"])
    list_var = []
    for i in range(len(fruits)):
        tmp = [
            round(random.uniform(15), 2), round(random.uniform(1100), 2),
            round(random.uniform(15), 2), round(random.uniform(1100), 2),
            round(random.uniform(15), 2), round(random.uniform(1100), 2),
        ]
        list_var.append(tmp)
    print("--------------------------------创建多层次索引--------------------------------")
    multi_data = pd.DataFrame(list_var, index=fruits, columns=cols)
    print(multi_data)
    print("--------------------------------打印多层次索引--------------------------------")
    print(multi_data.index)
    print(multi_data.columns)
    # 搜行
    print("----------------------------- 使用filter-- 行搜索-----------------------------------")
    print(multi_data.filter(like='苹果', axis=0))    
    print("----------------------------- 使用filter-- 列搜索-----------------------------------")
    # 搜列
    print(multi_data.filter(like='2023-03-11', axis=1))
    
"""
--------------------------------创建多层次索引--------------------------------
日期  2023-03-11        2023-03-13        2023-03-15       
水果         售卖价    成交量        售卖价    成交量        售卖价    成交量
苹果        2.54  69.40       3.27  18.89       1.93   3.37
香蕉        1.99  53.33       1.88  92.77       3.64  26.60
橘子        2.48  27.81       3.20   8.71       2.58  85.44
榴莲        3.15  47.89       1.09  93.15       2.51  85.30
葡萄        4.59  35.58       4.88  77.02       3.08  64.96
雪花梨       3.17   9.58       4.48  44.17       4.15  88.94
百香果       3.05   7.65       3.51  82.03       3.97  52.06
--------------------------------打印多层次索引--------------------------------
Index(['苹果', '香蕉', '橘子', '榴莲', '葡萄', '雪花梨', '百香果'], dtype='object')
MultiIndex([('2023-03-11', '售卖价'),
            ('2023-03-11', '成交量'),
            ('2023-03-13', '售卖价'),
            ('2023-03-13', '成交量'),
            ('2023-03-15', '售卖价'),
            ('2023-03-15', '成交量')],
           names=['日期', '水果'])
----------------------------- 使用filter-- 行搜索-----------------------------------
日期 2023-03-11       2023-03-13        2023-03-15      
水果        售卖价   成交量        售卖价    成交量        售卖价   成交量
苹果       2.54  69.4       3.27  18.89       1.93  3.37
----------------------------- 使用filter-- 列搜索-----------------------------------
日期  2023-03-11       
水果         售卖价    成交量
苹果        2.54  69.40
香蕉        1.99  53.33
橘子        2.48  27.81
榴莲        3.15  47.89
葡萄        4.59  35.58
雪花梨       3.17   9.58
百香果       3.05   7.65
"""
    

4. 数据读写

4.1 写入表格

from datetime import datetime, timedelta
import random
import pandas as pd

if __name__ == '__main__':
    fruits = ["苹果""香蕉""橘子""榴莲""葡萄""雪花梨""百香果"]
    rows = 20
    today = datetime.now()
    print(today.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3])
    dict_var = {
        '水果': [random.choice(fruits) for _ in range(rows)],
        '进价': [round(random.uniform(15), 4for _ in range(rows)],
        '售价': [round(random.uniform(15), 4for _ in range(rows)],
        '日期': [(today - timedelta(days=i)).strftime("%Y-%m-%d"for i in range(rows)],
        '销量': [round(random.uniform(10500), 4for _ in range(rows)]
    }
    sale_data = pd.DataFrame(dict_var)
    print(sale_data)
    # 保存,浮点数保留两位小数
    sale_data.to_excel("./test.xlsx", float_format="%.2f")

a.主要参数说明:

  • excel_writer: Excel 文件名或 ExcelWriter 对象。如果是文件名,将创建一个 ExcelWriter 对象,并在退出时自动关闭文件。
  • sheet_name: 字符串,工作表的名称,默认为 Sheet1
  • na_rep: 用于表示缺失值的字符串,默认为空字符串。
  • float_format: 用于设置浮点数列的数据格式。默认为 None,表示使用 Excel 默认的格式,当设置 %.2f表示保留两位。
  • columns: 要写入的列的列表,默认为 None。如果设置为 None,将写入所有列;如果指定列名列表,将只写入指定的列。
  • header: 是否包含列名,默认为 True。如果设置为 False,将不写入列名。
  • index: 是否包含行索引,默认为 True。如果设置为 False,将不写入行索引。
  • index_label: 用于指定行索引列的名称。默认为 None
  • startrow: 数据写入的起始行,默认为 0
  • startcol: 数据写入的起始列,默认为 0
  • freeze_panes: 值是一个元组,用于指定要冻结的行和列的位置。例如, (2, 3) 表示冻结第 2 行和第 3 列。默认为 None,表示不冻结任何行或列。

4.2 读取表格

import pandas as pd

if __name__ == '__main__':
    # ------------------------------ 读取表格 ----------------------------------
    print("----------------------------- 读取全部数据 -----------------------")
    # 读取全部数据
    read_all_data = pd.read_excel("./test.xlsx")
    print(read_all_data)
    print("----------------------------- 只读取第1、2列数据 -----------------------")
    # 只读取第1、2列数据
    read_column_data = pd.read_excel("./test.xlsx", usecols=[12])
    print(read_column_data)
    print("----------------------------- 只读取列名为:日期、销量 的数据 -----------------------")
    # 读取
    read_column_data2 = pd.read_excel("./test.xlsx", usecols=['日期''销量'])
    print(read_column_data2)

"""
----------------------------- 读取全部数据 -----------------------
   Unnamed: 0   水果    进价    售价          日期      销量
0           0   榴莲  3.74  2.35  2023-11-03  217.03
1           1  百香果  2.08  3.64  2023-11-02  311.40
2           2  百香果  2.17  4.94  2023-11-01  404.55
3           3   橘子  2.41  2.71  2023-10-31  431.20
4           4   葡萄  2.78  3.99  2023-10-30  323.01
5           5   苹果  4.79  1.68  2023-10-29  161.26
6           6  百香果  1.61  2.78  2023-10-28  407.27
7           7   榴莲  1.56  4.08  2023-10-27   44.74
8           8  雪花梨  1.60  3.02  2023-10-26  119.13
9           9   葡萄  3.03  1.08  2023-10-25  152.87
----------------------------- 只读取第1、2列数据 -----------------------
    水果    进价
0   榴莲  3.74
1  百香果  2.08
2  百香果  2.17
3   橘子  2.41
4   葡萄  2.78
5   苹果  4.79
6  百香果  1.61
7   榴莲  1.56
8  雪花梨  1.60
9   葡萄  3.03
----------------------------- 只读取列名为:日期、销量 的数据 -----------------------
           日期      销量
0  2023-11-03  217.03
1  2023-11-02  311.40
2  2023-11-01  404.55
3  2023-10-31  431.20
4  2023-10-30  323.01
5  2023-10-29  161.26
6  2023-10-28  407.27
7  2023-10-27   44.74
8  2023-10-26  119.13
9  2023-10-25  152.87
"""
    

主要参数说明:

  • io: 文件路径、 ExcelWriter 对象或者类似文件对象的路径/对象。
  • sheet_name: 表示要读取的工作表的名称或索引。默认为 0,表示读取第一个工作表。
  • header: 用作列名的行的行号。默认为 0,表示使用第一行作为列名。
  • names: 覆盖 header 的结果,即指定列名。
  • index_col: 用作行索引的列的列号或列名。
  • usecols: 要读取的列的列表,可以是列名或列的索引。

4.3 更多方法

除了上面的表格读取,还有更多类型的读取方式,方法简单整理如下:

图来自
图来自

5.数据可视化

Pandas底层对Matplotlib进行了封装,所以可以直接使用Matplotlib的绘图方法;

5.1 折线图

from datetime import datetime, timedelta
import random
import pandas as pd
from matplotlib import pyplot as plt

# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False

if __name__ == '__main__':
    # ------------------------------ 生成数据 ----------------------------------
    rows = 30
    beginDate = datetime(2023410)
    print("beginDate:", beginDate.strftime("%Y-%m-%d"))
    dict_var = {
        '日期': [(beginDate + timedelta(days=i)).strftime("%Y-%m-%d"for i in range(rows)],
        '进价': [round(random.uniform(14), 2for _ in range(rows)],
        '售价': [round(random.uniform(26), 2for _ in range(rows)],
    }
    apple_data = pd.DataFrame(dict_var)
    apple_data.plot(x='日期', y=['进价''售价'], title='苹果销售数据')
    plt.show()
alt

5.2 散点图

from datetime import datetime, timedelta
import random

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False

if __name__ == '__main__':
    # ------------------------------ 生成数据 ----------------------------------
    rows = 30
    beginDate = datetime(202341)
    print("beginDate:", beginDate.strftime("%Y-%m-%d"))
    dict_var = {
        '日期': [(beginDate + timedelta(days=i)).strftime("%d"for i in range(rows)],
        '进价': [round(random.uniform(14), 2for _ in range(rows)],
        '售价': [round(random.uniform(210), 2for _ in range(rows)],
        '销量': [round(random.uniform(10500), 4for _ in range(rows)]
    }
    apple_data = pd.DataFrame(dict_var)
    # 设置颜色
    colorList = 10 * np.random.rand(rows)
    # 设置
    apple_data.plot(x='日期', y='售价', kind='scatter', title='苹果销售数据', color=colorList, s=dict_var['销量'])
    plt.show()
alt
  • color:表示的是颜色,可以使用字符串表示颜色名称,也可以使用十六进制颜色码。
  • s: 散点图特有的属性,表示散点大小。

5.3 柱形图

import random

import pandas as pd
from matplotlib import pyplot as plt

# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False

if __name__ == '__main__':
    # ------------------------------ 生成数据 ----------------------------------
    fruits = ["苹果""香蕉""橘子""榴莲""葡萄""雪花梨""百香果"]
    rows = 7
    beginDate = datetime(202341)
    print("beginDate:", beginDate.strftime("%Y-%m-%d"))
    dict_var = {
        '水果': ["苹果""香蕉""橘子""榴莲""葡萄""雪花梨""百香果"],
        '销量': [round(random.uniform(101000), 2for _ in range(rows)]
    }
    apple_data = pd.DataFrame(dict_var)
    apple_data.plot(x='水果', y='销量', kind='bar', title='水果销售数据')
    plt.show()
alt

本文由 mdnice 多平台发布

相关文章:

Python库学习(十二):数据分析Pandas[下篇]

接着上篇《Python库学习(十一):数据分析Pandas[上篇]》,继续学习Pandas 1.数据过滤 在数据处理中,我们经常会对数据进行过滤,为此Pandas中提供mask()和where()两个函数; mask(): 在 满足条件的情况下替换数据,而不满足条件的部分…...

工具: MarkDown学习

具体内容看官方教程: Markdown官方教程...

JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接: https://www.qimai.cn/rank analysis逆向 完整参数生成代码如下&#xff1a; const {JSDOM} require(jsdom) const dom new JSDOM(<!DOCTYPE html><p>hello</p>) window dom.windowfunction customDecrypt(n, t) {t t || generateKey(); //…...

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人坦克

前面的步骤和无人机调试一样&#xff0c;可以参考无人机相关专栏。这里不再赘述。 1.安装完rover的固件后&#xff0c;链接gps并进行校准。旋转小车不同方向&#xff0c;完成校准&#xff0c;弹出成功窗口。 2.校准遥控器。 一定要确保遥控器模式准确&#xff0c;尤其是使用没…...

Vue3的手脚架使用和组件父子间通信-插槽(Options API)学习笔记

Vue CLI安装和使用 全局安装最新vue3 npm install vue/cli -g升级Vue CLI&#xff1a; 如果是比较旧的版本&#xff0c;可以通过下面命令来升级 npm update vue/cli -g通过脚手架创建项目 vue create 01_product_demoVue3父子组件的通信 父传子 父组件 <template>…...

第九章软件管理

云计算第九章软件管理 概述 1RPM包 RPM Package Manager 由Red Hat公司提出被众多Linux发现版所采用 也称二进制无需编译可以直接使用 无法设定个人设置开关功能 软件包示例 认识ROM包 2源码包 source code 需要经过GCC,C编辑环境编译才能运行 可以设定个人设置&…...

Web渗透编程语言基础

Web渗透初学者JavaScript专栏汇总-CSDN博客 Web渗透Java初学者文章汇总-CSDN博客 一 Web渗透PHP语言基础 PHP 教程 | 菜鸟教程 (runoob.com) 一 PHP 语言的介绍 PHP是一种开源的服务器端脚本语言,它被广泛用于Web开发领域。PHP可以与HTML结合使用,创建动态网页。 PHP的特…...

Vue-router 路由的基本使用

Vue-router是一个Vue的插件库&#xff0c;专门用于实现SPA应用&#xff0c;也就是整个应用是一个完整的页面&#xff0c;点击页面上的导航不会跳转和刷新页面。 一、安装Vue-router npm i vue-router // Vue3安装4版本 npm i vue-router3 // Vue2安装3版本 二、引入…...

如何在CPU上进行高效大语言模型推理

大语言模型&#xff08;LLMs&#xff09;已经在广泛的任务中展示出了令人瞩目的表现和巨大的发展潜力。然而&#xff0c;由于这些模型的参数量异常庞大&#xff0c;使得它们的部署变得相当具有挑战性&#xff0c;这不仅需要有足够大的内存空间&#xff0c;还需要有高速的内存传…...

简简单单入门Makefile

笔记来源&#xff1a;于仕琪教授&#xff1a;Makefile 20分钟入门&#xff0c;简简单单&#xff0c;展示如何使用Makefile管理和编译C代码 操作环境 MacosVscode 前提准备 新建文件夹 mkdir learn_makefile新建三个cpp文件和一个头文件 // mian.cpp #include <iostrea…...

New Maven Project

下面两个目录丢失了&#xff1a; src/main/java(missing) src/test/java(missing) 换个JRE就可以跑出来了 变更目录...

IDEA中如何移除未使用的import

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是全栈工…...

第18章_MySQL8新特性之CTE(公用表表达式)

文章目录 新特性&#xff1a;公用表表达式(cte)普通公用表表达式递归公用表表达式小 结 新特性&#xff1a;公用表表达式(cte) 公用表表达式&#xff08;或通用表表达式&#xff09;简称为CTE&#xff08;Common Table Expressions&#xff09;。CTE是一个命名的临时结果集&am…...

MySQL的备份恢复

数据备份的重要性 1.生产环境中&#xff0c;数据的安全至关重要 任何数据的丢失都会导致非常严重的后果。 2.数据为什么会丢失 &#xff1a;程序操作&#xff0c;运算错误&#xff0c;磁盘故障&#xff0c;不可预期的事件&#xff08;地震&#xff0c;海啸&#xff09;&#x…...

【JavaEE】JVM 剖析

JVM 1. JVM 的内存划分2. JVM 类加载机制2.1 类加载的大致流程2.2 双亲委派模型2.3 类加载的时机 3. 垃圾回收机制3.1 为什么会存在垃圾回收机制?3.2 垃圾回收, 到底实在做什么?3.3 垃圾回收的两步骤第一步: 判断对象是否是"垃圾"第二步: 如何回收垃圾 1. JVM 的内…...

算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表

1、算法思路 讲一下设置虚拟头节点的那个方法&#xff0c;设置一个新节点指向原来链表的头节点&#xff0c;这样我们就可以通过判断链表的当前节点的后继节点值是不是目标删除值&#xff0c;来判断是否删除这个后继节点了。如果不设置虚拟头节点&#xff0c;则需要将头节点和后…...

ubuntu18.04 多版本opencv配置记录

多版本OpenCV过程记录 环境 ubuntu18.04 python2.7 python3.6 python3.9 opencv 3.2 OpenCV 4.4.0安装 Ubuntu18.04 安装 Opencv4.4.0 及 Contrib (亲测有效) 暂时不清楚Contrib的作用&#xff0c;所以没安装&#xff0c;只安装最基础的 下载opencv4.4.0并解压 opencv下载…...

Spring Security—OAuth 2.0 资源服务器的多租户

一、同时支持JWT和Opaque Token 在某些情况下&#xff0c;你可能需要访问两种令牌。例如&#xff0c;你可能支持一个以上的租户&#xff0c;其中一个租户发出JWT&#xff0c;另一个发出 opaque token。 如果这个决定必须在请求时做出&#xff0c;那么你可以使用 Authenticati…...

VB.NET—窗体引起的乌龙事件

目录 前言: 过程: 总结: 升华: 前言: 分享一个VB.NET遇到的一个问题&#xff0c;开始一直没有解决&#xff0c;这个问题阻碍了很长时间&#xff0c;成功的变成我路上的绊脚石&#xff0c;千方百计的想要绕过去&#xff0c;但事与愿违怎么也绕不过去&#xff0c;因为运行不了…...

批量新增报错PSQLException: PreparedStatement can have at most 65,535 parameters.

报错信息&#xff1a; org.postgresql.util.PSQLException: PreparedStatement can have at most 65,535 parameters. Please consider using arrays, or splitting the query in several ones, or using COPY. Given query has 661,068 parameters ; SQL []; PreparedStatemen…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...