1 概述
1.1 背景介绍
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,由于其简单的语法、强大的工具库等优势被很多人青睐,应用于各个行业之中。
本案例将基于华为开发者空间进行。华为开发者空间集成了CodeArts IDE for Python,支持一站式、全流程、安全可信的软件开发生产线。
1.2 适用对象
- 个人开发者
- 高校学生
1.3 案例时间
本案例总时长预计40分钟。
1.4 案例流程
{{{width="30%" height="auto"}}}
说明:
① 用户开通华为开发者空间,进入云主机; ② 在CodeArts IDE 编写代码进行学习。
1.5 资源总览
本案例预计花费总计0元。
| 资源名称 | 规格 | 单价(元) | 时长(分钟) |
|---|---|---|---|
| 开发者空间 - 云主机 | 2vCPUs | 4GB X86 CodeArts IDE for Python | 免费 | 40 |
2 准备开发环境
2.1 配置云主机并进入
参考“10分钟玩转云主机” 案例介绍中“2.2 申请云主机”章节内容完成华为开发者空间云主机申请与配置,配置云主机建议:
- CPU架构:X86
- 规格:2 vCPUs 4GB
- 操作系统:Ubuntu
- 系统镜像:公共镜像Ubuntu 22.04 Server定制版

点击进入桌面进入云主机。

2.2 使用CodeArts IDE创建工程
参考“初识云主机:CodeArts IDE入门”案例介绍“3.1 新建工程”章节新建工程。
3 NumPy
NumPy(Numerical Python)是Python中用于科学计算的基础工具库,可以理解为处理数字的“超强工具箱”。 NumPy相当于Python中的“数学加速器”,特别适合处理大量数字计算。如果你的数据像一列火车(一维)、一张地图(二维)或一个魔方(三维),用NumPy会比普通列表更高效、更简洁。
3.1 安装numpy
在CodeArts IDE的终端输入如下命令安装numpy:
pip install numpy

3.2 数组创建
Step1:删除“main.py”中原有内容,输入下列代码。
import numpy as np
def main():
# 将列表转化成数组
arr = np.array([1, 2, 3])
# 全0数组,生成一个3行3列,int类型的全0数组
zeros = np.zeros((3, 3),np.int32)
# 全1数组,生成一个2行2列,int类型的全1数组
ones = np.ones((2, 2),np.int32)
# 创建一个2行3列的未初始化数组
empty = np.empty((2, 3))
# 生成固定步长的等差数列,起始值为0,终止值为10,步长为2
arange = np.arange(0, 10, 2)
# 在指定区间内生成均匀分布的等间距数值序列,在1-9之间,生成5个等间距的数值,包含1和9
linspace = np.linspace(1, 9, 5)
print(f"arr:{arr}")
print(f"zeros:\n{zeros}")
print(f"ones:\n{ones}")
print(f"empty:\n{empty}")
print(f"arange:{arange}")
print(f"linspace:{linspace}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

3.3 数组属性
Step1:删除“main.py”中原有内容,输入下列代码。
import numpy as np
def main():
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
# 数组的形状,(3, 3):3行3列
print(f"数组形状:{arr.shape}")
# 数组的维度:2
print(f"数组维度:{arr.ndim}")
# 数组的数据类型:int64
print(f"数组数据类型:{arr.dtype}")
# 数组元素总数:9
print(f"数组元素总数:{arr.size}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

3.4 索引与切片
在NumPy中,切片和索引是操作数组的基本方法,它们允许你选择数组的一部分或单个元素。索引是指通过位置选择数组中的单个元素。切片是指选择数组的一部分,索引是从0开始的。切片的基本语法是arr[start:stop:step],其中start是切片开始的位置(默认为0),stop是切片结束的位置(不包括此位置的元素),step是步长,默认为1。
Step1:删除“main.py”中原有内容,输入下列代码。
import numpy as np
def main():
arr = np.array([[1, 2, 3], [4, 5, 6]])
# arr[0, 1]:0表示行索引,1表示列索引,索引从0开始计数
# arr[0, 1]表示第1行第2列的元素,即是2
print(f"第1行第2列的元素:{arr[0, 1]}")
# 冒号‘:’表示所有行
# 1:3 表示列索引从1到2,也就是第2列到第三列
# arr[:, 1:3]表示保留所有行,截取第2列到第三列的数据
print(f"列切片:\n{arr[:, 1:3]}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

3.5 数组操作
Step1:删除“main.py”中原有内容,输入下列代码。
import numpy as np
def main():
# 将[0 1 2 3 4 5],调整为2行3列数组
arr = np.arange(6).reshape(2,3)
print(f"调整数组形状:\n{arr}")
# 转为一维数组
arr_flatten = arr.flatten()
print(f"转为一维数组:{arr_flatten}")
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 数组合并
c = np.concatenate((a, b))
print(f"数组合并:{c }")
# 数组分割:将数组c分割为3个子数组
arr_split = np.split(c,3)
print(arr_split)
print(f"数组分割:{arr_split}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

3.6 数学运算
Step1:删除“main.py”中原有内容,输入下列代码。
import numpy as np
def main():
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * 2) # [2 4 6]
# 1*4+2*5+3*6=32
print(np.dot(a, b))
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

4 Pandas
Pandas是Python中一个专门处理表格数据的工具库。它基于NumPy开发,更适合处理现实世界中各种不规整的结构化数据。
4.1 安装pandas
在CodeArts IDE的终端输入如下命令安装pandas:
pip install pandas

4.2 Series
Series是pandas中一维带标签数组,类似Excel的单列数据,但支持更灵活的索引和运算。适合存储同类型数据,每个数据点可关联业务含义的标签。Series的索引可以是任意可哈希类型,而非固定数字。NaN(Not a Number)表示缺失数据,Series 支持安全处理缺失值而不报错。
Step1:删除“main.py”中原有内容,输入下列代码。
import pandas as pd
#1.创建带业务含义的Series(含缺考)
math_scores = pd.Series(
data=[85, 92, None, 95, 88], # 王五缺考,None自动转NaN
index=["张三", "李四", "王五", "赵六", "周七"], # 学生姓名作为索引
name="数学成绩", # 列名,用于后续报表
dtype="Int64" #重点:Int64允许NaN,避免int类型报错
)
#2.基础属性查看(理解数据结构)
print("=== 数据概览 ===")
print("数据类型(允许缺失):", math_scores.dtype) # Int64(非float)
print("有效成绩数量:", math_scores.count()) # 4(王五缺考不计入)
print("成绩范围:", math_scores.min(), "-", math_scores.max()) # 85-95(忽略NaN)
#3.索引对比:标签vs位置
print("\n=== 成绩查询(标签更安全) ===")
print("李四的成绩(标签):", math_scores["李四"]) # 92(按索引获取)
print("李四的成绩(位置):", math_scores.iloc[1]) # 92(按位置获取,慎用,当前正确,但插入新学生会错位)
#4.补考处理:索引对齐
makeup = pd.Series({"王五": 80}, name="数学成绩") # 仅王五补考,标签匹配
final = math_scores.combine_first(makeup) # 自动按标签填充,其他不变
print("\n=== 最终成绩(含补考) ===")
print(final) # 输出带姓名索引的Series,王五成绩修复
#5.向量化分析
print("\n=== 教学分析 ===")
print("平均分:", final.mean()) # 88.0(自动忽略原NaN)
print("进步最大:", (final - math_scores).idxmax()) # 王五(从NaN→80,进步最大)
Step3:点击右上角“运行”按钮,“控制台”可以看到打印结果:

4.3 DataFrame
DataFrame 是二维表格结构,每列可以是不同数据类型。用于存储异构数据,支持行列双向操作,类似Excel工作表。列是DataFrame的核心,可自由添加、删除、修改。索引方式分为loc和iloc两种方式,loc基于标签,iloc基于位置。
Step1:删除“main.py”中原有内容,输入下列代码。
import pandas as pd
#1.创建初始DataFrame(含缺考)
student_data = {
"姓名": ["张三", "李四", "王五", "赵六"],
"性别": ["男", "女", "男", "男"],
"数学": [85, 92, 80, 95],
"英语": [88, 79, 91, 85],
"体育": [90, 85, None, 95] # 王五体育缺考(NaN)
}
df = pd.DataFrame(student_data)
#2.数据洞察(表格结构展示)
print("=== 原始成绩单 ===")
print(df.head()) # 前4行,自动生成整数索引
print("\n各列数据类型:\n", df.dtypes) # 体育列为float64(含NaN)
#3.索引操作(标签筛选 vs 位置切片)
print("\n=== 女生数学成绩分析 ===")
female = df.loc[ #重点:loc用标签和条件
df["性别"] == "女", # 行:性别为女
["姓名", "数学", "英语"] # 列:指定科目
]
print(female) # 李四:数学92,英语79
#4.列操作(增删改操作)
df["总分"] = df[["数学", "英语", "体育"]].sum(axis=1, min_count=2) # 至少2科有效
df["排名"] = df["总分"].rank(ascending=False) # 降序排名(总分高排前)
df.drop(columns=["性别"], inplace=True) # 删除不再需要的列
#5.数据合并(按姓名对齐加分项)
extra = pd.DataFrame({
"姓名": ["王五", "张三"], # 顺序不同,但标签匹配
"加分": [2, 3]
})
df = df.merge(extra, on="姓名", how="left").fillna(0) # 左连接,赵六无加分补0
df["最终得分"] = df["总分"] + df["加分"]
#6.最终输出(带业务含义的报表)
print("\n=== 奖学金评定表 ===")
print(df[["姓名", "数学", "英语", "体育", "最终得分", "排名"]].round(1))
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

5 Matplotlib
Matplotlib是Python中一个数据画板,专门用来把枯燥的数字变成直观的图表。
5.1 安装Matplotlib
在CodeArts IDE的终端输入如下命令安装Matplotlib:
pip install matplotlib

5.2 绘制折线图
使用matplotlib绘制折线图并保存为图片。
Step1:删除“main.py”中原有内容,输入下列代码。
# 导入matplotlib
import matplotlib.pyplot as plt
def main():
# 生成数据 (x: 0-3,y: 平方数)
x = [0, 1, 2, 3]
y = [0, 1, 4, 9]
# 调用plot方法绘制
plt.plot(x, y)
# 调用savefig方法保存图表为图片格式
plt.savefig('plot.png')
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“资源管理器”区域可以看到绘制的图片:

5.3 绘制柱状图
使用matplotlib绘制柱状图并保存为图片。
Step1:删除“main.py”中原有内容,输入下列代码。
import matplotlib.pyplot as plt
def main():
# 1. 准备数据
categories = ['Apple', 'Banana', 'Orange', 'Grape', 'Peach']
values = [23, 45, 32, 28, 39]
# 2. 创建柱状图
plt.bar(categories, # X轴标签
values, # 柱体高度
color='skyblue', # 柱体颜色
edgecolor='black', # 边框颜色
width=0.6) # 柱体宽度
# 3. 添加图表装饰
plt.xlabel('Fruits', fontsize=12) # X轴标签
plt.ylabel('Sales (units)', fontsize=12) # Y轴标签
plt.title('Fruit Sales Report', fontsize=14, pad=20) # 主标题
plt.xticks(rotation=45) # X标签旋转角度
# 4. 显示图表
plt.tight_layout() # 自动调整布局
plt.savefig('bar.png')
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“资源管理器”区域可以看到绘制的图片:

5.4 绘制饼状图
使用matplotlib绘制饼状图并保存为图片。
Step1:删除“main.py”中原有内容,输入下列代码。
import matplotlib.pyplot as plt
def main():
# 1. 准备数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10] # 各部分占比(总和无需100,自动计算比例)
explode = (0, 0.1, 0, 0) # 突出显示第二个部分(B)
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
# 2. 绘制饼图
plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
autopct='%1.1f%%', # 显示百分比(保留一位小数)
shadow=True, # 添加阴影
startangle=90) # 起始角度(逆时针)
# 3. 添加标题并显示
plt.title('Simple Pie Chart Example')
plt.axis('equal') # 确保饼图显示为圆形(非椭圆)
plt.savefig('pie.png')
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“资源管理器”区域可以看到绘制的图片:

6 Requests
Requests是一个用于发送HTTP请求的Python库。能够让开发者用尽可能少的代码完成复杂的网络请求任务。常见使用场景:获取网页内容、调用API接口、提交表单数据等。
6.1 安装Requests
在CodeArts IDE的终端输入如下命令安装Requests:
pip install requests

6.2 GET请求
Step1:删除“main.py”中原有内容,输入下列代码。
import requests # 导入requests
def main():
url = "https://b1f058974c4a4fed85b34845a590a149.apig.cn-north-4.huaweicloudapis.com/getAppVersionInfo"
# get请求
response = requests.get(url)
# 状态码
print(f"状态码: {response.status_code}")
# 返回json数据
print(f"JSON解析: {response.json()}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

6.3 POST请求
Step1:删除“main.py”中原有内容,输入下列代码。
import requests # 导入requests
def main():
url = "https://b1f058974c4a4fed85b34845a590a149.apig.cn-north-4.huaweicloudapis.com/postManager"
# 请求参数
params = {"id": 1000}
# 发送post请求
response = requests.post(url, data=params)
# 打印状态码
print(f"状态码: {response.status_code}")
# 打印返回json数据
print(f"返回的JSON数据: {response.json()}")
if __name__ == "__main__":
main()
Step2:点击右上角“运行”按钮,“控制台”可以看到打印结果:

6万+

被折叠的 条评论
为什么被折叠?



