import pandas as pd import numpy as np import matplotlib.pyplot as plt table = pd.read_excel("order_quchong.xlsx") row = table.columns.tolist() for i in range(len(row)): if row[i] == 'item_price': oneindex1 = i elif row[i] == 'ord_qty': oneindex2 = i price = table.iloc[:,oneindex1].tolist() ordqty = table.iloc[:,oneindex2].tolist() Price = sorted(set(price)) OrdNumeber = [] for i in range(len(Price)): sum = 0 for j in range(len(ordqty)): if price[j] == Price[i]: sum += ordqty[j] OrdNumeber.append(int(sum)) x = np.arange(1, max(Price) + 0.01, 0.001) y = np.interp(x, Price, OrdNumeber) plt.plot(x, y) plt.show()优化代码
时间: 2023-06-10 22:05:46 浏览: 165
可以使用pandas的groupby方法和agg方法对表格数据进行聚合操作,用于计算每个item_price对应的ord_qty总和,而无需通过for循环遍历每个item_price。代码如下:
```
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
table = pd.read_excel("order_quchong.xlsx")
# 使用groupby方法对item_price分组,并使用agg方法计算每个分组的ord_qty总和
grouped_table = table.groupby('item_price')['ord_qty'].agg('sum')
# 获取item_price和ord_qty数据
Price = grouped_table.index.tolist()
OrdNumeber = grouped_table.tolist()
# 使用numpy的arange方法生成数据范围
x = np.arange(1, max(Price), 0.01)
# 使用numpy的interp方法对item_price和ord_qty进行插值
y = np.interp(x, Price, OrdNumeber)
# 绘制图像
plt.plot(x, y)
plt.show()
```
阅读全文