内容正文:
浙江高中技术培优算法(陶小波)
84
附表 1 网络拓扑图
拓扑图中常见的问题:
问题 1:网页中数据长时间不更新 (IOT、智能终端、传感器有可能有问题)
问题 2:网页无法访问【404 错误】(Web 服务器断网、Web 服务器上代码出错、
用户端断网、URL 错误)
问题 3:命令没有执行(IOT、智能终端、执行器有可能有问题)
问题 4:网页无数据(数据库出错、Web 服务器上代码出错)
问题 5:执行器和传感器都无法使用(IOT、智能终端)
拓扑图中常见的设备:
1.调制解调器:即光猫,此设备用于拨号上网及将光信号转为电信号。
2.路由器:此设备 用于管理家庭联网设备(此设备也可拨号上网),WIFI 也是
通过此设备发射,此设备的 Wan 口连接光猫,Lan 口连接其他需要上网的设备(例
如台式电脑)此设备也用于 DHCP 服务(动态 IP 地址分配)[课本上说的是路由
器,可以拨号上网,有的选就选路由器,没的选就选调制解调器]
3.交换机:交换机主要用于路由器 Lan 不足时的补充,类似于插线板,交换机可
有可无
4.Web 服务器:就是电脑,他主要用于部署代码,Flask 代码就部署在此;
5.数据库:数据库主要用于存储数据。
6.IOT 模块:主要用于给智能终端上网使用(此模块损坏,智能终端不能上网)
IOT 可以通过 WIFI/蓝牙/移动通讯网络/网线实现链接上网
7.传感器:主要用于获取数据,例如人体传感器、声控传感器
7.执行器:执行器主要用于执行指令
8.智能终端:智能终端主要用于处理 服务器下发的执行指令和获取传感器上传
的数据(在 IOT 模块损坏的时候可以直接连接智能终端获取数据)
浙江高中技术培优算法(陶小波)
85
附表 2 Pandas 常见方法一览表
假设有如下代码:
import pandas as pd
import matplotlib.pyplot as plt
dic = {"城市名称": ["杭州", "宁波", "宁波", "绍兴"],
"区域": ["余杭", "镇海", "北仑", "柯桥"],
"人均 GDP": [125894, 202658, 227856, 215678],
"城区人口": [2014570, 695710, 445687, 115678],
"人均汽车保有量(辆)": [0.8, 0.71, 0.66, 1.02]
}
df = pd.DataFrame(dic) # 将字典转成 Pandas 的对象
代码:
df["人均住房面积"] = [39.45, 37.77, 58.86, 29.55]
功能:
新增一列(人均住房面积)当 df 中不存在人均住房面积这一列时,就新增一列
结果:
代码:
df["人均 GDP"] = [39.45, 37.77, 58.86, 29.55]
功能:
修改一列(人均住房面积)当 df 中存在人均 GDP 这一列时,就修改一列
结果:
浙江高中技术培优算法(陶小波)
86
代码:
df.at[0, "人均 GDP"] = 156980
功能:
修改单个的值。[将余杭的人均 GDP 改为 156980]
at 方法传入两个参数,第一个参数是索引值,第二个是列名
结果:
代码:
df.pop("城市名称")
功能:
传入列名,删除该列【影响原值】
结果:
代码:
df = df.drop(labels=["城市名称"], axis=1)
功能:
删除一列,不影响原值删除[前面套 df=就可以影响原值]。
传入两个参数,labels=[行索引 1,行索引 2],axis=1:表示列
结果:
浙江高中技术培优算法(陶小波)
87
代码:
df.城市名称 # 写法 1
df["城市名称"] # 写法 2
功能:
取某一列的值
结果:
代码:
df["城市名称"][0] # 写法 1
df.城市名称[0] # 写法 2
df.at[0, "城市名称"] #写法 3。
功能:
取某一列其中某一行的值,例如取城市名称列的第 0行的值
结果:
代码:
df.max(axis=0)
df.min(axis=0)
df.mean(axis=0)
df.sum(axis=0)
df.count(axis=0)
功能:
max: 求所有列的最大值,axis=1:表示行。0表示列
min: 求所有列的最小值,axis=1:表示行。0表示列
mean: 求所有列的平均值,axis=1:表示行。0表示列
sum: 求所有列的和,axis=1:表示行。0表示列
count: 求所有列的数量,axis=1:表示行。0表示列
结果:略
浙江高中技术培优算法(陶小波)
88
代码:
df[df.城市名称 == "宁波"] # 写法 1
df[df["城市名称"] == "宁波"] # 写法 2
功能:
查询城市名称为宁波的所有行
结果:
代码:
df[(df.城市名称 == "宁波") & (df.区域 == "镇海")] # 写法 1
df[(df["城市名称"] == "宁波") & (df["区域"] == "镇海")] # 写法 2
df[df.人均 GDP > 50][df.城区人口 > 30] # 写法 3
功能:
查询城市名称为宁波,区域为镇海的所有行 &:表示且,pandas 中不能用 and
结果:
代码:
df[(df.城市名称 == "宁波") | (df.区域 == "镇海")] # 写法 1
df[(df["城市名称"] == "宁波") | (df["区域"] == "镇海")] # 写法 2
功能:
查询城市名称为宁波或区域为镇海的所有行 |:表示或,pandas 中不能用 or
结果:
代码:
pd.read_excel("1.xlsx")
功能:
导入 excel 文件,传入文件地址
结果:略
浙江高中技术培优算法(陶小波)
89
代码:
pd.read_csv("1.csv")
功能:
导入 csv 文件,传入文件地址
结果:略
代码:
ls=["张三","李四","王五"]
pd.Series(ls)
功能:
将列表转为 Series 对象
结果:
代码:
df.index
功能:
获取索引
结果:
代码:
df.columns
功能:
获取列名
结果:
浙江高中技术培优算法(陶小波)
90
代码:
df.head(1)
功能:
获取第一行,默认获取前 5行
结果:
代码:
df.tail(1)
功能:
获取最后一行,默认获取后 5行
结果:
代码:
df[0:2]
功能:
df 支持切片 当前为取前两行
结果:
代码:
df.values
功能:
获取所有的行值
结果:
浙江高中技术培优算法(陶小波)
91
代码:
df.rename(columns={"城市名称":"City"},inplace=True)
功能:
修改名称,将城市名称改为 City,inplace:True 影响原值,False:不影响原值
结果:
代码:
df.sort_values("人均 GDP", ascending=True, inplace=True) #根据列排序
df.sort_index(ascending=True) #根据索引值排序
功能:
排序,默认升序、不影响原值。第一个参数是需要排序的列名。
ascending=True:升序,false:降序
inplace:True 表示影响原值,False:不影响原值,就需要在前面套 df=
结果:
代码:
df=df.groupby("城市名称",as_index=True).sum()
功能:
分组操作。传入两个参数,参数 1是需要分组的列名,参数 2:是否修改索引值。
默认修改索引值(会将分组的列名变成新的索引值)分组操作,更新索引值以后,
不能再根据分组的列名取值,需要使用 df.index 取值
结果:
浙江高中技术培优算法(陶小波)
92
代码:
df.insert(1,'城市电瓶车保有量',[1,2,3,4])
功能:
插入一列,传入三个参数,影响原值,第一个参数是插入的位置(从 0开始数),
第二个参数是列名,第三个参数是列的值
结果:
代码:
temp={"城市名称": "温州","区域": "路桥", "人均 GDP": 12123,
"城区人口":80596,"人均汽车保有量(辆)": 0.123}
df=df._append(temp,ignore_index=True)
功能:
#添加一行,传入两个参数,第一个参数是行的值,第二个参数是是否重建索引
结果:
代码:
df2=pd.concat([df,df1],ignore_index=True)
功能:
合并 DataFrame,传入两个参数,
第一个参数是[待合并的 DataFrame1,待合并的 DataFrame2]
第二个参数是 ignore_index:True:重建索引,False:不重建索引
结果:
浙江高中技术培优算法(陶小波)
93
# 制图 1
# 以下所有方法都需要传入三个参数,第一个参数是:x轴的值,第二个参数:
y轴的值,第三个参数:label=表示线条的说明
plt.plot(df.城市名称, df.人均 GDP, label="人均 GDP")
# 折线图
plt.scatter(df.城市名称, df.人均 GDP, label="人均 GDP")
# 散点图
plt.bar(df.城市名称, df.人均 GDP, label="人均 GDP")
# 柱状图(竖)
plt.barh(df.城市名称, df.人均 GDP, label="人均 GDP")
# 柱状图(横)
plt.pie(df.城区人口,labels=df.城市名称)
#饼图
plt.legend() # 生成[可以没有]
plt.show() # 显示
折线图(plot)结果 散点图(scatter)结果
柱状图(bar)结果 横柱状图(barh)结果
浙江高中技术培优算法(陶小波)
94
饼图(pie)结果
#制图 2
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文乱码
plt.bar(df.城市名称,df.人均 GDP,label="人均 GDP")
#柱状图 第一个参数为 x轴数据,第二个参数为 y轴数据,第三个参数为图例
plt.xlabel("城市名称")
#x 轴图例名称
plt.ylabel("人均 GDP")
#y 轴图例名称
plt.title("人均 GDP 图标")
#柱状图标题
plt.legend()
#生成图例
plt.show()
#显示图例
制图 2