index_yearly_return=index_yearly.pct_change().round(4), how to format the output in %
时间: 2024-03-20 21:41:52 浏览: 15
To format the output as a percentage, you can multiply the result by 100 and use the `.applymap()` function to apply the formatting to each cell. Here's an example:
```
index_yearly_return = index_yearly.pct_change().round(4)
index_yearly_return = index_yearly_return * 100 # Multiply by 100 to convert to percentage
index_yearly_return = index_yearly_return.applymap('{:.2f}%'.format) # Apply formatting to each cell
```
In this example, the `applymap()` function applies the `'{:.2f}%'.format` formatting string to each cell in the `index_yearly_return` DataFrame, which formats the number with 2 decimal places and adds a "%" symbol at the end.
相关问题
model_list <- prophet(WHO_data_list, growth = "logistic", changepoints = None, n_changepoints = 25, changepoint_range = 0.8, yearly_seasonality = T, weekly_seasonality = F, daily_seasonality = F, holidays= None, seasonality_mode = 'multiplicative', seasonality_prior_scale = 10.0, holidays_prior_scale = 10.0, changepoint_prior_scale = 0.05, mcmc_samples = 0, interval_width = 0.95, uncertainty_samples = 1000, stan_backend = None)
这是一个使用 Prophet 模型对 WHO_data_list 进行时间序列预测的代码。在该模型中,使用了逻辑增长模型(growth = "logistic"),没有设置特殊的变化点(changepoints = None),设置了25个变化点(n_changepoints = 25),变化点范围为80%(changepoint_range = 0.8),启用了年度季节性(yearly_seasonality = T),未启用周季节性和日季节性(weekly_seasonality = F, daily_seasonality = F),没有添加节假日信息(holidays= None),季节性模式为乘法模式(seasonality_mode = 'multiplicative'),季节性先验比例为10.0(seasonality_prior_scale = 10.0),节假日先验比例为10.0(holidays_prior_scale = 10.0),变化点先验比例为0.05(changepoint_prior_scale = 0.05),采样次数为0(mcmc_samples = 0),置信区间为95%(interval_width = 0.95),不确定性采样次数为1000(uncertainty_samples = 1000),后端使用默认值(stan_backend = None)。
SELECT pl.id AS product_line_id, pl.name AS product_line_name, ROUND(SUM(s.price), 2) AS daily_sales, ROUND(SUM(s.price) OVER (PARTITION BY pl.id, DATE_TRUNC('week', o.create_time)), 2) AS weekly_sales, ROUND(SUM(s.price) OVER (PARTITION BY pl.id, DATE_TRUNC('month', o.create_time)), 2) AS monthly_sales, ROUND(SUM(s.price) OVER (PARTITION BY pl.id, DATE_TRUNC('year', o.create_time)), 2) AS yearly_sales FROM ls_order_sku AS od JOIN ls_order AS o ON o.id = od.order_id JOIN ls_sku AS s ON s.id = od.sku_id JOIN ls_spu AS sp ON sp.id = s.spu_id JOIN ls_product_line AS pl ON pl.id = s.product_line_id GROUP BY pl.id, pl.name, DATE_TRUNC('day', o.create_time) ORDER BY pl.id, DATE_TRUNC('day', o.create_time) 这个sql 报 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY pl.id, DATE_TRUNC('week', o.create_time)), 2) AS weekly_sales, ' at line 5 这个错 怎么解决
根据报错信息,提示语法错误在第5行,即 `SUM(s.price) OVER (PARTITION BY pl.id, DATE_TRUNC('week', o.create_time))` 这一行。这是因为在 MySQL 中,没有 `OVER` 关键字来支持窗口函数,而 `OVER` 是 PostgreSQL 中的语法。因此,需要将 `SUM(s.price) OVER` 改为 `SUM(s.price)`,并将 `GROUP BY` 语句中的分组条件改为 `pl.id, pl.name, DATE(o.create_time)`,即:
```sql
SELECT
pl.id AS product_line_id,
pl.name AS product_line_name,
ROUND(SUM(s.price), 2) AS daily_sales,
ROUND(SUM(CASE WHEN DATE_TRUNC('week', o.create_time) = DATE_TRUNC('week', CURDATE()) THEN s.price ELSE 0 END), 2) AS weekly_sales,
ROUND(SUM(CASE WHEN DATE_TRUNC('month', o.create_time) = DATE_TRUNC('month', CURDATE()) THEN s.price ELSE 0 END), 2) AS monthly_sales,
ROUND(SUM(CASE WHEN DATE_TRUNC('year', o.create_time) = DATE_TRUNC('year', CURDATE()) THEN s.price ELSE 0 END), 2) AS yearly_sales
FROM
ls_order_sku AS od
JOIN ls_order AS o ON o.id = od.order_id
JOIN ls_sku AS s ON s.id = od.sku_id
JOIN ls_spu AS sp ON sp.id = s.spu_id
JOIN ls_product_line AS pl ON pl.id = s.product_line_id
GROUP BY
pl.id,
pl.name,
DATE(o.create_time)
ORDER BY
pl.id,
DATE(o.create_time)
```
另外,因为 MySQL 不支持 `DATE_TRUNC` 函数,所以需要使用 `DATE` 函数将日期截取到天、月、年。上面的 SQL 语句中,我使用了类似 `DATE_TRUNC('week', o.create_time) = DATE_TRUNC('week', CURDATE())` 这样的语法来判断当前记录的日期是否属于本周、本月、本年。