我发现很多人都不太清楚这个csv是怎么弄的,其实通俗的讲就是,你不能用excel形式的改后缀名,你必须通过文本文档去改后缀名,并且必须用或者说默认有题头,行与行之间用换行符,但是数据之间得有逗号(英文版)隔开,不会的话,拿这里我写好的cv到文本文档里面保存改后缀即可,别忘了文件的位置要和你的py文件平齐。
1.根据示例创建ndarray,并按要求完成操作:
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
(1)按要求进行切片操作 :
1)2,3,5,6
2)4,5
3)7
4)1,4,7
源代码:
import numpy as np
ndarray = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
slice1=ndarray[0:1,1:3]
slice2=ndarray[1,1:3]
slice3=ndarray[2,0]
slice4=ndarray[0:3,0]
print(slice1)
print(slice2)
print(slice3)
print(slice4)
列出测试数据和实验结果截图:
(2)将数组中的每个元素乘2后,按行和按列方式分别计算其最大值,打印输出结果
源代码:
import numpy as np
ndarray = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
nd_times_2=ndarray*2
row=np.max(nd_times_2,axis=1)
column=np.max(nd_times_2,axis=0)
print(f'每行的最大值:{row}')
print(f'每列的最大值:{column}')
列出测试数据和实验结果截图:
2、利用Matplotlib库,绘制出抛物线曲线图,线为红色圆型点线图,横坐标取值范围:[-10, 10],绘制点数50,加上坐标轴说明(x轴:x tick,y轴:voltage),图标题为抛物线示意图。
源代码:
import numpy as np
import matplotlib.pyplot as plt
x_line=np.linspace(-10,10,50)
y_col=x_line**2
plt.plot(x_line,y_col,'ro-')
plt.xlabel('x tick')
plt.ylabel('voltage')
plt.title('y=x^2')
plt.grid(True)
plt.show()
列出测试数据和实验结果截图:
3、下图为商品信息表,数据暂存于CSV文件(goods.csv),请根据下述要求完成题目。
商品名称 商品规格 商品价格
香皂 盒 25
洗发水 个 39
毛巾 条 15
(1)请从文件goods.csv中读取数据,并打印输出结果。
(2)请按照商品的价格从高到低对商品进行排序,并输出这组商品的最高价格,最低价格和平均价格。
输出格式如下:商品的最高价格:39,最低价格:15,平均价格:26.33(平均价格保留两位小数)。
(3)展示图中的数据,让用户能够直观的看出商品价格分布情况。
源代码:
import csv
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定中文字体
# (1) 从文件goods.csv中读取数据,并打印输出结果
file_path = 'goods.csv'
data = []
with open(file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # 读取文件头部
print("商品信息表:")
for row in reader:
print(row)
data.append(row)
# (2) 按照商品价格从高到低对商品进行排序
sorted_data = sorted(data, key=lambda x: int(x[2]), reverse=True)
# 输出排序后的结果
print("\n按商品价格排序后的商品信息表:")
for item in sorted_data:
print(item)
# 计算最高价格、最低价格和平均价格
prices = [int(item[2]) for item in sorted_data]
max_price = max(prices)
min_price = min(prices)
avg_price = sum(prices) / len(prices) if len(prices) > 0 else 0
# 输出价格统计信息
print(f"\n商品的最高价格:{max_price},最低价格:{min_price},平均价格:{avg_price:.2f}")
# (3) 绘制商品价格分布图表
plt.figure(figsize=(8, 5))
product_names = [item[0] for item in sorted_data]
product_prices = [int(item[2]) for item in sorted_data]
plt.bar(product_names, product_prices, color='skyblue')
plt.xlabel('商品名称')
plt.ylabel('商品价格')
plt.title('商品价格分布情况')
plt.tight_layout()
# 显示图表
plt.show()
列出测试数据和实验结果截图:
1.切片操作 slice1 = arr[0:2, 1:3]:
arr[0:2] 表示选择数组 arr 中的第 0 行到第 1 行(不包括第 2 行)。
arr[0:2, 1:3] 表示在这些行中,选择第 1 列到第 2 列(不包括第 3 列)的元素。因此,slice1 包含的元素是原数组中的 (0,1), (0,2), (1,1), (1,2),即 2, 3, 5, 6。
2.图标的相关
plt.plot(x_values, y_values, 'ro-'):
plt.plot:该函数用于创建图表。它接受 x 和 y 坐标的数据点以及一个可选的格式字符串,用于指定绘图的样式。
x_values, y_values:这些是 x 和 y 坐标的数据点,分别是 x 坐标和对应的 y 坐标。
'ro-':这是一个格式字符串,用于指定绘图的样式。
它由三个部分组成:
'r':表示红色。
'o':表示每个数据点使用圆形标记(圆点)。
'-':表示连接数据点的是实线。
因此,'ro-' 实际上表示一个带有圆形标记的红色线。
3.显示网格线:plt.grid(True)
4.显示图形:plt.show()
5.生成横坐标数据:np.linspace
6.matplotlib.pyplot不直接支持中文,会出现乱码,所以这么解决:
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
7.plt.figure(figsize=(8, 5)):创建一个新的图形对象,并设置了图形的大小为(8, 5)英寸
8.plt.tight_layout() 是 Matplotlib 库中的一个函数,它用于自动调整子图参数,以便适应当前图形区域,并确保子图之间的间距和布局合适。当你在绘图时,特别是在有多个子图的情况下,使用这个函数可以避免一些常见的布局问题,使得图形更为美观。