我的数据集如下:
Town week price sales
A 1 1.1 101
A 2 1.2 303
A 3 1.3 234
B 1 1.2 987
B 2 1.5 213
B 3 3.9 423
C 1 2.4 129
C 2 1.3 238
C 3 1.3 132
现在,我需要用3条线制作一个数字(每条线代表一个不同的镇),在此绘制每周的销售量和价格。当我了解城镇时,我知道该怎么做,但是我不知道每个城镇该怎么做。
data = pd.read_excel("data.xlsx")
dfEuroAvg = data[data['Product'] == "Euro"].groupby('Week').mean()
t = np.arange(1, 50, 1)
y3 = dfEuroAvg['Sales']
y4 = dfEuroAvg['Price']
fig, ax2 = plt.subplots()
color = 'tab:green'
ax2.set_xlabel('Week')
ax2.set_ylabel('Sales', color = color)
ax2.plot(t, y3, color = color)
ax2.tick_params(axis = 'y', labelcolor = color)
ax3 = ax2.twinx()
color = 'tab:orange'
ax3.set_ylabel('Price', color=color)
ax3.plot(t, y4, color=color)
ax3.tick_params(axis='y', labelcolor=color)
ax2.set_title("product = Euro, Sales vs. Price")
编辑:在X轴上是星期,在Y轴上是价格和销售额。
答案 0 :(得分:0)
这是使用groupby
形成基于Town
的组,然后使用辅助y轴绘制price
和sales
的一种方法
fig, ax = plt.subplots(figsize=(8, 6))
df_group = data.groupby('Town')['week','price','sales']
ylabels = ['price', 'sales']
colors =['r', 'g', 'b']
for i, key in enumerate(df_group.groups.keys()):
df_group.get_group(key).plot('week', 'price', color=colors[i], ax=ax, label=key)
df_group.get_group(key).plot('week', 'sales', color=colors[i], linestyle='--', secondary_y=True, ax=ax)
handles,labels = ax.get_legend_handles_labels()
legends = ax.legend()
legends.remove()
plt.legend(handles, labels)
ax1.set_ylabel('Price')
ax2.set_ylabel('Sales')
答案 1 :(得分:0)
您将必须通过过滤数据框来分别获取每个城镇的数据。
# df = your dataframe with all the data
towns = ['A', 'B', 'C']
for town in towns:
town_df = df[df['town'] == town]
plt.plot(town_df['week'], town_df['price'], label=town)
plt.legend()
plt.xlabel('Week')
plt.ylabel('Price')
plt.title('Price Graph')
plt.show()
输出:
我已经完成了价格图的制作,您可以使用相同的步骤类似地创建一个以Sales为y轴的图
答案 2 :(得分:0)
您可以直接使用大熊猫绘制透视数据。
1
完整示例:
htmlReporter = new ExtentHtmlReporter($"C:\\Test-Results\\" + dateStamp + "\\" + TestClassName + " " + timeStamp + ".html");
extent = new ExtentReports();
extent.AttachReporter(htmlReporter);
extent.AddSystemInfo("Host Name", "Extent Framework");
extent.AddSystemInfo("Environment", "Local Machine");
extent.AddSystemInfo("User Name", "MyName");
htmlReporter.LoadConfig(CurrentDirectory + "\\extent-config.xml");