优化代码 data = pd.concat([dates_year, dates_ratings], axis=1) data.columns = ['year', 'rating'] data = data.groupby('year').mean().reset_index() data['rating'] = data['rating'].round(1)
时间: 2023-08-08 18:13:21 浏览: 105
可以将这几行代码优化成一行:
```
data = pd.concat([dates_year, dates_ratings], axis=1).groupby('year').mean().round(1).reset_index().rename(columns={'rating': 'mean_rating'})
```
这样就不需要多次对 `data` 进行操作,而是一次性地使用 `groupby` 和 `mean` 函数完成了对年份的分组并计算了平均评分,然后使用 `round` 函数将结果保留一位小数,最后使用 `reset_index` 函数重置索引并将列名 `rating` 改为 `mean_rating`。
相关问题
data = pd.concat([dates_year, dates_ratings], axis=1) data.columns = ['year', 'rating'] data = data.groupby('year').mean().reset_index() 将平均分只显示小数点后面一位
可以使用 Pandas 中的 `round()` 函数来实现:
```
data = pd.concat([dates_year, dates_ratings], axis=1)
data.columns = ['year', 'rating']
data = data.groupby('year').mean().reset_index()
data['rating'] = data['rating'].round(1)
```
这样就可以将 `rating` 列中的所有值保留小数点后面一位。
import pandas as pd from pyecharts.render import NotebookRender from pyecharts.charts import Line from pyecharts import options as opts # 读取数据 dates_year = df['上映年份'].str[:4] dates_ratings = df['电影评分'] # 统计每年的平均评分 data = pd.concat([dates_year, dates_ratings], axis=1) data.columns = ['year', 'rating'] data = data.groupby('year').mean().reset_index() # 绘制折线图 line = ( Line() .add_xaxis(data['year'].tolist()) .add_yaxis("电影评分", data['rating'].tolist()) .set_global_opts( title_opts=opts.TitleOpts(title="电影评分趋势图"), tooltip_opts=opts.TooltipOpts(trigger="axis"), xaxis_opts=opts.AxisOpts(type_="category"), yaxis_opts=opts.AxisOpts(type_="value"), ) ) bar.render_notebook() 优化代码
可以将代码进行如下优化:
1. 将数据读取和统计放在一起,避免不必要的变量声明。
2. 直接使用DataFrame的plot方法绘制折线图,无需使用pyecharts库。
3. 由于数据已经按年份进行了分组统计,因此不需要再次使用pyecharts库中的Line类进行绘图。
优化后的代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据并按年份统计平均评分
data = df.groupby(df['上映年份'].str[:4])['电影评分'].mean()
# 绘制折线图
data.plot(title='电影评分趋势图', xlabel='年份', ylabel='平均评分')
plt.show()
```
以上代码使用matplotlib库绘制折线图,并直接使用DataFrame的plot方法绘图,代码更为简洁。
阅读全文