【pandas】15 pandas数据结构

news2025/1/17 0:07:03

【pandas】15 pandas数据结构

2023.1.13 总结来自https://mofanpy.com/tutorials/data-manipulation/pandas/
包括pandas数据结构Series/DataFrame;数据选取分类查询等内容

15.1 为什么需要pandas

  • 前面讲了numpy,我们发现,numpy主要用途就是对同一类数据进行处理,可以看成数据矩阵
  • Pandas 主要用于一维二维数据,但用于处理数据的功能也比较多,信息种类也更丰富,特别是你有一些包含字符的表格,Pandas 可以帮你处理分析这些字符型的数据表。
  • Pandas继承了numpy所有优点,但比numpy慢点

pandas中的数据是什么?

  • 数据序列Series
  • 数据表DataFrame

15.2 Series

Series核心就是一串类似于列表的序列。Pandas Series 为数据提供了一套索引。

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

  • data:一组数据(ndarray 类型)。

  • index:数据索引标签,如果不指定,默认从 0 开始。

  • dtype:数据类型,默认会自己判断。

  • name:设置名称。

  • copy:拷贝数据,默认为 False。

1. 【列表转换】:列表外套个pd.Series() `

import pandas as pd

l = [11,22,33]
s = pd.Series(l)
print(s)
0    11
1    22
2    33
dtype: int64

他这个pandas是按照excel表的习惯来的,一般数据一横行是一个数据,每个列是不同特征
所以这里面其实是三个数据,同一个特征数据,所以是3*1

2. 【index换索引】:'a’是字符串所以要‘’

s = pd.Series(l,index=['a',1,'c'])
print(s)
a    11
1    22
c    33
dtype: int64

3. 【字典创建】:最常规的创建,也是pandas的特色

s=pd.Series({"a":11,"b":22,'c':33})
s
a    11
b    22
c    33
dtype: int64

4. 转化成list,Series

print("array:", s.to_numpy())
print("list:", s.values.tolist())
array: [11 22 33]
list: [11, 22, 33]

【5. 访问】:5.1 单独访问 5.2 部分访问

  • 5.1 单独访问
s
0    11
1    22
2    33
dtype: int64
#通过索引访问
s[2]
33
s.at[2]
33
  • 5.2 部分访问:只需要指定需要数据的索引即可
pd.Series(s, index = [0, 2])
0    11
2    33
dtype: int64

6. name

import pandas as pd

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}

myvar = pd.Series(sites, index = [1, 2], name="RUNOOB-Series-TEST" )

print(myvar)
1    Google
2    Runoob
Name: RUNOOB-Series-TEST, dtype: object

15.3 数据表DataFrame

  1. pandas.DataFrame( data, index, columns, dtype, copy)
  • data:一组数据(ndarray、series, map, lists, dict 等类型)。

  • index:索引值,或者可以称为行标签。

  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

  • dtype:数据类型。

  • copy:拷贝数据,默认为 False。

  1. 横的叫row,竖的叫column

在这里插入图片描述

15.3.1 创建DataFrame数据

1. 【从二维list转成Dataframe】

df = pd.DataFrame([
  [1,2],
  [3,4]
])
df
01
012
134
  1. 【字典创建】:字典创建的key是列索引,这点和Series有区别,相当于属性;每行习惯看成一条完整的数据
df=pd.DataFrame({"col1":[1,3],"col2":[2,4]},index=["a","b"])
df
col1col2
a12
b34
  • index更改了行索引
  1. 【创建】:也可以把两个series拼起来
s=pd.DataFrame({"col1":pd.Series([1,2,6]),"col2":pd.Series([3,4])})
s
col1col2
013.0
124.0
26NaN
  • Series拼接方式索引无法直接更改】应该先拼接再更改
s=pd.DataFrame({"col1":pd.Series([1,2]),"col2":pd.Series([3,4])},index=["a","b"])
s
col1col2
aNaNNaN
bNaNNaN
  1. 更换行索引或列索引:.index.columns
s=pd.DataFrame({"'col1'":pd.Series([1,2]),"'col2'":pd.Series([3,4])})
s
'col1''col2'
013
124
s.index=['a','b']
s
'col1''col2'
a13
b24

*这里我们注意这相当于赋值,所以要用=

s.columns=[1,2]
s
12
a13
b24
  1. 【查看有哪些行或列索引】:df.index, df.columns
print(s)
#左闭右开
print(s.index, "\n")
print(s.columns)
   col1  col2
0     1   3.0
1     2   4.0
2     6   NaN
RangeIndex(start=0, stop=3, step=1) 

Index(['col1', 'col2'], dtype='object')

15.3.2 读取DataFrame数据

我们的思路主要两种:通过索引选取和通过位置选取

15.3.2.1 类似与读二维数组方法

import pandas as pd
import numpy as np

data = np.arange(-12, 12).reshape((6, 4))
df = pd.DataFrame(
  data, 
  index=list("abcdef"), 
  columns=list("ABCD"))
df
ABCD
a-12-11-10-9
b-8-7-6-5
c-4-3-2-1
d0123
e4567
f891011
  1. 【读某列】
df.A
a   -12
b    -8
c    -4
d     0
e     4
f     8
Name: A, dtype: int32
df["A"]
a   -12
b    -8
c    -4
d     0
e     4
f     8
Name: A, dtype: int32
  • 多选
df["A":"D"]
ABCD
df[["A","D"]]
AD
a-12-9
b-8-5
c-4-1
d03
e47
f811

多列选择。我们注意[]数量:多选时,切片就是单[],一个个用索引选的时候,是对两对[]

  1. 【读某行】
df["a":"a"]
ABCD
a-12-11-10-9
df["a":"b"]
ABCD
a-12-11-10-9
b-8-7-6-5
  1. 【读某值】:必须先列后行,否则报错
#两个条件
df["A"]["c"]
-4
  • 我们有时候也会看到.at的写法( 必须先行后列,否则报错

df.at["c","A"]
-4

15.3.2.2 通过索引选取:.loc

函数.loc是通过索引名字选取的

  • 用法和切片类似,[行,列]
  • 这里是当成Excel习惯的,所以是闭区间【c:d】,并非切片时左闭右开
import pandas as pd
import numpy as np

data = np.arange(-12, 12).reshape((6, 4))
df = pd.DataFrame(
  data, 
  index=list("abcdef"), 
  columns=list("ABCD"))
df
ABCD
a-12-11-10-9
b-8-7-6-5
c-4-3-2-1
d0123
e4567
f891011
df.loc["c":"d", "B":"D"]
BCD
c-3-2-1
d123
  • 访问某几行
print(df.loc["":"c"])
    A   B   C  D
a -12 -11 -10 -9
b  -8  -7  -6 -5
c  -4  -3  -2 -1
  • 某几列
print(df.loc[:,"B":"C"])
    B   C
a -11 -10
b  -7  -6
c  -3  -2
d   1   2
e   5   6
f   9  10

15.3.2.3 通过位置信息选取iloc

#这个是np类型的
data
array([[-12, -11, -10,  -9],
       [ -8,  -7,  -6,  -5],
       [ -4,  -3,  -2,  -1],
       [  0,   1,   2,   3],
       [  4,   5,   6,   7],
       [  8,   9,  10,  11]])
print("\ndf:\n", df.iloc[2:3, 1:3])
df:
    B  C
c -3 -2
print("\ndf:\n", df.iloc[[3, 1], :])
df:
    A  B  C  D
d  0  1  2  3
b -8 -7 -6 -5

15.2.3 loc和iloc混搭

row_labels = df.index[2:4]
print("row_labels:\n", row_labels)
col_labels = df.columns[[0, 3]]
print("col_labels:\n", col_labels)
print("\ndf:\n", df.loc[row_labels, col_labels])
row_labels:
 Index(['c', 'd'], dtype='object')
col_labels:
 Index(['A', 'B', 'C'], dtype='object')

df:
    A  B  C
c -4 -3 -2
d  0  1  2

这里我们注意有几个[]

  • 用切片:就是1个【】,要单独表现几个行或列用两个【】

15.2.4 件过滤筛选

  • 选在 A Column 中小于 0 的那些数据
df
ABCD
a-12-11-10-9
b-8-7-6-5
c-4-3-2-1
d0123
e4567
f891011
df[df["A"]<0]
ABCD
a-12-11-10-9
b-8-7-6-5
c-4-3-2-1
df["A"]<0
a     True
b     True
c     True
d    False
e    False
f    False
Name: A, dtype: bool
  • 选在第一行数据不小于 -10 的数据

  • ~非的意思

print("~:\n", df.loc[:, ~(df.iloc[0] < -10)])
print("\n>=:\n", df.loc[:, df.iloc[0] >= -10])
~:
     C   D
a -10  -9
b  -6  -5
c  -2  -1
d   2   3
e   6   7
f  10  11

>=:
     C   D
a -10  -9
b  -6  -5
c  -2  -1
d   2   3
e   6   7
f  10  11

15.3 多索引数据 Multi-Indexing

将数据记录在数据表时,特别是数据归类比较复杂的情况, 比如年级-班级-学生信息这种层级的记录,我们很可能要使用到合并单元格。 我们把这种模式叫做 Multi-Indexing 多索引。

15.3.1 构建Row多检索

  • 比如有两层分类,先输入一个分类检索,放到pd.MultiIndex.from_tuples
  • 创建DataFrame时候当index输入

方法1】:pd.MultiIndex.from_tuples()

  1. 设置分类

前面就是一个列表,然后变成MultiIndex

import pandas as pd

tuples = [
  # 年级,班级
  ("one", "1"),
  ("one", "1"),
  ("one", "2"),  ("one", "2"),
  ("two", "1"),
  ("two", "1"),
  ("two", "2"),
  ("two", "2"),
]
index = pd.MultiIndex.from_tuples(
  tuples, names=["grade", "class"])
index
MultiIndex([('one', '1'),
            ('one', '1'),
            ('one', '2'),
            ('one', '2'),
            ('two', '1'),
            ('two', '1'),
            ('two', '2'),
            ('two', '2')],
           names=['grade', 'class'])
  1. 建数据时候 把这index导进去就行
s = pd.Series(
    ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
     ], 
    name="name",
    index=index)
s
grade  class
one    1        小米
       1        小明
       2        小命
       2        小勉
two    1        小牛
       1        小鸟
       2        小南
       2        小妮
Name: name, dtype: object

方法2】:pd.MultiIndex.from_product()

这个有些规律 每个年级所在班级学生一样多。如下

import pandas as pd

iterables = [
  ["one", "two"],  # 年级
  ["1", "1", "2", "2"]  # 每个学生所在班级
]

index2 = pd.MultiIndex.from_product(
  iterables, names=["grade", "class"])
index2
MultiIndex([('one', '1'),
            ('one', '1'),
            ('one', '2'),
            ('one', '2'),
            ('two', '1'),
            ('two', '1'),
            ('two', '2'),
            ('two', '2')],
           names=['grade', 'class'])
s = pd.Series(
    ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
     ], 
    name="name",
    index=index2)
s
grade  class
one    1        小米
       1        小明
       2        小命
       2        小勉
two    1        小牛
       1        小鸟
       2        小南
       2        小妮
Name: name, dtype: object

【方法3】pd.MultiIndex.from_frame(df):你的索引数据也维护在一张 DataFrame 中.其他一样

df = pd.DataFrame(
    [
    # 年级,班级
    ("one", "1"),
    ("one", "1"),
    ("one", "2"),
    ("one", "2"),
    ("two", "1"),
    ("two", "1"),
    ("two", "2"),
    ("two", "2"),
    ],
    columns=["grade", "class"]
)

index3 = pd.MultiIndex.from_frame(df)
index3
MultiIndex([('one', '1'),
            ('one', '1'),
            ('one', '2'),
            ('one', '2'),
            ('two', '1'),
            ('two', '1'),
            ('two', '2'),
            ('two', '2')],
           names=['grade', 'class'])

刚才都是Series。下面用DataFrame举例

df1 = pd.DataFrame(
    {"id": [11,12,13,14,15,16,17,18],
    "name": 
     ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
    ]},
    index=index)
df1
idname
gradeclass
one111小米
112小明
213小命
214小勉
two115小牛
116小鸟
217小南
218小妮

15.3.2 构建Column多索引

df2 = pd.DataFrame(
    [[11,12,13,14,15,16,17,18],
     ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
    ]],
    index=["id", "name"])
df2
01234567
id1112131415161718
name小米小明小命小勉小牛小鸟小南小妮

方法一样,其实里面他们是一一对应的,所以用columns引入多重索引就行

df2 = pd.DataFrame(
    [[11,12,13,14,15,16,17,18],
     ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
    ]],
    index=["id", "name"],
    columns=index,  # 多索引加这
)
df2
gradeonetwo
class11221122
id1112131415161718
name小米小明小命小勉小牛小鸟小南小妮

15.3.3 选择数据

方法:就是用索引,很分类用.loc[];。列分类用类似二维数组的方法,每个【】是一个筛选条件

# 一个条件就是在one里的
df2["one"]
class1122
id11121314
name小米小明小命小勉
  • 列分类:两个条件,一个是在one里一个是在1里。特别注意这个1是字符串
#两个条件,一个是在one里一个是在1里。特别注意这个1是字符串
df2["one"]["1"]
class11
id1112
name小米小明
df4 = pd.DataFrame(
    {"id": [11,12,13,14,15,16,17,18],
    "name": 
     ["小米", "小明",      # 一年一班
     "小命", "小勉",      # 一年二班
     "小牛", "小鸟",      # 二年一班
     "小南", "小妮"       # 二年二班
    ]},
    index=index)
df4
idname
gradeclass
one111小米
112小明
213小命
214小勉
two115小牛
116小鸟
217小南
218小妮
  • 行分类用.loc
#用loc
df4.loc["one"].loc["2"]
idname
class
213小命
214小勉

15.4 数据分组 Groupby

数据有关键词、每个数据带有特定类别?我们怎样可以快速找到对应的类别,聚类分析?groupby()

15.4.1 分组

  • df.groupby(); 按什么分类
  • grouped.groups;分类后每组得到索引
  • grouped.get_group()按什么分类后的数据
核心的功能,自然就是将可以被归纳的数据进行归纳汇总
import pandas as pd

df = pd.DataFrame(
    [
        ("小红", "哈利波特", 80),
        ("小明", "蜘蛛侠", 72),
        ("小红", "雷神", 83),
        ("小红", "蜘蛛侠", 45),
        ("小明", "超人", 57),
    ],
    columns=("人", "人物", "评价"),
)
df
人物评价
0小红哈利波特80
1小明蜘蛛侠72
2小红雷神83
3小红蜘蛛侠45
4小明超人57
# 这就把小名小红分成了两组
grouped = df.groupby("人")

#可以查看分组后的索引
grouped.groups
{'小明': [1, 4], '小红': [0, 2, 3]}
  • 这就把小名小红分成了两组;可以查看分组后的索引;那么就可以做相应的操作
df.iloc[grouped.groups["小红"]]
人物评价
0小红哈利波特80
2小红雷神83
3小红蜘蛛侠45
  • 或者用函数,拿到分类后数据
grouped.get_group("小红")
人物评价
0小红哈利波特80
2小红雷神83
3小红蜘蛛侠45

15.4.2 调用分好的组

  • grouped.first(); 调用每个分类索引的第一个
  • grouped.last():调用每个分类索引的最后一个
grouped.first()
人物评价
小明蜘蛛侠72
小红哈利波特80
grouped.last()
人物评价
小明超人57
小红蜘蛛侠45

15.4.3 循环处理

有时候你想要对组进行循环处理,通过一个循环最所有组统一操作一下。那你需要注意一下这个 grouped 的循环,会带着两个字段做循环。 一个是组名,一个是组数据。

for name, group in grouped:
    print("name:", name)
    print(group)
name: 小明
    人   人物  评价
1  小明  蜘蛛侠  72
4  小明   超人  57
name: 小红
    人    人物  评价
0  小红  哈利波特  80
2  小红    雷神  83
3  小红   蜘蛛侠  45

15.4.4 多从分组

df = pd.DataFrame(
    [
        ("小红", "哈利波特", 80),
        ("小明", "蜘蛛侠", 72),
        ("小红", "雷神", 83),
        ("小红", "雷神", 90),
        ("小红", "蜘蛛侠", 45),
        ("小明", "超人", 57),
    ],
    columns=("人", "人物", "评价"),
)
df
人物评价
0小红哈利波特80
1小明蜘蛛侠72
2小红雷神83
3小红雷神90
4小红蜘蛛侠45
5小明超人57
df.groupby(["人", "人物"]).get_group(("小红", "雷神"))
人物评价
2小红雷神83
3小红雷神90
  • 以人 和人物 共同进行筛选

15.4.5 聚合计算

  • 如果有数据是数字 还能对数据进行sum, mean 等操作。
  • .agg() 其实是 .aggregate() 的缩写,都可以用

【方法1】

import numpy as np
grouped["评价"].agg([np.sum, np.mean, np.std])
summeanstd
小明12964.50000010.606602
小红20869.33333321.126603

【方法2】

print(grouped.sum())
print(grouped.mean())
print(grouped.std())
     评价
人      
小明  129
小红  208
           评价
人            
小明  64.500000
小红  69.333333
           评价
人            
小明  10.606602
小红  21.126603
  • 还有一个小技巧,如果你不喜欢用英文表达,或者你想要用另外一个名字来描述 column,你可以用 rename 来重新命名。
grouped["评价"].agg(
    [np.sum, np.mean, np.std]
).rename(columns={
    "sum": "合", 
    "mean": "均值", 
    "std": "标准差"
})

均值标准差
小明12964.50000010.606602
小红20869.33333321.126603

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

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

相关文章

多节点Linux环境打造

目录 一、环境准备 1. CentOS镜像下载 2. VMware下载 二、 安装操作系统 1. 配置虚拟机 2. 安装CentOS操作系统 3. 网络配置 4. 多节点打造 5. 节点网络互通 6. 关闭防火墙服务 7. 修改默认主机名 8. 关闭 SELinux 服务 9. 安装常用软件 一、环境准备 1. CentOS镜…

电脑重装系统后键盘失灵解决方法步骤

手提电脑重装系统后键盘失灵怎么办呢?众所周知,联想小新Air 13 Pro保持经典的黑色外观,凭借坚固和可靠的特性得到了很多用户的认可。有网友发现联想小新Air 13 Pro手提电脑重装系统后键盘会失灵&#xff0c;那么小编把手提电脑重装系统后键盘失灵解决方法分享给大家。 工具/原…

Vue声明式导航 编程式导航、导航守卫、axios拦截器

一、声明式导航 & 编程式导航 1. 声明式导航&#xff1a;以超链接方式实现的页面跳转&#xff0c;就是声明式导航 < a href‘url’> 链接文本或图像 < /a >< router-link to‘url’ > 链接文本或图像 < /router-link >2. 编程式导航&#xff1a;通…

录屏软件哪个好?电脑录屏软件排行榜推荐

你是不是还在为选不到合适的录屏软件而苦恼&#xff1f;市面上录屏软件种类繁多&#xff0c;功能参差不齐确实不好选择。录屏软件哪个好&#xff1f;怎样才能找到适合自己的录屏软件&#xff1f;不用焦虑。今天小编给大家推荐3款电脑录屏软件排行榜前列的录屏软件&#xff0c;每…

day37【代码随想录】贪心算法之划分字母区间、合并区间、单调递增的数字、买卖股票的最佳时机含手续费、监控二叉树

文章目录前言一、划分字母区间&#xff08;力扣763&#xff09;二、合并区间&#xff08;力扣56&#xff09;三、单调递增的数字&#xff08;力扣738&#xff09;四、买卖股票的最佳时机含手续费&#xff08;力扣714&#xff09;五、监控二叉树&#xff08;力扣968&#xff09;…

1.14 IIC总线实验

一.IIC总线&#xff1a; 1.同步半双工串行总线&#xff0c;用于同一个开发板两个芯片之间的通信 2.有两根信号线&#xff0c;一根SDA,一根SCL 3.IIC总线需要外接两个上拉电阻&#xff0c;使空闲状态保持高电平 4.IIC总线支持多主机多从机模式&#xff0c;一般采用单主机多从…

STM32外部中断解析

文章目录前言一、外部中断是什么二、STM32F103的外部中断三、外部中断的中断号四、HAL库的外部中断初始化流程总结前言 本篇文章将带大家了解STM32F103的外部中断。 一、外部中断是什么 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时&#xff0c…

数组名的意义

数组名只有单独放在sizeof内部以及放在&后才代表整个数组的地址。其余情况数组名都表示数组首元素地址。 之前我们说过用sizeof(a)计算的是整个数组的大小&#xff0c;现在我们知道其中的原因了。由于sizeof里的数组名a表示整个数组的地址&#xff0c;故sizeof(a)求的是整…

Android10以上系统Audio音频遇到播放无声时的分析方法

​商务合作 2023年招聘 2023年逆向分析资料汇总 推荐阅读 Android Audio音频系统 Android Audio音频系统之深入浅出 Android Framework/驱动/内核中高级工程师 ​Android10以上系统Audio音频遇到播放视频无声时的分析方法 干货|Android APP应用工程师转Framework工程师(…

51单片机存储结构

之前概要介绍了8151微控制器的结构&#xff08;也就是51单片机&#xff09;。相比微处理器&#xff0c;微控制器的区别之一是在一个芯片上有程序存储器(RAM)和数据存储器(RAM)。存储区是微控制器非常重要的内容。 本文就介绍一下8051的存储结构。包括存储器的组织、处理器对存储…

VTK-Tessellator Subdivision

前言&#xff1a;本博文主要研究Tessellator 的Subdivision&#xff0c;对vtk中的所有相关接口进行研究&#xff0c;并找出最优的解决方法。 GeometricObjects中vtkTessellatorFilter的应用实例 待研究对当前的Subdivision进行优化。 vtkTessellatorFilter 位置&#xff1a;…

Docker容器数据卷与数据卷容器

文章目录什么是容器数据卷使用数据卷使用 docker 安装 mysql匿名和具名挂载数据卷容器什么是容器数据卷 Docker理念回顾 将应用和运行的环境打包形成容器运行&#xff0c;运行可以伴随着容器&#xff0c;但是我们对于数据的要求&#xff0c;是希望能够 持久化的&#xff01; 就…

【寒假每日一题】DAY.6 有序序列的合并

牛客网例题&#xff1a;点我做题 描述 输入两个升序排列的序列&#xff0c;将两个序列合并为一个有序序列并输出。数据范围&#xff1a; 1 ≤ n&#xff0c;m ≤ 1000&#xff0c;序列中的值满足0≤val≤30000输入描述&#xff1a; 输入包含三行&#xff0c;第一行包含两个正整…

微信小程序开发起步

一、小程序与普通网页开发的区别 1&#xff09;运行环境不同。网页运行在浏览器环境中&#xff0c;小程序运行在微信环境中。 2&#xff09;API不同。由于运行环境不同&#xff0c;所以小程序中无法调用DOM和BOM的API&#xff0c;但是小程序可以调用微信环境提供的各种API&am…

zabbix的安装部署,一看就会

目录 1、系统组成 2、采集模式 3、监控类型 4、相关术语 5、安装部署 1、系统组成 2、采集模式 监控系统数据采集的工作模式可以分为 被动模式&#xff08;从服务器端到客户端采集数据&#xff0c;对应的英文单词是pull&#xff09; 主动模式 &#xff08;客户端主动上报…

java基于springboot的新生报到系统app新生报到安卓app新生入学报到小程序加论文

简介 本项目主要是新生报到系统&#xff0c;包含的新生入学流程的功能&#xff1a;新生可以在app里提交预报到日期确认报到&#xff0c;查看自己的学费缴费记录&#xff0c;更改自己的银行卡号&#xff0c;查看课表&#xff0c;查看寝室&#xff0c;查看自己的专业班级等个人信…

CubeMX配置:定时器中断及串口配置

本文通过CubeMX配置F103RCT6的定时器中断和串口。 文章目录1 引入2 配置过程2.1 配置时钟过程2.2 配置串口过程2.3 定时器中断配置3 生成工程代码4 测试串口及定时器中断周期5 总结1 引入 拿到一个STM32控制器&#xff0c;在啥也没有的情况下从零开始写软件&#xff0c;博主习…

Java K 个一组翻转链表

K 个一组翻转链表困难给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。你不能只是单纯的…

电视为何降价至200元依然没人买?爱奇艺给出了答案

近日爱奇艺提高降低会员的服务内容&#xff0c;消费者要享受到将内容投放到电视就要买更贵的会员服务&#xff0c;引发热议&#xff0c;此举或许能解释国内消费者为何如今不买电视了。2022年电视行业可谓是一个相当惨淡的行业&#xff0c;量价齐跌&#xff0c;随着2022年底的到…

计算机视觉OpenCv学习系列:第二部分、图像操作

第二部分、图像操作第一节、图像读取与显示1.图像理解2.图像读取与显示3.代码练习与测试第二节、图像色彩空间转换1.图像色彩空间2.函数说明与解释3.代码练习与测试第三节、图像对象的创建与赋值1.图像对象属性2.图像对象创建与赋值3.代码练习与测试第四节、图像像素的读写操作…