unique_rarity = list(set(data['C'].tolist())) data_rarity = data.groupby('C').apply(lambda x: x['E'].tolist()).to_dict() plt.boxplot(data_rarity, labels=unique_rarity)优化这段代码
时间: 2023-11-28 11:51:40 浏览: 51
这段代码可以优化如下:
1. 使用集合推导式代替列表转集合的操作,可以更简洁地获得唯一值列表。
2. 使用字典推导式代替分组操作,可以更高效地生成字典数据。
3. 在绘制箱线图时,可以使用更直接的方法指定横轴和纵轴数据。
综上,优化后的代码如下:
```
unique_rarity = {rarity for rarity in data['C']}
data_rarity = {rarity: data.loc[data['C'] == rarity, 'E'].tolist() for rarity in unique_rarity}
plt.boxplot(data_rarity.values(), labels=data_rarity.keys())
```
相关问题
unique_rarity = list(set(rarity)) data_rarity = [] for r in unique_rarity: data_rarity = [x[2] for x in data if x[4] == r]优化这段代码
可以使用列表推导式和字典来优化这段代码```
data_rarity =r: [x[] for x in data if x[4] == r] for r in set(rarity)}
```
这样就一行代码快速地创建字典,其中键rarity` 列表的唯一元素,对应的值是 `data` 列表中与该元素匹配的所有 `x[2]`。这样做的好处是避免了多次遍历 `data` 列表,提高了代码效率。
data = pd.read_excel('newskin.xlsx',header=None,names=['A','B','C','D','E']) # 将价格数据和稀有度数据分别存储到price和rarity列表中 price = data['E'].tolist() rarity = data['C'].tolist() unique_rarity = list(set(rarity)) data_rarity = [] for r in unique_rarity: data_rarity = [x[2] for x in data if x[4] == r]优化这段代码
可以使用Pandas的groupby方法和apply方法来优化这段代码:
```
import pandas as pd
data = pd.read_excel('newskin.xlsx', header=None, names=['A', 'B', 'C', 'D', 'E'])
unique_rarity = list(set(data['C'].tolist()))
data_rarity = data.groupby('C').apply(lambda x: x['E'].tolist()).to_dict()
```
这样可以将稀有度作为索引,并将每个稀有度对应的价格数据存储为一个列表,存储在字典中。这样可以更快速地获取每个稀有度对应的价格数据。