我在許多商店有以下 df,每周花費: shop1 shop2 shop3 shop4 shop5 shop6 shop7 \date_week 2 4328.85 5058.17 3028.68 2513.28 4204.10 1898.26 2209.75 3 5472.00 5085.59 3874.51 1951.60 2984.71 1416.40 1199.42 4 4665.53 4264.05 2781.70 2958.25 4593.46 2365.88 2079.73 5 5769.36 3460.79 3072.47 1866.19 3803.12 2166.84 1716.71 6 6267.00 4033.58 4053.70 2215.04 3991.31 2382.02 1974.92 7 5436.83 4402.83 3225.98 1761.87 4202.22 2430.71 3091.33 8 4850.43 4900.68 3176.00 3280.95 3483.53 4115.09 2594.01 9 6782.88 3800.03 3865.65 2221.43 4116.28 2638.28 2321.55 10 6248.18 4096.60 5186.52 3224.96 3614.24 2541.00 2708.36 11 4505.18 2889.33 2937.74 2418.34 5565.57 1570.55 1371.54 12 3115.26 1216.82 1759.49 2559.81 1403.61 1550.77 478.34 13 4561.82 827.16 4661.51 3197.90 1515.63 1688.57 247.25 shop8 shop9 date_week 2 3578.81 3134.39 3 4625.10 2676.20 4 3417.16 3870.00 5 3980.78 3439.60 6 3899.42 4192.41 7 4190.60 3989.00 8 4786.40 3484.51 9 6433.02 3474.66 10 4414.19 3809.20 11 3590.10 3414.50 12 4297.57 2094.00 13 3963.27 871.25 如果我將這些繪制成線圖或“意大利面條圖”,效果很好。目標是查看過去三個月內 9 家商店的每周銷售額趨勢。但看起來有點亂:newgraph.plot()我查看了類似的問題,例如這個使用的問題,df.interpolate()但看起來我需要首先在其中缺少值。這個答案似乎需要一個時間序列。有沒有另一種方法來平滑線條?如果這些值不再完全準確并不重要,一些插值就可以了。我感興趣的只是過去幾周的趨勢。我也嘗試過logy=True讓plot()線條平靜一點的方法,但沒有幫助。
1 回答

阿晨1998
TA貢獻2037條經驗 獲得超6個贊
您可以通過繪制過去幾周的回歸線來顯示趨勢,可能與實際數據分開,因為該圖已經如此擁擠。我會使用 seaborn,因為它具有方便的regplot()功能:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
df.plot(figsize=[12, 10], style='--')
plt.xlim(2, 18)
last4 = df[len(df)-4:]
plt.gca().set_prop_cycle(None)
for shop in df.columns:
sns.regplot(last4.index + 4, shop, data=last4, ci=None, scatter=False)
plt.ylabel(None)
plt.xticks(list(df.index)+[14, 17], labels=list(df.index)+[10, 13]);
添加回答
舉報
0/150
提交
取消